검색엔진/ElasticSearch

검색엔진 클러스터 구축 - 4. X-pack security

CodeDesigner 2022. 11. 3. 16:43

X-Pack Security의 주 목적

  • 사용자 인증
  • 권한 부여 및 역할 기반 액세스 제어
  • 노드/클라이언트 인증 및 채널 암호화
  • Auditing

클러스터 내에서 통신 채널 보호 - SSL/TLS 구성 지원

  • 유선을 통해 전송되는 데이터 암호화
  • 인증서 기반 노드 인증 - 권한이 없는 노드/클라이언트가 클러스터와 연결을 설정하는 것을 방지

SSL/TLS를 사용하여 Elasticsearch 클러스터에서 들어오고 나가는 트래픽을 암호화하고, 노드가 SSL 인증서를 사용하여 클러스터에 가입할 때 인증하도록 요구하고, 원격 공격자가 Elasticsearch에 명령을 실행하는 것을 더 어렵게 만든다.

elasticsearch.yml 파일 내에서 IP 필터링 사용 가능

xapck.security.transport.filter.allow: ["192.168.0.1", "~~"]
xapck.security.transport.filter.deny: _all  /   '*.google.com'
  • hostname (ex. localhost) 또는 도메인 또는 DNS lookups 도 가능하다.

elasticsearch.yml 주요 설정 key

minimal security를 활성화하지 않으면 다음과 같은 X-pack 기능들을 사용할 수 없다.

  • User roles management through Kibana
  • Machine Learning
  • Endpoint Protection
  • and more

x-pack security 관련 설정

  • xpack.security.enable
    -> minimal security
  • xpack.security.transport.ssl
    -> 클러스터의 서버 간 TLS 암호화 설정
  • xpack.security.http.ssl
    -> https 사용하여 보안 연결 활성화

중요한 점은 minimal security만 설정해서는 에러가 발생해 transport 혹은 http 설정 둘 중 하나는 필수로 켜야한다.

추가적으로 X-pack 설정 관련해 확인할 수 있는 사이트 출처: https://smartiot.co.il/en/elasticsearch-minimal-security/

 curl --user elastic:elastic123 --insecure -X GET "https://192.168.100.7:9200/?pretty"  

⇒ 다음과 같이 아이디와 패스워드를 사용해 rest API를 사용할 수 있도록 설정할 수 있음
⇒ BASE64 TOKEN 공부

API에도 적용할 수 있을것이라 생각. 현재에는 명목상의 userid 만 작성하도록 했는데, 테스트 할때는 본인의 userid, passwd 를 사 용하게끔 해서 클라이언트에 api를 날릴 수 있도록

xpack.security:  
  enabled: true/false
  ## if true ...
  transport.ssl:
    enabled:
    verification_mode:
    keystore.path: ${CERT_FILE}
    truststore.path: ${CERT_FILE}