Docker Compose에서 시크릿 안전하게 관리하기
Docker Compose에서 시크릿 안전하게 관리하기 (Manage secrets securely in Docker Compose)
시크릿(secret)은 비밀번호, 인증서, API 키처럼 네트워크로 전송되거나 Dockerfile이나 애플리케이션 소스 코드에 암호화 없이 저장되어서는 안 되는 데이터예요.
환경 변수는 종종 모든 프로세스가 접근할 수 있고, 접근을 추적하기 어려울 수 있어요. 또한 디버깅 오류 시 여러분도 모르는 사이 로그에 인쇄될 수 있어요. 시크릿을 사용하면 이러한 위험을 완화할 수 있어요.
출처: 문서
본문
최상위 secrets 요소로 시크릿을 정의해요.
시크릿 사용하기 (Use secrets)
시크릿은 Linux 컨테이너에서만 지원돼요. Compose는 각 시크릿을 컨테이너에 단일 파일을 bind-mount해 전달하며, Windows 컨테이너는 디렉터리만 bind-mount하므로 시크릿이 Linux 전용이에요.
시크릿을 컨테이너로 가져오는 것은 두 단계 과정이에요. 첫째, Compose 파일의 최상위 secrets 요소로 시크릿을 정의해요. 둘째, 서비스 정의를 업데이트해 필요한 시크릿을 secrets 속성으로 참조해요. Compose는 서비스 단위로 시크릿에 대한 접근을 허용해요.
예시:
secrets:
db_password:
file: ./db_password.txt
services:
web:
image: webapp
secrets:
- db_password
컨테이너 안에서는 기본적으로 /run/secrets/db_password 파일로 시크릿에 접근할 수 있어요.
시크릿 관리 모범 사례
민감한 데이터는 환경 변수 대신 시크릿을 사용하고, 시크릿 파일을 저장소에 커밋하지 않도록 주의해요.