2019년 10월 29일 화요일

엘라스틱 keystore 인증

엘라스틱은 6.8과 7.1 버전부터 유료 라이센스를 구매하지 않고도 인증 등의 보안 기능을 사용할 수 있다. 다음은 인증 기능 활성화를 위한 설정. (7.4.1 버전)

elasticsearch.yml

이후 디폴트 계성 생성.
[root@Centos7 ~]# /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y

Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

다음은 키바나의 엘라스틱 연결 설정.

kibana.yml

이때 계정 정보가 평문으로 노출되는 게 찝찝하다면 다음처럼 keystore 기능을 이용해서 kibana.yml 설정을 이용하지 않고도 연결 계정 정보를 제공할 수 있다.
[root@Centos7 ~]# /usr/share/kibana/bin/kibana-keystore create --allow-root
Created Kibana keystore in /var/lib/kibana/kibana.keystore
[root@Centos7 ~]# /usr/share/kibana/bin/kibana-keystore add elasticsearch.username --allow-root
Enter value for elasticsearch.username: *******
[root@Centos7 ~]# /usr/share/kibana/bin/kibana-keystore add elasticsearch.password --allow-root
Enter value for elasticsearch.password: ******

다음은 로그스태시 파이프라인 설정. 엘라스틱에 인증 기능을 적용하면 로그스태시 역시 엘라스틱 연결을 위한 계정 정보가 필요하다.
input {
 generator {
  message => "test data"
  count => 1
 }
}

output {
 elasticsearch {
  hosts => "192.168.56.100"
   user => "elastic"
   password => "pass"
 }
}

이때 역시 계정 정보 노출을 막으려면 다음처럼 keystore 기능을 이용하면 된다.
[root@Centos7 ~]# /usr/share/logstash/bin/logstash-keystore --path.settings /etc/logstash create

WARNING: The keystore password is not set. Please set the environment variable `LOGSTASH_KEYSTORE_PASS`. Failure to do so will result in reduced security. Continue without password protection on the keystore? [y/N] y
Created Logstash keystore at /etc/logstash/logstash.keystore
[root@Centos7 ~]# /usr/share/logstash/bin/logstash-keystore --path.settings /etc/logstash add es_user

Enter value for es_user:
Added 'es_user' to the Logstash keystore.
[root@Centos7 ~]# /usr/share/logstash/bin/logstash-keystore --path.settings /etc/logstash add es_password

Enter value for es_password:
Added 'es_password' to the Logstash keystore.

이후엔 파이프라인 설정의 계정 정보를 다음처럼 keystore에 저장한 변수명으로 바꿔주면 됨.
input {
 generator {
  message => "test data"
  count => 1
 }
}

output {
 elasticsearch {
  hosts => "192.168.56.100"
   user => "${es_user}"
   password => "${es_password}"
 }
}

참고로 윈도우 버전은 로그스태시 keystore 생성이 안 되고, 리눅스 7.4.1 이전 버전은 로그스태시 서비스 구동 시 keystore를 찾지 못하는 버그가 있는 듯하다.

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스