2016-05-31 3 views
4

docker buildの間にDockerコンテナに資格情報を注入する方法に関するベストプラクティスがあるかどうかは疑問です。 私のDockerfileでは、基本認証が必要なリソースWebサーバーを取得する必要があります。ハードコーディングを行わずに、資格情報をコンテナに取り込む方法について考えています。ビルド中にDockerコンテナに資格情報を持たせる方法

.netrcファイルはどうですか?curl --netrc ...でそれを使用していますか?しかし、セキュリティはどうですか? Dockerfileと一緒にソースリポジトリに資格情報を保存するというアイデアは嫌です。

たとえば、パラメータや環境変数を使用して資格情報を挿入する方法はありますか?

アイデア?

+0

https://stackoverflow.com/questions/32664729/how-can-i-pass-secret-data-to-a-container – user2915097

+1

ここでの質問は、_build_のみの資格情報を渡すことですビルド中に解凍するURLからリリースジップを取得するための資格情報、コンテナの実行時にアプリの_Not_資格情報(上記のリンクされた質問については何かなど) 'ARG'は適合しますが、値はイメージメタデータに保持され、イメージファイルを持っている人は誰でも' docker history'で見ることができるので、資格情報は安全ではありません。 –

答えて

0

Dockerの新しい機能によって、以前よりもより洗練された安全性が実現しました。新しいmulti-phase buildsは、Dockerfileというビルダーパターンを実装します。このメソッドは、資格を一時的な「ビルダー」コンテナに格納し、そのコンテナは秘密を保持しない新しいコンテナを作成します。

ビルダーコンテナへの資格情報の取得方法を選択できます。たとえば:

  • は、環境変数を使用します。ENV creds=user:passcurl https://[email protected]
  • 資格情報
  • コピーした容器の中へのSSHキーを渡すためにbuild-argを使用します。COPY key /root/.ssh/id_rsa
  • Credential Helpers
  • を使用して、OS自身の安全な認証情報を使用します

Dockerfile

## Builder 
FROM alpine:latest as builder 
# 
# -- insert credentials here using a method above -- 
# 
RUN apk add --no-cache git 
RUN git clone https://github.com/some/website.git /html 
# 
## Webserver without credentials 
FROM nginx:stable 
COPY --from=builder /html /usr/share/nginx/html 
関連する問題