Security 시작하기

edit

클러스터를 보호하려면 클러스터의 모든 노드에 X-Pack을 설치해야 합니다. 기본 인증이 원래 활성화되어 있습니다. 클러스터와 통신하려면 사용자 이름 및 비밀번호를 지정해야 합니다. 익명 액세스를 활성화하지 않는 한 사용자 이름 및 비밀번호를 포함하지 않는 요청은 모두 거부됩니다.

X-Pack security에서는 elastic 슈퍼유저를 기본적으로 제공하며, 이를 사용하여 설정을 시작할 수 있습니다. 이 elastic 사용자는 모든 색인 및 데이터를 포함하여 클러스터에 대한 전체 액세스 권한을 가지므로 반드시 기본 비밀번호를 변경하고 elastic 사용자 자격 증명을 제대로 보호해야 합니다.

X-Pack security를 시작하려면 다음을 수행합니다.

  1. X-Pack을 설치하고 Elasticsearch 및 Kibana를 시작합니다.
  2. 기본 제공된 kibana, logstash_system, elastic 사용자의 비밀번호를 변경합니다.

    curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/elastic/_password' -H "Content-Type: application/json" -d '{
      "password" : "elasticpassword"
    }'
    
    curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/kibana/_password' -H "Content-Type: application/json" -d '{
      "password" : "kibanapassword"
    }'
    
    curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/logstash_system/_password' -H "Content-Type: application/json" -d '{
      "password" : "logstashpassword"
    }'

    elastic 사용자의 기본 비밀번호는 `changeme`입니다.

  3. Elasticsearch 및 Kibana에 대한 액세스를 제어하도록 역할 및 사용자를 설정합니다. 예를 들어 _John Doe_에게 패턴 events*`와 일치하는 모든 색인에 대한 전체 액세스 권한을 부여하고 Kibana에서 이 색인에 대한 시각화 및 대시보드를 생성할 수 있게 하려는 경우 `events_admin 역할을 생성한 다음 새 johndoe 사용자에게 그 역할을 지정하면 됩니다.

    curl -XPOST -u elastic 'localhost:9200/_xpack/security/role/events_admin' -H "Content-Type: application/json" -d '{
      "indices" : [
        {
          "names" : [ "events*" ],
          "privileges" : [ "all" ]
        },
        {
          "names" : [ ".kibana*" ],
          "privileges" : [ "manage", "read", "index" ]
        }
      ]
    }'
    
    curl -XPOST -u elastic 'localhost:9200/_xpack/security/user/johndoe' -H "Content-Type: application/json" -d '{
      "password" : "userpassword",
      "full_name" : "John Doe",
      "email" : "john.doe@anony.mous",
      "roles" : [ "events_admin" ]
    }'
  1. 메시지가 전송 중에 변조되거나 손상되지 않았음을 확인하기 위해 메시지 인증을 활성화합니다.

    1. ES_HOME`에서 `syskeygen 툴을 아무런 옵션 없이 실행합니다.

      bin/x-pack/syskeygen

      그러면 `CONFIG_DIR/x-pack/system_key`에 시스템 키 파일이 생성됩니다.

    2. 생성된 시스템 키를 클러스터의 나머지 노드에 복사합니다.

      시스템 키는 대칭 키이므로 클러스터의 모든 노드에 동일한 키가 있어야 합니다.

  1. 어떻게 Elasticsearch 클러스터와의 상호 작용이 시도되고 성공하는지 추적하기 위해 감사를 활성화합니다.

    1. 클러스터의 모든 노드에서 `elasticsearch.yml`에 다음 설정을 추가합니다.

      xpack.security.audit.enabled: true
    2. Elasticsearch를 다시 시작합니다.

    기본적으로 이벤트는 `ES_HOME/logs`에 있는 전용 파일인 `elasticsearch-access.log`에 로깅됩니다. 더 편리한 분석을 위해 Elasticsearch 색인에 이벤트를 저장하고 어떤 이벤트를 로그할지 제어할 수도 있습니다. 자세한 내용은 감사 구성을 참조하십시오.

이러한 기본적인 보안 장치를 마련한 다음 클러스터에서 SSL/TLS 암호화를 사용하도록 구성하여 노드와의 양방향 통신을 보호하는 것이 좋습니다. 암호화가 활성화되지 않은 노드는 비밀번호를 일반 텍스트의 형태로 보냅니다!

보안 요구 사항에 따라 다음을 수행할 수도 있습니다.

  • LDAP 또는 Active Directory와 통합하거나 인증에 인증서를 필요로 합니다.
  • IP 필터링을 사용하여 특정 IP 주소 또는 주소 범위에서 보내는 요청을 허용하거나 거부합니다.