2026年8月19日
2026年8月19日
Dockerのシークレット(secrets)を安全に管理する方法
はじめに
Dockerではsecrets機能を利用して機密情報(認証情報やシークレットキーなど)を安全に管理できます。この機能は、コンテナ間で共有される機密情報を一元的に管理し、セキュリティと運用効率を向上させるのに役立ちます。
症状・背景
- シークレット情報を直接Dockerfileやコンテナのコマンドライン引数として含める。
- ファイルベースのシークレットを使用し、セキュリティリスクが高い。
- コンテナ間で共有される機密情報が一元的に管理されていない。
手順・設定方法
ステップ1: Docker Secretsの生成
# シークレットファイルを作成します。
echo "mysecretkey" | docker secret create my_secret -
# 上記コマンドは、"mysecretkey"という文字列を`my_secret`という名前のシークレットとして生成します。
ステップ2: Docker Secretsの参照
# Docker Composeファイルでシークレットを使用する設定を示します。
version: '3.8'
services:
web:
image: nginx
secrets:
- my_secret
secrets:
my_secret:
file: ./my_secret.txt
ステップ3: シークレットの読み取りと使用
# リンクされたシークレットをコンテナ内で利用できます。
docker run --rm -it --mount type=secret,src=my_secret,dst=/etc/my_secret my_image cat /etc/my_secret
ステップ4: 実践/トラブルシュート/監視
# シークレットの一覧を確認します。
docker secret ls
# 特定のシークレットの詳細を表示します。
docker secret inspect my_secret
注意事項
- ファイルベースのシークレットは、ファイルシステムへのアクセスを制限する必要があります。
- シークレットを生成する際は、安全な方法で値を設定することが重要です。
- コンテナ間でのシークレット共有には
secrets機能を利用すること。
まとめ
1. シークレットの生成: docker secret createを使用してシークレットを作成します。
2. Docker Composeでシークレットを指定: Docker Composeファイル内でシークレットを使用する設定を行います。
3. シークレットの読み取り: コンテナ内でシークレットを読み取る方法を紹介します。
4. 監視とトラブルシュート: docker secret ls、docker secret inspectで管理を実施します。
関連記事: