docker trust revoke コマンドを使ってイメージの署名を削除する方法

DockerDockerBeginner
今すぐ練習

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

はじめに

この実験では、Docker Content Trust を使用してイメージの署名を管理する方法を探ります。具体的には、docker trust revoke コマンドに焦点を当てます。まず、署名付きイメージを調べて、署名がどのように表示され、検証されるかを理解します。

調査の後、イメージの特定の署名付きタグから署名を取り消す方法を学びます。その後、再度イメージを調べて、取り消しが成功したことを確認します。最後に、リポジトリ内のすべてのタグから署名を取り消す方法を実証し、すべての署名が削除されたことを確認します。この実験は、Docker イメージに関連する信頼性を管理する実践的な経験を提供します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/tag("Tag an Image") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/inspect -.-> lab-555254{{"docker trust revoke コマンドを使ってイメージの署名を削除する方法"}} docker/pull -.-> lab-555254{{"docker trust revoke コマンドを使ってイメージの署名を削除する方法"}} docker/tag -.-> lab-555254{{"docker trust revoke コマンドを使ってイメージの署名を削除する方法"}} docker/images -.-> lab-555254{{"docker trust revoke コマンドを使ってイメージの署名を削除する方法"}} end

署名付きイメージを調べて署名を確認する

このステップでは、署名付きの Docker イメージを調べてその署名を表示する方法を学びます。Docker Content Trust を使用すると、イメージの整合性と公開者を検証することができます。イメージに署名が付いている場合、それは公開者がイメージに暗号学的に署名したことを意味し、この署名を検証してイメージが改ざんされていないことを確認できます。

まず、Docker Content Trust を有効にする必要があります。これは、DOCKER_CONTENT_TRUST 環境変数を 1 に設定することで行います。

export DOCKER_CONTENT_TRUST=1

では、署名付きイメージを取得しましょう。Docker Content Trust のテスト用に特別に設計された docker/trusttest イメージを使用します。

docker pull docker/trusttest:latest

Docker Content Trust を有効にして署名付きイメージを取得すると、Docker は署名を検証します。署名が有効な場合、取得は成功します。署名が無効または欠落している場合、取得は失敗します。

署名付きイメージの署名を調べるには、docker trust inspect コマンドの後にイメージ名を指定します。

docker trust inspect docker/trusttest:latest

このコマンドは、イメージの署名に関する情報を出力します。これには、署名者とそのキーが含まれます。docker/trusttest イメージの latest タグに関連付けられた署名の詳細が表示されるはずです。この出力は、イメージに署名が付いていることを確認し、誰が署名したかを示します。

特定の署名付きタグから署名を取り消す

このステップでは、署名付きの Docker イメージの特定のタグから署名を取り消す方法を学びます。署名を取り消すとは、特定のイメージタグに対する既存の署名を無効にすることを意味します。これは、キーが漏洩した場合や、特定のバージョンのイメージを信頼対象から除外する必要がある場合に役立ちます。

特定のタグから署名を取り消すには、docker trust revoke コマンドの後にイメージ名とタグを指定します。docker/trusttest イメージの latest タグの署名を取り消します。

docker trust revoke docker/trusttest:latest

このコマンドを実行すると、取り消しを確認するように促されます。y と入力して Enter キーを押して続行します。

Are you sure you want to revoke signature for docker/trusttest:latest? (y/n) y

確認後、Docker は指定されたタグの署名を取り消します。この操作により、レジストリ内のイメージの信頼データが更新されます。

取り消しを確認するためにイメージを再度調べる

このステップでは、latest タグの署名が正常に取り消されたことを確認するために、イメージを再度調べます。前のステップで署名を取り消した後、この特定のタグに関する信頼データは削除されるか、無効としてマークされるはずです。

以前と同じ docker trust inspect コマンドを使用して、docker/trusttest:latest イメージの署名を確認します。

docker trust inspect docker/trusttest:latest

今回は、出力によって latest タグに署名がないことが示されるはずです。他のタグが存在し、署名されている場合、それらに関する情報が表示されるかもしれませんが、latest のセクションには有効な署名が表示されないはずです。これにより、署名の取り消しが成功したことが確認されます。

署名を取り消した後、DOCKER_CONTENT_TRUST=1 を有効にして docker/trusttest:latest イメージを取得しようとすると、その特定のタグに対するイメージがもはや信頼されないため、取得は失敗するはずです。

リポジトリ内のすべてのタグから署名を取り消す

このステップでは、特定の Docker イメージリポジトリ内のすべてのタグから署名を取り消す方法を学びます。これは、セキュリティ上の問題や、そのソースからのイメージを使用しないことに決定したなど、リポジトリ全体の信頼を完全に削除する必要がある場合に便利です。

リポジトリ内のすべてのタグから署名を取り消すには、docker trust revoke コマンドの後にタグを指定せずにリポジトリ名を指定します。docker/trusttest リポジトリのすべての署名を取り消します。

docker trust revoke docker/trusttest

このコマンドを実行すると、リポジトリ内のすべてのタグの署名を取り消すことを確認するように促されます。y と入力して Enter キーを押して続行します。

Are you sure you want to revoke all signatures for docker/trusttest? (y/n) y

確認後、Docker は docker/trusttest リポジトリに関連付けられたすべてのタグの署名を取り消します。この操作により、レジストリ内のリポジトリ全体の信頼データが効果的に削除されます。

すべての署名が削除されたことを確認するためにリポジトリを調べる

この最後のステップでは、docker/trusttest リポジトリのすべてのタグからすべての署名が正常に削除されたことを確認するために、再度リポジトリを調べます。前のステップですべての署名を取り消した後、リポジトリ全体の信頼データは削除されているはずです。

今回はタグを指定せずにリポジトリ名のみを指定して、docker trust inspect コマンドを使用します。

docker trust inspect docker/trusttest

このコマンドの出力では、docker/trusttest リポジトリに署名が見つからないことが示されるはずです。これにより、すべての署名の取り消しが成功したことが確認されます。

これで、Docker Content Trust を使用して Docker イメージの署名を取り消す実験は終了です。特定のタグおよびリポジトリ全体の署名を取り消す方法を学びました。

まとめ

この実験では、Docker Content Trust を使用してイメージの署名を管理する方法を学びました。まず、Docker Content Trust を有効にし、署名付きのイメージ (docker/trusttest:latest) を取得することで、Docker が取得プロセス中に署名を検証する仕組みを理解しました。次に、docker trust inspect コマンドを使用して、イメージに関連付けられた署名を表示し、署名付きの状態を確認し、署名者を特定しました。

その後、署名を取り消す方法を調べました。docker trust revoke コマンドを使用して、特定のイメージタグ (docker/trusttest:latest) から署名を削除し、再度イメージを調べることで取り消しを確認しました。最後に、この知識を拡張して、リポジトリ内のすべてのタグから署名を取り消し、調査を通じて署名が完全に削除されたことを確認しました。この実験では、Docker イメージの署名を調査および取り消す実践的な経験を提供し、コンテナイメージの整合性と信頼性を維持するために不可欠なスキルを身につけました。