Docker Hardened Image を検証する
Docker Hardened Images(DHI)には、イメージのビルドプロセス、内容、セキュリティ状態を検証するための署名付きアテステーションが含まれています。
これらのアテステーションは各イメージバリアントごとに提供されており、cosign または Docker Scout CLI を使用して検証できます。
DHI イメージ用の Docker の公開鍵は、以下の URL で公開されています:
Docker Scout を使ってアテステーションを検証する
Docker Scout CLI を使用すると、Docker Hardened Images(DHI)のアテステーションを一覧表示・取得できます。
これは、Organization の名前空間にミラーリングされたイメージに対しても利用可能です。
docker scout attest
コマンドを実行する前に、ローカルに pull 済みのイメージがリモートの最新版であることを確認してください。
docker pull
を実行して最新状態にしておかないと、No attestation found
(アテステーションが見つかりません)というエラーが表示される可能性があります。
なぜ cosign を直接使うのではなく Docker Scout を使うのか?
cosign を使ってアテステーションを手動で検証することも可能ですが、Docker Hardened Images(DHI)においては Docker Scout CLI を使うことで以下のような主な利点があります:
-
DHI に特化した体験: Docker Scout は DHI のアテステーション構造やイメージの命名規則を理解しており、完全なイメージダイジェストや URI を手動で指定する必要がありません。
-
プラットフォームの自動解決: Scout では
--platform linux/amd64
のようにプラットフォームを指定するだけで、該当するバリアントを自動で検証します。cosign では、自分でダイジェストを調べる必要があります。 -
人間が読みやすいサマリ出力: Scout は、パッケージ数やビルドプロビナンスステップなど、アテステーションの内容を要約して表示します。cosign は基本的に生の署名検証結果のみを出力します。
-
ワンステップ検証:
docker scout attest get --verify
フラグを使えば、アテステーションを一括で検証でき、対応する cosign コマンドも表示されるため、裏で何が行われているかを理解しやすくなります。 -
Docker Hub および DHI の信頼モデルと統合: Docker Scout は Docker のアテステーションインフラと公開鍵リングに密接に統合されており、Docker エコシステム内での検証がよりスムーズかつ確実に行えます。
要するに、Docker Scout は検証プロセスを簡素化し、人為的なミスのリスクを減らしながら、透明性と柔軟性を保ちつつ必要に応じて cosign にも戻れるツールです。
利用可能なアテステーションを一覧表示する
ミラーリングされた DHI に対して利用可能なアテステーションを一覧表示するには、以下のコマンドを使用します:
$ docker scout attest list <your-org-namespace>/dhi-<image>:<tag> --platform <platform>
このコマンドを実行すると、SBOM(ソフトウェア部品表)、ビルドプロビナンス、脆弱性レポートなど、すべての利用可能なアテステーションが表示されます。
特定のアテステーションを取得する
特定のアテステーションを取得するには、--predicate-type
フラグを使い、対象の述語(predicate)タイプの完全な URI を指定します:
$ docker scout attest get \
--predicate-type https://cyclonedx.org/bom/v1.5 \
<your-org-namespace>/dhi-<image>:<tag> --platform <platform>
たとえば:
$ docker scout attest get \
--predicate-type https://cyclonedx.org/bom/v1.5 \
docs/dhi-python:3.13 --platform linux/amd64
述語本体(predicate body)のみを取得したい場合は、--predicate
フラグを追加します:
$ docker scout attest get \
--predicate-type https://cyclonedx.org/bom/v1.5 \
--predicate \
<your-org-namespace>/dhi-<image>:<tag> --platform <platform>
たとえば:
$ docker scout attest get \
--predicate-type https://cyclonedx.org/bom/v1.5 \
--predicate \
docs/dhi-python:3.13 --platform linux/amd64
Docker Scout を使ってアテステーションを検証する
Docker Scout を使用してアテステーションを検証するには、--verify
フラグを使用します:
$ docker scout attest get <image-name>:<tag> \
--predicate-type https://scout.docker.com/sbom/v0.1 --verify
たとえば、dhi/node:20.19-debian12-fips-20250701182639
イメージの SBOM アテステーションを検証するには、以下のように実行します:
$ docker scout attest get docs/dhi-node:20.19-debian12-fips-20250701182639 \
--predicate-type https://scout.docker.com/sbom/v0.1 --verify
対応する cosign コマンドを表示する
--verify
フラグを使用すると、イメージ署名を検証するための対応する cosign コマンドも表示されます。
$ docker scout attest get \
--predicate-type https://cyclonedx.org/bom/v1.5 \
--verify \
<your-org-namespace>/dhi-<image>:<tag> --platform <platform>
たとえば:
$ docker scout attest get \
--predicate-type https://cyclonedx.org/bom/v1.5 \
--verify \
docs/dhi-python:3.13 --platform linux/amd64
検証が成功すると、Docker Scout は対応する cosign verify
コマンドを出力します。
出力例:
v SBOM obtained from attestation, 101 packages found
v Provenance obtained from attestation
v cosign verify registry.scout.docker.com/docker/dhi-python@sha256:b5418da893ada6272add2268573a3d5f595b5c486fb7ec58370a93217a9785ae \
--key https://registry.scout.docker.com/keyring/dhi/latest.pub --experimental-oci11
...
cosign を使用する際は、Docker Hub レジストリと Docker Scout レジストリの両方に認証する必要があります。
たとえば:
$ docker login
$ docker login registry.scout.docker.com
$ cosign verify \
registry.scout.docker.com/docker/dhi-python@sha256:b5418da893ada6272add2268573a3d5f595b5c486fb7ec58370a93217a9785ae \
--key https://registry.scout.docker.com/keyring/dhi/latest.pub --experimental-oci11
利用可能な DHI のアテステーション
各 DHI に対して提供されているアテステーションの一覧は、利用可能なアテステーションをご覧ください。
Docker Hub でアテステーションを確認する
イメージバリアントを確認する際に、Docker Hub 上でアテステーションを視覚的に閲覧することも可能です。
Attestations セクションには、以下の情報が一覧で表示されます:
-
種類(例:SBOM、VEX)
-
Predicate Type URI(述語タイプの識別子)
-
cosign
コマンドで使用できるダイジェストリファレンス
これらのアテステーションは、Docker Hardened Image のビルドプロセスの一環として自動的に生成・署名されています。