[ELK] Elasticsearch 보안기능(TLS통신, RBAC, 계정 기능) 설정하기
참고 자료 : https://www.elastic.co/kr/blog/getting-started-with-elasticsearch-security
- Elasticsearch 에서 보안 기능을 활성화 하기 위해서는 TLS 인증서 설정이 필요하다.
[ELK] Elasticsearch 보안기능(TLS통신, RBAC, 계정 기능) 설정하기1. Elasticsearch TLS 설정 2. Kibana 계정 설정3. Kibana 접속 후 RBAC(Role Based Access Control) 관리4. Metricbeat 설정
1. Elasticsearch TLS 설정
elasticsearch-certutil로 인증서 생성
RPM으로 elasticsearch를 설치한 기준으로
/usr/share/elasticsearch/bin
디렉토리 내 해당 파일이 있다.xxxxxxxxxx
# pwd
/usr/share/elasticsearch/bin
# ls -al | grep certutil
-rwxr-xr-x 1 root root 483 May 23 23:06 elasticsearch-certutil
./elasticsearch-certutil cert -out /etc/elasticsearch/elastic-certificates.p12 ""
명령어를 실행하여 TLK 파일 생성
/etc/elasticsearch/elasticsearch.yml
파일에 TLS 관련 설정 추가Elasticsearch Master, Data 노드에 전부 다 동일하게 설정해며 앞서 생성한
elastic-certificates.p12
파일도 모든 노드에 다 설정해야 한다.설정 정보
xxxxxxxxxx
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/elastic-certificates.p12
- elasticsearch 기동에 문제가 발생한다면 elastic-certificates.p12 파일 위치 확인이 필요하다.
Elastic Search 재기동
systemctl restart elasticsearch
Elasticsearch 클러스터 비밀번호 생성
elasticsearch-setup-passwords는 built in 계정에 대한 패스워드를 설정하는 프로그램이다. 패스워드 변경 전 Cluster 의 상태를 확인하기 때문에 Cluster 내 마스터 노드 설정 확인이 필요하다.
./elasticsearch-setup-passwords auto
로 기본 계정(elastic, kibana 등)에 대한 패스워드를 자동으로 생성한다.해당 패스워드는 조회나 kibana 설정에 필요하니 별도로 기록해야한다.
# ./elasticsearch-setup-passwords auto
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y
Changed password for user apm_system
PASSWORD apm_system = agR7R1SOet7M3fMxs2Ql
Changed password for user kibana
PASSWORD kibana = LFys895AjskgUpefgCMT
Changed password for user logstash_system
PASSWORD logstash_system = ivB05jZtiqe0V4y19RuK
Changed password for user beats_system
PASSWORD beats_system = KD97YhRiQlV1zNsGs49A
Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = aMxHaenD7ZwwNRsKGQA7
Changed password for user elastic
PASSWORD elastic = rEtvJS1gX9PpusJ9M74y
[root@PDV-TELK-MST01 bin]#
elastic 계정에 대한 패스워드 설정 후 Node 상태 확인 결과
x
# curl -u elastic:rEtvJS1gX9PpusJ9M74y 1.1.1.1:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
1.1.1.1 10 99 3 0.03 0.31 0.25 mdi - ELK-MST01
1.1.1.2 10 97 2 0.05 0.44 0.64 mdi * ELK-MST03
1.1.1.3 14 81 2 0.01 0.41 0.62 mdi - ELK-MST02
2. Kibana 계정 설정
/etc/elasticsearch/kibana.yml
파일에 kibana 계정 추가앞서 elasticsearch-setup-passwords에서 생성한 kibana 계정의 패스워드를 입력한다.
# If your Elasticsearch is protected with basic authentication, these settings provide
# the username and password that the Kibana server uses to perform maintenance on the Kibana
# index at startup. Your Kibana users still need to authenticate with Elasticsearch, which
# is proxied through the Kibana server.
#elasticsearch.username: "user"
#elasticsearch.password: "pass"
elasticsearch.username: "kibana"
elasticsearch.password: "LFys895AjskgUpefgCMT"
kibana 재기동
systemctl restart kibana
3. Kibana 접속 후 RBAC(Role Based Access Control) 관리
http://KIBANA_HOST:5601 접속 후 elastic 계정으로 접속
- elastic 계정의 패스워드는 앞서 elasticsearch-setup-passwords에서 생성한 패스워드 입력
좌측 하단 'Management' 메뉴에서 'Security' -> 'Users', 'Roles' 메뉴 접속
'Roles' 메뉴에서 Elasticsearch 관련 권한(read, monitoring 등)을 생성하고
'Users' 메뉴에서 해당 권한을 포함한 신규 계정을 생성하면 됨
4. Metricbeat 설정
metricbeat 를 활용하여 elasticsearch에 데이터를 수집하고 있다면 metricbeat 내에 계정 설정도 필요하다.
/etc/metricbeat/metricbeat.yml
파일 내 output.elasticsearch에 이전에 생성한 계정 정보 추가protocol 정보에 "http" 를 입력하지 않으면
401 Unauthorized
에러가 발생핸다.xxxxxxxxxx
output.elasticsearch:
....
protocol: "http"
username: "elastic"
password: "rEtvJS1gX9PpusJ9M74y"
...
'ELK' 카테고리의 다른 글
[ELK] Elasticsearch, Kibana 7.1 -> 7.2 업데이트 후 'Kibana server is not ready yet ' 에러 발생 시 해결 방법 (0) | 2019.07.04 |
---|