Elasticsearch 보안 강화 (security, TLS, 롤, audit)
Elasticsearch난이도: 고급소요 시간: 10분(점검) – 2시간(전체 강화)설치나 일상 운영 가이드가 아닙니다. 운영 중인 Elasticsearch cluster를 강화하기 위한 시나리오 기반 runbook입니다. 읽기 전용 보안 점검, 비활성화된 security를 transport TLS와 함께 활성화(전체 cluster 재시작), HTTP TLS로의 rolling 전환, DBA/애플리케이션 롤, 만료 기간이 있는 API key, 비상용 file realm 사용자, elastic을 일상 업무에서 제외, anonymous 접근 차단, network.host 및 IP 필터링, audit logging(라이선스 확인 포함), snapshot repository 접근, Kibana service account token을 다룹니다. 마지막에 점검을 다시 실행하여 위험이 해소되었음을 확인합니다. 8.x/9.x RPM/DEB 설치에서는 security와 TLS가 이미 활성화되어 있습니다. 점검부터 시작하여 RISK/WARNING이 나온 시나리오만 적용하십시오. Shard, 디스크, node 작업은 운영 가이드에, 백업은 snapshot 가이드에 있습니다.
구성: 1–12개 node의 Elasticsearch cluster (+ Kibana)
시나리오
- 보안 상태 점검 (읽기 전용) — 아무것도 변경하지 않습니다. Security 활성화 여부, 인증 없는 접근, HTTP/transport TLS, anonymous 접근, 사용자와 elastic 사용 현황, 만료 기간 없는 API key, audit logging, IP 필터링, 리스닝 주소, 라이선스 상태를 OK / WARNING / RISK로 보고합니다. 어디서 시작할지 모르겠다면 이것을 선택하십시오.
- 전체 강화 (모두 순서대로) — 점검 → security + transport/HTTP TLS(비활성화된 경우, 전체 cluster 재시작) → 사용자/롤/API key, anonymous 차단, elastic을 일상 업무에서 제외 → 네트워크 및 IP 필터링 → audit logging(라이선스가 허용하는 경우) → snapshot repository 접근 → Kibana 연결 → 최종 점검.
- Security 비활성화: 보안과 transport TLS 활성화 — xpack.security.enabled: false이거나 7.x에서 업그레이드되어 인증 없이 접근되는 cluster입니다. 인증서를 생성하고 transport(필요하면 HTTP) TLS와 함께 security를 활성화합니다. 전체 cluster 재시작이 필요합니다(서비스 중단): node 간 TLS 연결과 비TLS 연결은 함께 동작하지 않습니다.
- HTTP(REST) 트래픽 TLS 전환 — Security는 활성화되어 있지만 9200 포트가 평문 HTTP입니다. 비밀번호가 네트워크에서 노출됩니다. HTTP 인증서를 배포하고 node를 하나씩 재시작하며, 클라이언트는 https://로 전환합니다.
- 사용자, 롤, API key; elastic 및 anonymous 접근 — 애플리케이션이 elastic superuser로 접속하거나, anonymous 접근이 열려 있거나, 만료 기간 없는 API key가 있습니다. DBA와 애플리케이션용 롤/사용자를 분리하고, 애플리케이션에는 만료 기간이 있는 API key를, 비상용(file realm) 사용자를 만듭니다. elastic의 비밀번호를 변경하고 일상 업무에서 제외합니다.
- Audit logging 활성화 — 누가 어떤 index에 접근했는지, 로그인 실패 시도, 권한 거부, 보안 설정 변경을 기록해야 합니다. xpack.security.audit.enabled(정적 설정, rolling 재시작)는 라이선스가 필요합니다(이 단계에서 라이선스를 확인합니다).
- 네트워크 접근과 IP 필터링 — 9200/9300이 모든 인터페이스에서 리스닝하거나 누구에게나 열려 있습니다. network.host를 내부 IP로 제한하고, firewall과 Elasticsearch IP 필터링으로 node, Kibana, 애플리케이션 네트워크만 허용합니다.
- Snapshot repository 접근 보호 — Snapshot 디렉터리를 누구나 읽을 수 있거나, repository 관리 권한이 넓거나, 클라우드 액세스 키가 elasticsearch.yml에 있습니다. 디렉터리 권한, snapshot 운영자 롤, keystore, 두 번째 cluster에서의 읽기 전용 repository 등록을 다룹니다.
- Kibana 연결 보호 — Kibana가 elastic 사용자로 접속하거나 암호화 없이 연결되며, 비밀번호가 kibana.yml에 평문으로 있습니다. Service account token, CA 검증, keystore, 암호화 키를 다룹니다.
시작하기 전에
- 모든 node에서 root/sudo, 첫 번째 node에서 나머지 node로 SSH(인증서 배포).
- Cluster가 green이어야 합니다. 비정상 cluster에서는 rolling 작업을 하지 않습니다.
- python3(JSON 파싱), openssl, unzip이 설치되어 있어야 합니다.
- Security 활성화(transport TLS)에는 전체 cluster 재시작이 필요합니다. 유지보수 시간과 사전 snapshot을 준비하십시오.
- 클라이언트 목록(Kibana, Logstash, Beats, 애플리케이션): HTTP TLS와 인증이 활성화되면 각각 https + CA + 사용자/API key로 변경해야 합니다.
- Audit logging과 IP 필터링은 유료 라이선스 기능입니다(Gold 이상: Gold, Platinum, Enterprise 또는 30일 trial, 신규 self-managed 구독은 Platinum/Enterprise). Basic 라이선스에서는 둘 다 동작하지 않습니다: 설정은 받아들여지지만 audit 기록이 생성되지 않고 IP 필터는 어떤 연결도 차단하지 않습니다. 라이선스 확인: GET _license.
가이드 단계
- 준비: 안전장치와 보조 도구 — 구성, keystore, 인증서 백업: … · Snapshot 생성 (권장) · PyYAML과 도구: … · 구성 파일 권한: … · 관리자 인증 정보를 netrc 파일에 기록
- 상태 점검 (읽기 전용) — 보안 보고서: … · 점검 결과를 시나리오에 연결
- Security 활성화: 진단과 인증서 — 진단: security가 실제로 비활성화되어 있습니까? · CA와 node 인증서 생성 · 인증서를 node에 배포 · 인증서 권한: … · elasticsearch.yml: security 및 TLS 설정: … · Shard 할당 중지와 flush
- Security 활성화: 전체 cluster 재시작 — 중지: … · 시작: … · elastic 비밀번호 설정 · 관리자 인증 정보를 netrc 파일에 기록 (elastic) · Shard 할당 재개와 상태 대기 · kibana_system 비밀번호 …
- HTTP TLS: 인증서 — 현재 상태 · HTTP 인증서 생성 · 배포와 권한 설정: …
- 사용자, 롤, API key — 기존 사용자, 롤, API key · DBA 관리자 사용자 (…) · 비상용 사용자 (file realm): … · 애플리케이션 롤과 사용자 (…) · 애플리케이션용 만료 기간 있는 API key · 최소 권한 검증 (…) …
- 네트워크 접근과 IP 필터링 — Firewall: … · network.host가 내부 IP인지 확인: … · Elasticsearch IP 필터링
- Audit logging: 라이선스와 설정 — 라이선스가 audit logging을 허용합니까?
- Audit logging: 이벤트 선택과 검증 — 기록할 이벤트 · Audit 기록이 생성되는지 확인: …
- Snapshot repository 접근 — Snapshot 디렉터리 권한: … · Repository 목록, 클라우드 키, snapshot 운영자 롤
- Kibana 연결 — Kibana service account token · kibana.yml과 keystore · Kibana 연결 검증
- 최종 점검 (강화 후) — 보안 보고서: … (최종 상태)
- 정리와 후속 작업 — 임시 인증 정보 파일 삭제: … · 후속 작업