4月2024日以降、新しく作成されたContainer Registry Enterprise Editionインスタンスは、参照タイプのサポートを含むOpen Container Initiative (OCI) Image and Distribution Specification V1.1.0をサポートします。 つまり、コンテナーイメージを保存および配布し、イメージ署名やSBOM (Software Bills of Materials) などの関連するOCIアーティファクトを管理および配布できます。 これにより、コンテナイメージを管理するのと同じ方法で、これらのOCIアーティファクトを管理および配布できます。 このトピックでは、Container RegistryでOCI V1.1.0の機能を使用する方法について説明します。
前提条件
OCI Registry As Storage (ORAS) クライアントがオンプレミスマシンにインストールされます。 詳細については、「インストール」をご参照ください。
Dockerはオンプレミスマシンにインストールされています。 詳細については、「LinuxインスタンスへのDockerのインストールと使用」をご参照ください。
Container Registry Enterprise Editionインスタンスの仮想プライベートクラウド (VPC) アクセス制御リスト (ACL) が設定されているか、インターネットアクセスが有効になっています。 このトピックでは、インターネットアクセスが有効になっています。 詳細については、「インターネット経由のアクセスの設定」をご参照ください。
Container Registry Enterprise Editionインスタンスへのログインに使用されるパスワードが取得されます。 パスワードを忘れた場合は、アクセス資格情報を設定してパスワードをリセットできます。 詳細については、「Container Registry Enterprise Editionインスタンスのアクセス資格情報の設定」をご参照ください。
手順1: Referrers APIを使用して、コンテナイメージをその派生アーティファクトに関連付ける
リファラーAPIは、OCI V1.1.0で提案されている機能であり、SBOM、署名、脆弱性スキャン結果などの派生アーティファクトにコンテナイメージを関連付けることを目的としています。 Referrers APIを使用すると、特定のソフトウェアアーティファクトのソースを効果的に追跡できるため、イメージセキュリティとコンプライアンス管理およびレビューの効率が向上します。 次の例は、Referrers APIを使用してコンテナイメージのSBOMを生成し、コンテナイメージをSBOMに関連付ける方法を示しています。
環境でdocker sbom
コマンドを実行できない場合は、sbom-cli-pluginコンポーネントをインストールして構成する必要があります。
次の例は、Referrers APIを使用して、<Name of The container Registry Enterprise Edition instanc e>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20
でホストされているコンテナーイメージをコンテナーイメージのSBOMに関連付ける方法を示しています。
Container Registry Enterprise Editionインスタンスのドメイン名を指定し、ユーザー名とログインパスワードを入力します。
Container Registry Enterprise Editionインスタンスにログインすると、
ログイン成功
が表示されます。docker login <Name of the Container Registry Enterprise Edition instance>-registry.cn-hangzhou.cr.aliyuncs.com Username: ****@test.com Password: Login Succeeded
次のコマンドを実行して、コンテナイメージのSBOMを生成します。
docker sbom <Name of the Container Registry Enterprise Edition instance>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 --format spdx-json -o sbom.jsom
期待される出力:
次のコマンドを実行して、コンテナイメージをSBOMに関連付けます。
oras attach --distribution-spec v1.1-referrers-api <Name of the Container Registry Enterprise Edition instance>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 sbom.jsom --artifact-type example/sbom
期待される出力:
次のコマンドを実行して、コンテナイメージとSBOMの間の関連付けを表示します。
oras discover --distribution-spec v1.1-referrers-api <Name of the Container Registry Enterprise Edition instance>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20
期待される出力:
手順2: container Registry Enterprise Editionインスタンス間でコンテナイメージとそれに関連する派生アーティファクトを配布
Container Registry Enterprise Editionでは、ORASクライアントなどのツールを使用して、container Registry Enterprise Editionインスタンス間でコンテナイメージとそれに関連する派生アーティファクトを配布できます。 この例では、コンテナイメージとそれに関連付けられたSBOMは、container Registry Enterprise Editionインスタンス間でコピーされます。
<Name of the source container Registry Enterprise Edition instanc e>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20
でホストされているコンテナイメージとそれに関連するSBOMを、<Name of the destination Container Registry Enterprise Edition instanc e>-registry.cn-beijing.cr.aliyuncs.com
ドメインのイメージリポジトリに配布するには、destination Container Registry Enterprise Editionインスタンスのイメージリポジトリにログインする必要があります。
ターゲットContainer Registry Enterprise Editionインスタンスのドメイン名を指定し、ユーザー名とログインパスワードを入力します。
ターゲットContainer Registry Enterprise Editionインスタンスにログインすると、
ログイン成功
が表示されます。docker login <Name of the destination Container Registry Enterprise Edition instance>-registry.cn-beijing.cr.aliyuncs.com Username: ****@test.com Password: Login Succeeded
次のコマンドを実行して、コンテナーイメージと関連するSBOMを、ターゲットcontainer Registry Enterprise Editionインスタンスのイメージリポジトリに配布します。
$ oras cp -r --from-distribution-spec v1.1-referrers-api --to-distribution-spec v1.1-referrers-api <Name of the source Container Registry Enterprise Edition instance>-registry.cn-hangzhou.cr.aliyuncs.com/library/golang:1.20 <Name of the destination Container Registry Enterprise Edition instance>-registry.cn-beijing.cr.aliyuncs.com/library/golang:1.20
期待される出力:
次のコマンドを実行して、SBOMがターゲットContainer Registry Enterprise Editionインスタンスのイメージリポジトリに配布されていることを確認します。
oras discover --distribution-spec v1.1-referrers-api <Name of the destination Container Registry Enterprise Edition instance>-registry.cn-beijing.cr.aliyuncs.com/library/golang:1.20
期待される出力: