このトピックでは、Container Registry のコンテナイメージのコンテンツ分析機能を使用して、イメージのセキュリティとコンプライアンスのチェック機能を強化する方法について説明します。
機能の説明
この機能は、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深圳)、中国 (香港)、シンガポール、米国 (バージニア)、ドイツ (フランクフルト) のリージョンでのみ使用できます。
イメージコンテンツ分析
イメージコンテンツ分析は、コンテナイメージの構成と特性を監査および分析するために使用されます。 この機能は、イメージの脆弱性とコンプライアンスを検出し、イメージタグを管理および追跡できます。 これにより、コンポーネントの依存関係を最適化し、コンテナのセキュリティとパフォーマンスを向上させることができます。 イメージコンテンツ分析により、コンテナ化されたアプリケーションが標準に準拠し、リスクを軽減できます。 また、この機能は、効率的な管理と透過的なソフトウェアサプライチェーンの追跡の実装にも役立ちます。
手順 1:コンテンツ分析ルールの作成
手順:
Container Registry コンソール にログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理する Enterprise Edition インスタンスをクリックします。
[概要] ページの左側のナビゲーション ウィンドウで、 を選択します。[コンテンツ分析] ページで、[ルールの作成] をクリックします。表示されるダイアログ ボックスで、次のパラメーターを構成し、[OK] をクリックしてルールの作成を完了します。
パラメータ
説明
ルール名
ルールの名前を指定します。
分析方法
[自動分析] 方法が自動的に使用されます。
分析範囲
コンテンツ分析範囲を選択します。 有効な値:
[名前空間]:名前空間を選択します。 デフォルトでは、名前空間内のすべてのリポジトリが分析されます。
[リポジトリ]:分析するリポジトリを選択します。
手順 2:コンテンツ分析のトリガー
コンテンツ分析ルールを作成した後、分析範囲内のコンテナイメージでコンテンツ分析を実行できます。
自動分析:指定された分析範囲に属するイメージリポジトリにイメージを手動でプッシュすると、システムは自動的にイメージのコンテンツ分析を開始します。 自動分析方法は、既存のイメージには適用できません。
手動分析:指定された分析範囲内のすべてのイメージまたは特定のイメージの分析をトリガーすることを選択できます。
範囲内のすべてのイメージを分析します。
[概要] ページの左側のナビゲーション ウィンドウで、 を選択します。
[コンテンツ分析] ページの [分析ルール] セクションで、使用する分析ルールを見つけ、[アクション] 列の [スキャン] をクリックします。
[コンテンツ分析] ページの [タスクリスト] セクションで、スキャスクを見つけ、[アクション] 列の [タスクの表示] をクリックしてスキャン情報を表示します。
範囲内の特定のイメージを分析します。
[リポジトリ] ページで、分析するイメージリポジトリの名前をクリックします。 リポジトリの詳細ページで、左側のナビゲーションウィンドウの [タグ] をクリックします。
[タグ] ページで、分析するタグを見つけ、[アクション] 列の [依存関係分析] をクリックします。 [依存関係分析] ページで、[今すぐ分析] をクリックします。
分析が完了すると、コンテンツ分析結果に加えて、_sbom サフィックスが付いた SBOM OCI (Open Container Initiative) アーティファクトが生成されます。 OCI Registry as Storage (ORAS) とイメージタグを使用して、イメージの SBOM ファイルを取得できます。 詳細については、「ORAS とイメージタグを使用する」をご参照ください。

手順 3:分析結果の表示
イメージコンテンツ分析結果では、イメージタグのオペレーティングシステムパッケージのコンポーネント、コンポーネントの依存関係、タグ情報、リスクステータス、およびオペレーティングシステムパッケージを含むすべてのイメージタグを表示できます。
[リポジトリ] ページで、分析するイメージリポジトリの名前をクリックします。 リポジトリの詳細ページで、左側のナビゲーションウィンドウの [タグ] をクリックします。
[タグ] ページで、分析するタグを見つけ、[アクション] 列の [依存関係分析] をクリックします。
[依存関係分析] ページで、イメージのコンテンツ分析結果を表示します。 コンテンツ分析結果には、パッケージタイプ ([オペレーティングシステム]、[オペレーティングシステムパッケージ]、[言語パッケージ])、パッケージの [タグ]、およびパッケージの [リスクステータス] が含まれます。
説明一部のオペレーティングシステムの制限により、それらのオペレーティングシステムのイメージをスキャンできません。 チケットを送信 してスキャンをリクエストできます。

