Prometheus의 HTTP API와 웹 화면에 Basic 인증을 적용하는 방법입니다. 원노트의 --config.web.file 오타를 --web.config.file로 수정했습니다. 인증은 통신 암호화와 별개이므로 TLS 또는 보호된 HTTPS 프록시와 함께 사용합니다.
새 bcrypt 해시 생성
bcrypt를 사용할 수 있는 Python 환경에서 getpass로 새 암호를 입력하고 해시를 생성합니다. 원본의 실제 bcrypt 문자열은 재사용하지 않습니다. 출력은 보호된 설정 파일에만 저장합니다.
import getpass
import bcrypt
value = getpass.getpass('새 Prometheus 암호: ')
print(bcrypt.hashpw(value.encode(), bcrypt.gensalt()).decode())웹 설정 파일
/etc/prometheus/web.yml을 작성합니다. YOUR_NEW_BCRYPT_HASH는 위에서 새로 생성한 실제 bcrypt 해시로 바꿉니다. 일반 평문 암호나 SHA-256 해시를 넣는 자리가 아닙니다.
basic_auth_users:
lieper: 'YOUR_NEW_BCRYPT_HASH'해당 파일은 Prometheus 실행 계정이 읽을 수 있는 제한된 권한으로 두고 구문을 검사합니다. 웹 설정 파일과 데이터 수집 설정인 prometheus.yml은 용도가 다릅니다.
promtool check web-config /etc/prometheus/web.yml서비스 시작 옵션
현재 서비스의 ExecStart를 확인해 기존 옵션을 유지하면서 아래 인자를 추가합니다. systemd drop-in에서 ExecStart를 바꾸는 경우 기존 줄을 초기화하고 전체 실행 명령을 다시 지정해야 합니다.
--web.config.file=/etc/prometheus/web.yml변경한 서비스 정의를 daemon-reload 후 재시작합니다. 실제 실행 명령에 옵션이 반영됐는지, 로그에 해시·파일 권한 오류가 없는지 확인합니다.
인증 검증
자격 증명 없는 요청은 401이 되고 올바른 계정으로는 API와 화면을 읽을 수 있는지 확인합니다. self-scrape나 Grafana 데이터 소스도 인증이 필요해질 수 있으므로 연동 설정을 함께 점검합니다. Prometheus 관리 포트를 인증만 믿고 인터넷 전체에 공개하지 않습니다.
참고: https://prometheus.io/docs/guides/basic-auth/