kibana에 id/password 기반의 auth 적용
- 현재 운영하고 있는 클러스터는 readonly-rest plugin을 사용해서 acl을 적용해 놓은 상태이기 때문에
cluster에는 security(x-pack feature)를 적용하고 싶지 않고, kibana에만 id/password를 치고 로그인을 하고 싶었습니다. - 이런 경우 내가 security를 사용할 수 있는 subscription을 구매해서 가지고 있다고 하더라도 elastic에서 제공하는 방법으로는 불가능 합니다.
그래서nginx
의reverse proxy
를 사용해서 kibana 앞단에 두고 로그인을 해야만 kibana를 접속 할 수 있도록 하는 방법에 대해서 포스팅 하려고 합니다.
yum/apt 를 사용하여 install 해도 전혀 무방하지만 저는 특정 위치에 설치하는것을 선호 하기 때문에 직접 소스코드를 컴파일 하는 방향으로 설명 하겠습니다.
# nginx 다운로드
먼저 nginx gzip 파일을 다운로드 받고 압축을 해제 합니다.
1 | wget http://nginx.org/download/nginx-1.14.1.tar.gz |
pcre & openssl 설치
pcre와 openssl 은 기본적으로 요구하는것 같으니 해당 파일들을 다운로드 받아서 압축을 해제 합니다. (기존에 설치되어 있고, 경로를 알고 있다면 이 작업은 필요 없습니다.) 압축은 nginx 압출 푼 디렉토리에서 진행하는게 나중에 정리할때 편합니다.
1 | wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz |
** + 2018-11-19 추가: ** 다른 고객사의 서버 에서는 zlib도 설치하는걸 요구해서 zlib 도 추가로 설치했습니다.
1 | wget https://zlib.net/zlib-1.2.11.tar.gz |
# configure, make&&make install
–prefix –with-pcre와 –with-openssl 옵션을 붙여서 configure 합니다. (필요하면 zlib 추가)
1 | ./configure --prefix=/nakjunizm/util/nginx --user=nakjunizm--group=nakjunizm --with-pcre=/nakjunizm/util/nginx-1.14.1/pcre-8.42 --with-openssl=/nakjunizm/util/nginx-1.14.1/openssl-1.1.1 --with-zlib=/nakjunizm/util/nginx-1.14.1/zlib-1.2.11 |
# temp directory 및 설치 파일 삭제
나중에 까먹을수도 있으니 작업한 파일들은 삭제 합시다.
1 | cd .. |
# id/password 기반의 authentication 설정
지금 까지는 nginx 설치과정이었고 이제부터 실제로 htpd-tools
를 사용하여 패스워드 파일을 만들고, nginx에 reverse proxy
설정을 하여 id/password 를 적용해 보겠습니다.
# httpd-tools
nginx는 httpd-tools를 설치하고 htpasswd
명령어를 사용해서 만든 htpasswd 파일을 사용해서 로그인을 구현할 수 있습니다. 혹시 httpd-tools가 설치되어 있지 않다면 설치 후 아래와 같이 패스워드 파일을 만들어 줍시다.
1 | nakjunizm@myserver:/nakjunizm/util/nginx$ sudo htpasswd -c /nakjunizm/util/nginx/userdata/htpasswd.users kibana |
# nginx.conf 파일 수정
server 디렉티브를 찾아서 proxy와 auth 관련 설정을 추가해 줍니다.
1 | vi nginx.conf |
위와 같이 간단히 설정을 하고 나면 http://nginx서버ip:5602 로 접속하면 127.0.0.1:5600 으로 넘겨주고, user/password 를 물어보는 팝업창이 나타납니다.
# kibana.yml 파일 수정
이제 kibana 5602 포트는 nginx에서 사용할 것이니 이제부터 kibana는 nginx에 설정한대로 5600번 포트로 띄울것 입니다.
** 그리고 직접 5600 포트를 치고 다이렉트로 들어올 수 있으면 지금 하고 있는 모든 작업이 의미없는 작업이 될 수 있으므로 ** server.host
를 127.0.0.1 로 바꿔 줍니다
1 | vi kibana.yml |
# kibana & nginx 재시작
모든 설정이 완료되었으므로 kibana를 재시작 하고, nginx를 시작 합니다. ngingx의 경우 sbin 경로를 따로 빼서 설치하지 않았음으로 설치위치/sbin/nginx 로 실행 합니다.
1 | cd /nakjunizm/util/nginx/sbin ./nginx |
#참고
- 중지: ./nginx -s stop
- 설정새로고침: ./nginx -s reload
# 접속 확인
이제 http://nginx-ip:5602로 접속 해서 정상적으로 로긴 화면이 나오는지 확인 합니다.
# 참고한 사이트
http://nginx.org/en/docs/configure.html
https://www.hugeserver.com/kb/how-secure-kibana-nginx-centos/