パッケージに対応する [アクション] 列で、[パッケージを含むイメージを表示] をクリックします。 次に、表示されるパネルで、分析範囲内でオペレーティングシステムパッケージを含むすべてのイメージタグを表示できます。
説明クエリ結果は、次のいずれかの要件を満たし、パッケージを含むイメージタグを表示します。
イメージが分析されました。
イメージは分析されませんでしたが、イメージレイヤーのダイジェストは、クエリされたパッケージが配置されているレイヤーのダイジェストと同じです。 これは、イメージレイヤーが複数のイメージで使用されていることを示しています。
さらに、現在のコンテンツ分析では、繰り返されるイメージがプッシュされたとき、およびマルチアーキテクチャイメージが上書きされたイメージタグもクエリします。 これらのイメージは、repo@digest の形式でリストされます。

SBOM ファイル
SBOM (Software Bill of Materials) は、ソフトウェアコンポーネントのリストであり、製造における部品表に似ています。 SBOM は、ソフトウェアのコンポーネントとバージョン、およびコンポーネントの依存関係を記述します。 ソフトウェア構造を理解し、ソフトウェアのセキュリティとコンプライアンスを確保するために不可欠です。 SBOM ファイルは、監査プロセスの合理化、緊急対応機能の向上、透過的なソフトウェアサプライチェーンのサポート、および開発と保守プロセスの最適化に役立ちます。 次のコードは、SBOM ファイルの例を示しています。
{
"bomFormat": "CycloneDX", // SBOM フォーマットのタイプ。
"specVersion": "1.3",
"serialNumber": "urn:uuid:47c90508-80a5-4cec-91f3-9920d765e3b5",
"version": 1,
"components": [ // ソフトウェアコンポーネントのリストと、各コンポーネントのタイプ、名前、バージョン、ライセンス、およびパッケージ URL。
{
"type": "library",
"name": "openssl",
"version": "1.1.1",
"licenses": [
{
"license": {
"id": "Apache-2.0"
}
}
],
"purl": "pkg:generic/openssl@1.1.1"
},
{
"type": "library",
"name": "curl",
"version": "7.76.1",
"licenses": [
{
"license": {
"id": "MIT"
}
}
],
"purl": "pkg:generic/curl@7.76.1"
}
],
"dependencies": [ // コンポーネント間の依存関係。
{
"ref": "pkg:generic/openssl@1.1.1",
"dependsOn": []
},
{
"ref": "pkg:generic/curl@7.76.1",
"dependsOn": [
"pkg:generic/openssl@1.1.1"
]
}
]
}
ORAS を使用してイメージの SBOM ファイルを取得する
前提条件
ORAS クライアントがオンプレミスマシンにインストールされており、Container Registry に接続されています。 ORAS クライアントのインストール方法の詳細については、「Installation」をご参照ください。
Container Registry Enterprise Edition インスタンスが属するリージョンは、SBOM コンテンツ分析機能をサポートしています。 SBOM コンテンツ分析機能をサポートするリージョンの詳細については、「機能の説明」をご参照ください。
ORAS とイメージタグを使用する
イメージの SBOM ファイルを取得するためにこの方法を使用する場合は、イメージタグに _sbom サフィックスを追加する必要があります。
次のコマンドを実行して、イメージリポジトリにログインします。
oras login --username=<イメージリポジトリにログインするために使用するユーザー名> <Enterprise Edition インスタンスの名前>-registry.-<Enterprise Edition インスタンスが存在するリージョン>.cr.aliyuncs.com Password: Login SucceededSBOM ファイルを取得します。
oras pull <Enterprise Edition インスタンスの名前>-registry.<Enterprise Edition インスタンスが存在するリージョン>.cr.aliyuncs.com/<名前空間名>/<イメージリポジトリ名>:<イメージタグ>_sbom
ORAS を使用する
次のコマンドを実行して、イメージリポジトリにログインします。
oras login --username=<イメージリポジトリにログインするために使用するユーザー名> <Enterprise Edition インスタンスの名前>-registry.-<Enterprise Edition インスタンスが存在するリージョン>.cr.aliyuncs.com Password: Login Succeededイメージダイジェスト ID を取得します。
oras discover <Enterprise Edition インスタンスの名前>-registry.<Enterprise Edition インスタンスが存在するリージョン>.cr.aliyuncs.com/<名前空間名>/<イメージリポジトリ名>:<イメージタグ>予想される出力:
<Enterprise Edition インスタンスの名前>-registry.<Enterprise Edition インスタンスが存在するリージョン>.cr.aliyuncs.com/<名前空間名>/<イメージリポジトリ名>@sha256:1f5745d79a9f820f5bXXXXXXXXXX5f626eb49aff9 └── application/vnd.cyclonedx+json └── sha256:0f0206650a86a16XXXXXXXX3891b22a9d649501229f83SBOM ファイルを取得します。
oras pull <Enterprise Edition インスタンスの名前>-registry.<Enterprise Edition インスタンスが存在するリージョン>.cr.aliyuncs.com/<名前空間名>/<イメージリポジトリ名>@sha256:0f0206650a86a16XXXXXXXX3891b22a9d649501229f83