사용자 등록 후 이미지로 저장해놓으면 매번 사용자를 등록하지 않아도 바로 사용이 가능하다.
아래 단계는 위 포스트처럼 Docker-compose를 통해 ELK를 이미 구축해 놓았다는 가정 하에 진행한다.
방법은 두가지가 있다.
첫 번째는 사용자 등록 스크립트 파일을 이용해 초기에 강제 명령어 주입을 진행하는 것이다.
두 번째는 수동으로 사용자를 추가한 후 해당 컨테이너를 이미지화하여 사용하는 것이다.
보안 상 두 번째 방법을 권고한다.
1. 사용자 등록 스크립트 사용하기
1. 사용자 등록 스크립트 작성
사용자 등록 스크립트를 미리 작성해 놓은 후 ELK 구동 시 사용자 등록이 자동으로 진행되게 하는 방법이다.
파일명은 setup-users.sh 등으로 저장하면 되는데, 주황색 부분만 수정해 주면 된다.
(빨간색 비밀번호는 elastic 계정으로 설정되어있는 비밀번호를 입력해주면 된다.)
#!/bin/bash
# Kibana 사용자 비밀번호 등록 echo "Creating user 'kibana_system'..." curl -X POST "http://localhost:9200/_security/user/kibana_system/_password" -H 'Content-Type: application/json' -d '{ "password": "새로운_비밀번호" }' -u elastic:비밀번호
# 특정 사용자 추가 echo "Adding a new user 'new_user'..." curl -X POST "http://localhost:9200/_security/user/new_user" -H 'Content-Type: application/json' -d '{ "password": "사용자_비밀번호", "roles": [ "role1", "role2" ], "full_name": "사용자 전체 이름", "email": "사용자 이메일" }' -u elastic:비밀번호
2. Dockerfile 수정
elasticsearch 폴더 내에 있는 Dockerfile을 편집기로 열어준다.
폴더 경로와 elasticsearch 버전은 구축 환경에 맞게 수정해 주면 된다.
FROM docker.elastic.co/elasticsearch/elasticsearch:7.17.0
# 사용자 등록 스크립트를 복사 COPY setup-users.sh /usr/local/bin/setup-users.sh RUN chmod +x /usr/local/bin/setup-users.sh
# 컨테이너 시작 시 사용자 등록 스크립트 실행 CMD ["/usr/local/bin/setup-users.sh"]
3. 컨테이너 실행
docker-compose build --no-cache && docker-compose up -d
docker-compose.yml 파일에 보면 아래와 같이 설정되어 있다.
이 단계에서 파일 내의 elasticsearch 서비 - build 섹션을 통해 Dcokerfile을 빌드하게 된다. 따라서 해당 Dockerfile을 별도로 빌드해 줄 필요가 없다.
위와 같이 스크립트를 직접 작성할 경우 파일 내에 비밀번호가 포함되기 때문에 보안 상의 위험이 있다.
따라서 아래와 같이 직접 비밀번호를 추가한 후 이미지로 빌드하여 사용하는 것을 권장한다.
2. 이미지 파일로 저장하여 사용하기
1. 사용자 등록
ELK 스택이 실행되어있다는 가정 하에 사용자 등록을 진행해준다.
elastic:비밀번호에 있는 비밀번호는 elastic 계정의 초기 비밀번호로 설정한 값을 입력해주면된다.
우선 kibana 사이트를 이용하기 위해선 kibana_system 계정 설정이 필요하다.