빌드 시크릿

빌드 시크릿 (Build secrets)

빌드 시크릿은 비밀번호나 API 토큰처럼 애플리케이션의 빌드 과정에서 소비되는 민감한 정보예요.

출처: 문서

본문

빌드 인자(build args)와 환경 변수는 최종 이미지에 남기 때문에 시크릿을 빌드에 전달하기에 부적절해요. 대신 시크릿 마운트(secret mounts)나 SSH 마운트를 사용해 시크릿을 안전하게 빌드에 노출해야 해요.

빌드 시크릿의 종류 (Types of build secrets)

  • 시크릿 마운트 (Secret mounts): 빌드 안으로 시크릿을 전달하는 범용 마운트예요. 시크릿 마운트는 빌드 클라이언트에서 시크릿을 가져와 빌드 명령이 실행되는 동안 빌드 컨테이너 안에 일시적으로 사용 가능하게 만들어요. 예를 들어 빌드가 프라이빗 아티팩트 서버나 API와 통신해야 할 때 유용해요.
  • SSH 마운트 (SSH mounts): 빌드 안에서 SSH 소켓이나 키를 사용할 수 있게 하는 특수 목적 마운트예요. 빌드에서 프라이빗 Git 저장소를 가져와야 할 때 주로 사용돼요.
  • 원격 컨텍스트용 Git 인증 (Git authentication for remote contexts): 프라이빗 저장소인 원격 Git 컨텍스트로 빌드할 때 쓰는 미리 정의된 시크릿 집합이에요. 이 시크릿들은 "pre-flight" 시크릿으로, 빌드 명령 안에서 소비되진 않지만 빌더가 컨텍스트를 가져오는 데 필요한 자격 증명을 제공해요.

빌드 시크릿 사용하기 (Using build secrets)

시크릿은 docker build --secret 플래그와 Dockerfile의 RUN --mount=type=secret로 사용해요.

빌드 시크릿 사용 방법:

# syntax=docker/dockerfile:1
FROM alpine
RUN --mount=type=secret,id=mytoken cat /run/secrets/mytoken

빌드할 때:

$ docker buildx build --secret id=mytoken,src=./mytoken.txt .

이렇게 하면 빌드 도중에만 시크릿이 마운트되고, 최종 이미지에는 시크릿이 남지 않아요. 시크릿 정의에 대한 자세한 옵션(예: env로 환경 변수에서 읽기, required 등)은 원본 문서를 참고해요.

더 알아보기 (Learn more)