검색엔진/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}