docker trust signer add コマンドを使って署名者を追加する方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Docker Content Trust を使用して Docker リポジトリの署名者を管理する方法を学びます。まず、リポジトリの現在の署名者を調べて、イメージに署名する権限を持つユーザーを把握します。

調査の後、docker trust signer add コマンドを使用してリポジトリに新しい署名者を追加する方法を学びます。最後に、新しい署名者が正常に追加されたことを確認し、別のエンティティがそのリポジトリのイメージに署名できるようになったことを保証します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") subgraph Lab Skills docker/inspect -.-> lab-555256{{"docker trust signer add コマンドを使って署名者を追加する方法"}} end

リポジトリの現在の署名者を調べる

このステップでは、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-imagemy-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-imagemy-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 コマンドを使用してリポジトリに新しい署名者を追加するプロセスに移りました。このステップは、特定のリポジトリのイメージに他のエンティティに署名させるために重要です。抜粋では署名者を追加する詳細は提供されていませんが、この実験の目的はこの機能を実証することです。最後のステップでは、新しい署名者の追加を確認するために、リポジトリの署名者を再度調べ、新しく追加された署名者がリストされていることを確認し、プロセスが正常に完了したことを保証します。