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 lsdocker secret inspectで管理を実施します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