[ELK] 2.1 X-Pack Security 설정 및 오류 모음
[ELK] 2.1 X-Pack Security 설정 및 오류 모음 — #개발자의도구들 #ElasticSearch #xpack설정 #xpack오류 AI스쿨 msa기반 java 백엔드 코스 중에 공부한...
#개발자의도구들 #ElasticSearch #xpack설정 #xpack오류
AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다
\* 현재 Spring x 프로젝트를 진행하고 있습니다. 전체 목차를 보시려면 여기를 눌러주세요.
\* Devops stack: 여기
\* 리눅스 기본기: 여기
Before
👉 2. ElasticSearch 연동하기
What is ?
Elasticsearch 클러스터를 보호하기 위해 사용되는 모듈이다.
다음 기능들을 수행한다.
1. Authentication, Authorization
- username, pw로 유저를 식별하여 유저 role에 따라 데이터 베이스 통제권 부여
2. Encryption and Secure Communication
- TLS/SSL in Transport Layer
3. Auditing, Monitoring
...
보안 관련 기능들을 제공하는 모듈로 보면 됩니다.. 구체적으로 어떻게 하는지는 당장에 중요한건 아니기 때문에 어떻게 설정을 해야하는지만 보도록 하겠습니다.
Configuration
xpack.security.enabled: true
# 👉 최신 버전에는 default로 true가 되어있다.
xpack.security.autoconfiguration.enabled: true
# 👉 자동으로 관련 보안 관련 설정들을 만들어줌
xpack.security.enrollment.enabled: false
SSL Setings
- 기능 두번째꺼 관련 설정
xpack.security.transport.ssl.enabled: true
# 👉 xpack security가 true인 경우 반드시 넣어줘야 함
xpack.security.transport.ssl.verification_mode: certificate
# 👉 Sets verification level
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
# 👉 Path to keystore file
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
trouble Shoot
1#
ElasticsearchSecurityException:
invalid configuration for xpack.security.transport.ssl
- [xpack.security.transport.ssl.enabled] is not set,
but the following settings have been configured in elasticsearch.yml :
[xpack.security.transport.ssl.keystore.secure_password,xpack.security.transport.ssl.truststore.secure_password]"
🤔 원인
설정 파일에 아래 처럼 하나만 true
xpack.security.enabled: true
👉 해결책
SSL 설정을 추가해주자
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
2#
3#
[node-1] fatal exception while booting
Elasticsearchorg.elasticsearch.ElasticsearchSecurityException:
failed to load SSL configuration [xpack.security.transport.ssl]
- cannot read configured [PKCS12] keystore (as a truststore)
[/home/tod/elasticsearch/elastic-certificates.p12]
because access to read the file is blocked;
SSL resources should be placed in the [/home/tod/elasticsearch/config] directory
🤔 원인
elastic-certificates.p12의 올바르지 않은 경로
🔍 elastic-certificates.p12는 무엇인가?
X-pack 보안 설정에서 사용되는 인증서 파일.
형식: PKCS#12(.p12)
- 개인키, 인증서, 신뢰 체인을 하나의 암호화된 번들로 저장.
- 이는 Java 기반 어플리케이션에서 keystore, truststore로 사용하기에 적합하다.
역할: 노드의 개인키, 연결 시 신원 증명
CA 서명된 인증서: 보안 통신을 위한 신뢰 기반
🔍 Key store, Trust Stroe?
key store: 노드의 신원을 인증시 사용
trust store: 연결된 다른 노드나 클라이언트 인증서를 검증
elasitc-certificates.p12를 생성하는 방법
# CA 생성
bin/elasticsearch-certutil ca --out elastic-stack-ca.p12
👉 파일 생성 후 비밀 번호를 잘 기억
# 인증서 생성
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --out elastic-certificates.p12
👉 이 생성된 인증서를 config/certs로 옮기기
설정 관련 파일들은 config내에 위치 시키는게 좋다. 밖으로 나가면 권한을 벗어나기 때문입니다.
저 같은 경우 해당 파일이 elastic search root 파일에 위치해 있어서 올바른 경로로 설정하였습니다.
👉 해결책
올바른 경로로 파일 이동
config/certs
3#
[node-1] fatal exception while booting
Elasticsearchorg.elasticsearch.ElasticsearchSecurityException:
failed to load SSL configuration [xpack.security.transport.ssl]
- cannot read configured [PKCS12] keystore (as a truststore)
[/home/tod/elasticsearch/config/certs/elastic-certificates.p12]
- this is usually caused by an incorrect password; (a keystore password was provided)
🤔 원인: PKCS#12 파일이 생성되었으나 해당 파일의 실제 비밀번호가 keystore에 저장되지 않았기 때문입니다.
Elastic search는 keystore에서 모든 키들을 참고하기 때문에 꼭 내부에 작성해줘야 합니다.
👉 해결
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
실행 완료
이상으로 Elastic search를 실행하면서 발생한 문제는 없었습니다.
정상 실행 로그
