シチュエーションごとに違う
ビルドそのものにクレデンシャルが必要な場合
ビルド時に、パスワードが必要な外部サービスから何かを取ってくる場合.
取ってきた何かは公開していいんだけど、取ってくるためのパスワードは残るとまずい、という場合.
docker build --secret
が使える.
docs.docker.com
設定したcredentialsファイルを読んで利用してくれるけどlayerにはファイルが残らないという優れもの.
これでCOPY credentials.txt | RUN use_something | RUN rm -f crednetials.txt
したのにlayerに残っているという危険から逃れられる.
RUNしている間にクレデンシャルが必要な場合
クレデンシャルをログへダンプしたら一巻の終わりだが、何かを実行する以上それを100%避けるのはとても難しい.
最悪ダンプしてもいいように平文でクレデンシャルを持たないのがfail safeにするうえで重要.
ファイルマウントが安全な扱い方の1つ.
マウントはimageに入らないため、取り出したクレデンシャルをどこかに書き込まない限り安全。
クレデンシャルを読んだコンテナをcommitした場合でも新imageには残っておらず、ゆえにpushしても問題ない。imageに残らないので docker history
も心配ない.
素朴な方法は環境変数に入れること.
AWS ECSは暗号化して管理されてる変数を環境変数に挿入できる