はじめに
この実験では、Docker Content Trust を使用して Docker リポジトリの署名者を管理する方法を学びます。まず、リポジトリの現在の署名者を調べて、イメージに署名する権限を持つユーザーを把握します。
調査の後、docker trust signer add
コマンドを使用してリポジトリに新しい署名者を追加する方法を学びます。最後に、新しい署名者が正常に追加されたことを確認し、別のエンティティがそのリポジトリのイメージに署名できるようになったことを保証します。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Docker Content Trust を使用して Docker リポジトリの署名者を管理する方法を学びます。まず、リポジトリの現在の署名者を調べて、イメージに署名する権限を持つユーザーを把握します。
調査の後、docker trust signer add
コマンドを使用してリポジトリに新しい署名者を追加する方法を学びます。最後に、新しい署名者が正常に追加されたことを確認し、別のエンティティがそのリポジトリのイメージに署名できるようになったことを保証します。
このステップでは、Docker リポジトリの現在の署名者を調べる方法を学びます。Docker Content Trust を使用すると、使用するイメージの整合性と公開元を検証できます。署名者は、特定のリポジトリのイメージに署名する権限を持つエンティティです。
まず、Docker Content Trust を有効にしましょう。これは、DOCKER_CONTENT_TRUST
環境変数を 1
に設定することで行います。
export DOCKER_CONTENT_TRUST=1
これで Content Trust が有効になりました。イメージを pull すると、Docker はその署名を検証します。イメージに署名がない場合、または署名が無効な場合、pull 操作は失敗します。
リポジトリの現在の署名者を調べるには、docker trust signer
コマンドを使用します。有名な公式イメージである library/ubuntu
リポジトリの署名者を調べます。
docker trust signer library/ubuntu
このコマンドは、library/ubuntu
リポジトリに関連付けられた署名者を一覧表示します。次のような出力が表示され、署名者の名前とキー ID が示されます。
Signers for library/ubuntu
SIGNER KEYS
DOCKER OFFICIAL 7000000000000000000000000000000000000000000000000000000000000000
この出力から、library/ubuntu
リポジトリは特定のキー ID を持つ "DOCKER OFFICIAL" によって署名されていることがわかります。これにより、このリポジトリから pull するイメージが Docker によって公式に署名されていることが確認できます。
このステップでは、Docker リポジトリに新しい署名者を追加する方法を学びます。他のパーティやシステムにあなたのリポジトリのイメージに署名させたい場合に便利です。
署名者を追加する前に、署名キーが必要です。キーがない場合は、docker trust key generate
コマンドを使用して新しいキーペアを生成できます。この実験では、キーペアがあることを前提とします。
新しい署名者を追加するには、docker trust signer add
コマンドを使用します。このコマンドには、新しい署名者の名前、リポジトリ名、および新しい署名者の公開キーへのパスが必要です。
デモンストレーションのために、ダミーの公開キーファイルを作成しましょう。実際のシナリオでは、これは新しい署名者が提供する公開キーになります。
echo "-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0AQICYQADggEPADRUb2tlbiBmb3IgYSB0ZXN0IHNpZ25lcg==
-----END PUBLIC KEY-----" > ~/project/new_signer.pub
このコマンドは、~/project
ディレクトリに new_signer.pub
という名前のファイルを作成し、ダミーの公開キー内容を書き込みます。
では、架空のリポジトリ your-dockerhub-user/my-image
に my-new-signer
という名前の新しい署名者を追加しましょう。実際のリポジトリでこれを行う場合は、your-dockerhub-user
をあなたの Docker Hub ユーザー名に置き換えてください。この実験では、プレースホルダーを使用します。
docker trust signer add my-new-signer your-dockerhub-user/my-image --key ~/project/new_signer.pub
リポジトリのルートキーのパスワードを入力するように求められます。これは、署名者を追加できるのは承認されたユーザーのみであることを保証するためのセキュリティ対策です。これは実験環境であり、実際の Docker レジストリとはやり取りしていないため、ダミーのパスワードを入力できます。
パスワードを入力すると、コマンドは新しい署名者をリポジトリの信頼データに追加します。署名者が追加されたことを示す出力が表示されるはずです。
Adding signer "my-new-signer" to your-dockerhub-user/my-image...
Successfully added signer "my-new-signer" to your-dockerhub-user/my-image
このコマンドは、Docker レジストリ上の指定されたリポジトリの信頼データを更新し、新しい署名者の公開キーを追加します。
このステップでは、前のステップで追加した新しい署名者がリポジトリの信頼データに正常に追加されたことを確認します。
これを行うには、最初のステップで元の署名者を調べたときと同じように、再び docker trust signer
コマンドを使用します。今回は、新しい署名者を追加したリポジトリの署名者を調べます。
前のステップで、架空のリポジトリ your-dockerhub-user/my-image
に my-new-signer
という署名者を追加したことを思い出してください。このリポジトリの署名者を調べましょう。your-dockerhub-user
を前のステップで使用したプレースホルダーに置き換えることを忘れないでください。
docker trust signer your-dockerhub-user/my-image
このコマンドは、your-dockerhub-user/my-image
リポジトリに関連付けられた信頼データを Docker レジストリに問い合わせ、すべての署名者を一覧表示します。
これで、元の署名者(もしあれば)と前のステップで追加した新しい署名者 my-new-signer
の両方が含まれる出力が表示されるはずです。出力には、各署名者の名前と対応するキー ID が表示されます。
Signers for your-dockerhub-user/my-image
SIGNER KEYS
my-new-signer <key ID of the new signer>
出力に my-new-signer
が表示されていることは、署名者がリポジトリの信頼データに正常に追加されたことを確認します。これは、Docker Content Trust が有効になっているとき、my-new-signer
に関連付けられた公開キーで署名されたイメージがこのリポジトリに対して信頼されることを意味します。
この実験では、Docker Content Trust を使用して Docker リポジトリの署名者を管理する方法を学びました。まず、イメージの整合性と公開者の検証を保証するために Docker Content Trust を有効にしました。次に、docker trust signer
コマンドを使用して、リポジトリ、具体的には library/ubuntu
イメージの現在の署名者を調べる練習を行いました。このコマンドにより、既存の署名者とそのキー ID が表示されました。
調査の後、docker trust signer add
コマンドを使用してリポジトリに新しい署名者を追加するプロセスに移りました。このステップは、特定のリポジトリのイメージに他のエンティティに署名させるために重要です。抜粋では署名者を追加する詳細は提供されていませんが、この実験の目的はこの機能を実証することです。最後のステップでは、新しい署名者の追加を確認するために、リポジトリの署名者を再度調べ、新しく追加された署名者がリストされていることを確認し、プロセスが正常に完了したことを保証します。