notation-alibabacloud-secret-manager プラグインと Key Management Service (KMS) のキーを使用して、Container Registry (ACR) で管理される Open Container Initiative (OCI) アーティファFァクトに署名できます。署名後、クラスターに Ratify をインストールして設定し、これらの署名を検証できます。このプロセスにより、有効な署名を持つイメージのみがデプロイされ、署名のないイメージはブロックされるため、システムのセキュリティが向上します。
関連概念
notation-alibabacloud-secret-manager: オープンソースの Notation プロジェクトの仕様に従って開発されたプラグインです。このプラグインを使用すると、Alibaba Cloud Key Management Service (KMS) で管理されるキーを使用して、ACR で管理されるイメージに署名できます。
Ratify: Kubernetes クラスターで実行されるバイナリ実行可能検証エンジンです。Ratify は、イメージ署名やソフトウェア部品表 (SBOM) などのセキュリティメタデータをクラウドネイティブアーティファクトに挿入して検証します。ポリシー要件を満たすアーティファクトのみがクラスターにデプロイされるようにします。
前提条件
Kubernetes 1.20 以降を実行する ACK マネージドクラスター、ACK 専用クラスター、または ACK Serverless クラスター を作成済みであること。詳細については、「ACK マネージドクラスターの作成」、「ACK 専用クラスターの作成 (廃止)」、または「ACK Serverless クラスターの作成」をご参照ください。
Container Registry Enterprise Edition (Advanced Edition) インスタンスを作成済みであること。詳細については、「Container Registry Enterprise Edition インスタンスの作成」をご参照ください。
Notation CLI をインストール済みであること。
KMS インスタンスを購入して有効化済みであること。詳細については、「KMS インスタンスの購入と有効化」をご参照ください。
ステップ 1: KMS インスタンスで管理されるキーの取得
Key Management Service (KMS) は、簡素化された、信頼性が高く、安全で、コンプライアンスに準拠した認証情報管理とデータ暗号化のためのオールインワンプラットフォームです。notation-alibabacloud-secret-manager プラグインを使用して、KMS で作成および管理されるキー、または KMS にインポートされた自己署名キーでアーティファクトに署名できます。
KMS で作成および管理されるキーの使用
KMS コンソールにログインします。上部のナビゲーションバーでリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。
キー管理 ページで、キー タブをクリックし、インスタンス管理 ドロップダウンリストからソフトウェアキー管理インスタンスを選択して、キーを作成 をクリックします。
キーを作成 パネルで設定を構成し、[OK] をクリックします。
次の表にパラメーターを示します。詳細については、「ソフトウェアで保護されたキー」をご参照ください。
設定項目
説明
例
KMS インスタンス
キーを作成する KMS インスタンスを選択します。
kst-l***
キータイプ
非対称キーを選択します。
非対称キー
キー仕様
次の非対称キー仕様がサポートされています。
RSA_2048
RSA_3072
EC_P256
RSA-2048
キー使用
[SIGN/VERIFY] を選択します。これは、キーがデジタル署名の生成と検証に使用されることを示します。
SIGN/VERIFY
キーのエイリアス
キーのエイリアス。エイリアスには、文字、数字、アンダースコア (_)、ハイフン (-)、およびスラッシュ (/) を含めることができます。
test-key
タグ
キーのタグ。タグを使用してキーを分類および管理できます。各タグは、タグキーとタグ値を含むキーと値のペアで構成されます。
なし
アプリケーションアクセスポイント (AAP) を作成します。
左側のナビゲーションウィンドウで、 をクリックします。
アプリケーションアクセス タブで、Create AAP をクリックします。Create AAP パネルで、パラメーターを設定します。
パラメーター
説明
Mode
Quick Creation を選択します。
Scope (KMS Instance)
アクセスする KMS インスタンスを選択します。
Application Access Point Name
AAP の名前を入力します。
Authentication Method
デフォルト値は ClientKey で、変更できません。
Default Permission Policy
デフォルト値は
key/*secret/*で、変更できません。アプリケーションは、指定された KMS インスタンス内のすべてのキーとシークレットにアクセスできます。[OK] をクリックすると、作成されたクライアントキーがブラウザによって自動的にダウンロードされます。
クライアントキーには [Application Access Secret(ClientKeyContent)] と [パスワード] が含まれています。デフォルトでは、[Application Access Secret(ClientKeyContent)] は
clientKey_****.json形式のファイル名で保存されます。デフォルトでは、[パスワード] はclientKey_****_Password.txt形式のファイル名で保存されます。
KMS にインポートされた自己署名キーの使用
KMS でキーを作成するだけでなく、外部のキーマテリアルをインポートして自己署名キーを使用することもできます。このセクションでは、OpenSSL を使用して秘密キーと証明書を生成する例を示します。
1. 非対称キーの作成
KMS コンソールにログインします。上部のナビゲーションバーでリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。
キー管理 ページで、キー タブをクリックし、インスタンス管理 ドロップダウンリストからソフトウェアキー管理インスタンスを選択して、キーを作成 をクリックします。
キーを作成 パネルで、パラメーターを設定し、[OK] をクリックします。
次の表にパラメーターを示します。詳細については、「ステップ 1: 非対称キーの作成」をご参照ください。
設定項目
説明
例
キータイプ
非対称キーを選択します。
非対称キー
キー仕様
次の非対称キー仕様がサポートされています。
RSA_2048
RSA_3072
EC_P256
RSA-2048
キー使用
[SIGN/VERIFY] を選択します。これは、キーがデジタル署名の生成と検証に使用されることを示します。
SIGN/VERIFY
キーのエイリアス
キーのエイリアス。エイリアスには、文字、数字、アンダースコア (_)、ハイフン (-)、およびスラッシュ (/) を含めることができます。
test-key
タグ
キーのタグ。タグを使用してキーを分類および管理できます。各タグは、タグキーとタグ値を含むキーと値のペアで構成されます。
なし
2. ラッピング公開キーとインポートトークンのダウンロード
キーマテリアルをインポートするためのパラメーターには、ラッピング公開キーとインポートトークンが含まれます。ラッピング公開キーは、インポートプロセス中にキーマテリアルを保護するために暗号化します。インポートトークンは、キーマテリアルをインポートするために必要です。
対象のキーを見つけ、操作 列の 詳細 をクリックします。キー詳細ページの キーマテリアル セクションで、インポートのパラメーターを取得 をクリックします。
キー暗号化マテリアル ダイアログボックスで、パブリックキータイプ と 暗号化アルゴリズム を選択し、次へ をクリックします。
キー管理タイプ
KMS キー仕様
ラッピング公開キータイプ
暗号化アルゴリズム
ソフトウェアで保護されたキー
RSA_2048
RSA_3072
EC_P256
EC_P256K
RSA_2048
RSAES_OAEP_SHA_256_AES_256_ECB_PKCS7_PAD
RSAES_OAEP_SHA_256_AES_256_ECB_PKCS7_PAD: 暗号化プロセスの詳細については、「例: OpenSSL を使用して RSA_2048 アルゴリズムのキーマテリアルを生成する」をご参照ください。
ラッピング公開キーとインポートトークンをダウンロードし、安全な場所に保存します。
パブリックキー形式:
DER形式: ダウンロードされたファイルのデフォルト名は publickey_******.bin です。
PEM形式: ダウンロードされたファイルのデフォルト名は publickey_******.pem です。
トークンのインポート: ダウンロードされたファイルのデフォルト名は token_******.txt です。
重要インポートトークンは 24 時間有効で、有効期間内に複数回使用できます。トークンの有効期限が切れた後は、新しいインポートトークンと公開キーを取得する必要があります。
ラッピング公開キーとインポートトークンは一緒に使用する必要があります。異なるダウンロードからのインポートトークンとラッピング公開キーを組み合わせて使用することはできません。
3. ラッピング公開キーを使用したキーマテリアルの暗号化
システム環境でキーマテリアルを生成し、暗号化します。次の表に、このプロセスで使用されるキーを示します。
キー | 目的 | プロバイダー | 説明 |
ターゲット非対称キー (TAK) | インポートするターゲット非対称キー。 | オンプレミスのキー管理インフラストラクチャ (KMI) やハードウェアセキュリティモジュール (HSM) などのシステム環境またはツール。 |
|
インポートラッピングキー (IWK) | TAK をインポートするために使用される暗号化キー。 | Alibaba Cloud KMS。 |
|
エフェメラル対称キー (ESK) | TAKpriv を直接暗号化するエフェメラル対称キー。 | TAK をエクスポートした直後にソース環境のシステムまたはツールを破棄します。 | N/A |
ターゲット非対称秘密キー (TAKpriv) を作成します。キー仕様は、非対称キーを作成したときに選択したものと同じでなければなりません。すでに TAKpriv をお持ちの場合は、このステップをスキップしてください。
説明TAKpriv 形式は、次の標準に準拠する必要があります。RSA 秘密キーは RFC 3447 に基づいてエンコードされます。ECC 秘密キーは RFC 5915 に基づいてエンコードされます。その後、キーは RFC 5208 に基づいて PKCS#8 形式にラップされます。
ESK を作成します。
インポートラッピング公開キー (IWKpub) を使用して ESK を暗号化します。これにより、ESK の暗号文 (Cipher(ESK)) が生成されます。
ESK を使用して TAKpriv を暗号化します。これにより、ターゲット非対称秘密キーの暗号文 (Cipher(TAKpriv)) が生成されます。
結果を Cipher(ESK)||Cipher(TAKpriv) 形式で組み立てて、暗号化されたキーマテリアルを取得します。
4. キーマテリアルのインポート
キー詳細ページで、キーマテリアルのインポート をクリックします。開いた ラップされたキーマテリアルのインポート ダイアログボックスで、パラメーターを設定し、[OK] をクリックします。
キーマテリアルをインポートすると、キーのステータスが インポート待ち から 有効化 に変わります。

包まれたキーマテリアル: ステップ 3. ラッピング公開キーを使用したキーマテリアルの暗号化 で生成されたキーマテリアルファイルをアップロードします。
トークンのインポート: 3. ラッピング公開キーを使用したキーマテリアルの暗号化 でダウンロードしたトークンファイルをアップロードします。
有効期限が切れたキーマテリアル: 有効期限はありません を選択するか、カスタムの有効期限を指定できます。
重要キーマテリアルに有効期限を指定した場合、KMS は有効期限に達するとキーマテリアルを削除し、それ以降キーマテリアルを使用できなくなります。キーマテリアルを再利用したい場合は、同じキーマテリアルをキーに再インポートできます。
ステップ 2: notation-alibabacloud-secret-manager プラグインのインストール
notation-alibabacloud-secret-manager プラグインは、オープンソースの Notation プロジェクトの仕様に従って開発されています。このプラグインを使用すると、Alibaba Cloud KMS で管理されるキーを使用して、ACR で管理されるイメージに署名できます。
notation-alibabacloud-secret-manager プラグインは、KMS インスタンスと同じリージョンおよび VPC で実行する必要があります。同じリージョン内の複数の VPC から KMS インスタンスにアクセスする方法の詳細については、「同一リージョン内の KMS インスタンスへのマルチ VPC アクセスの設定」をご参照ください。
お使いのオペレーティングシステム用のプラグインをダウンロードします。その他のバージョンについては、「notation-alibabacloud-secret-manager」をご参照ください。
Linux_arm64
wget https://notation-alibabacloud-secret-manager.oss-cn-hangzhou.aliyuncs.com/dist/v0.1.2/notation-alibabacloud-secret-manager_Linux_arm64.tar.gzLinux_X86_64
wget https://notation-alibabacloud-secret-manager.oss-cn-hangzhou.aliyuncs.com/dist/v0.1.2/notation-alibabacloud-secret-manager_Linux_x86_64.tar.gz
次のコマンドを実行して、プラグイン用のディレクトリを作成します。
mkdir -p /root/.config/notation/plugins/alibabacloud.secretmanager.plugin/次のコマンドを実行して、プラグインパッケージを指定されたディレクトリに解凍します。
tar -xvf notation-alibabacloud-secret-manager_Linux_<Version>.tar.gz -C /root/.config/notation/plugins/alibabacloud.secretmanager.plugin/環境変数を設定します。
export ALIBABA_CLOUD_ACCESS_KEY_ID=your_access_key_id export ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_access_key_secret export ALIBABA_CLOUD_KMS_INSTANCE_ENDPOINT=your_kms_endpoint export ALIBABA_CLOUD_KMS_CLIENTKEY_FILEPATH=your_clientkey_filepath export ALIBABA_CLOUD_KMS_PASSWORD=your_password export ALIBABA_CLOUD_KMS_CA_FILEPATH=your_ca_filepath説明notation-alibabacloud-secret-manager プラグインは、複数の認証情報設定方法をサポートしています。詳細については、「credentials」をご参照ください。
環境変数
説明
例
ALIBABA_CLOUD_ACCESS_KEY_ID
Alibaba Cloud アカウントの AccessKey ID。
XXXXXX
ALIBABA_CLOUD_ACCESS_KEY_SECRET
Alibaba Cloud アカウントの AccessKey Secret。
XXXXXX
ALIBABA_CLOUD_KMS_INSTANCE_ENDPOINT
専用 KMS インスタンスの VPC エンドポイント。
kst-hzxxxxxxxxxx.cryptoservice.kms.aliyuncs.comALIBABA_CLOUD_KMS_CLIENTKEY_FILEPATH
専用 KMS インスタンスの AAP のクライアントキーを保存するローカルファイルのパス。/root/clientkey などのファイルを作成し、AAP の作成の ステップ c でブラウザからダウンロードした
clientKey_KAAP.****.jsonファイルの内容をコピーします。/root/clientkey
ALIBABA_CLOUD_KMS_PASSWORD
専用 KMS インスタンスの AAP のパスワード。AAP の作成の ステップ c でブラウザからダウンロードした clientKey_KAAP.594c78e6-7244-4187-XXX-8d59dca2ceb4_Password.txt ファイルの内容を使用します。
XXXXXX
ALIBABA_CLOUD_KMS_CA_FILEPATH
専用 KMS インスタンスの CA 証明書を保存するローカルファイルのパス。ファイルを作成し、「ステップ 5: KMS インスタンスの CA 証明書の取得」の手順に従ってブラウザからダウンロードした PrivateKmsCA_xxxxx.pem ファイルの内容をコピーします。
/root/privatekmsca
ステップ 3: イメージの準備と署名
1. ACR でのイメージの準備
Container Registry Enterprise Edition インスタンスを使用してイメージをビルドするか、オンプレミスデバイスでマルチアーキテクチャイメージをビルドして Container Registry Enterprise Edition インスタンスにプッシュする。
説明Container Registry Enterprise Edition は OCI Image and Distribution Specification 1.1.0 をサポートしています。OCI Registry As Storage (ORAS) などのツールを使用して、非イメージアーティファクトを管理および配布できます。詳細については、「OCI v1.1.0 仕様を使用したコンテナイメージとその派生アーティファクトの管理と関連付け」をご参照ください。
Container Registry Enterprise Edition インスタンスの VPC またはインターネットアクセス制御を設定します。詳細については、「ネットワークアクセス制御」をご参照ください。
Container Registry Enterprise Edition インスタンスにログインするためのパスワードを取得します。パスワードを忘れた場合は、アクセス資格情報を設定することでリセットできます。詳細については、「Container Registry Enterprise Edition インスタンスのアクセス資格情報の設定」をご参照ください。
2. KMS で管理されるキーに基づく ACR イメージへの Notation を使用した署名
notation-alibabacloud-secret-manager プラグインを使用して、KMS の秘密キーと証明書を使用して ACR 内の指定されたイメージに署名できます。
notation-alibabacloud-secret-manager プラグインで KMS Instance SDK for Go を使用するには、次の条件を満たし、必要な環境変数を設定する必要があります。
次のコマンドを実行して、イメージリポジトリにログインします。
./notation login --username=tsh_ram@11380257155*** test-for-doc-registry.cn-hangzhou.cr.aliyuncs.com次のコマンドを実行して、指定されたイメージに署名し、証明書を生成します。このコマンドでは、<dirPath> は証明書が保存されるパスです (例: /root)。
./notation sign --id <keyId> --plugin alibabacloud.secretmanager.plugin test-for-doc-registry.cn-hangzhou.cr.aliyuncs.com/test/nginx:2.11 --plugin-config output_cert_dir=<dirPath>期待される出力:
Successfully signed test-for-doc-registry.cn-hangzhou.cr.aliyuncs.com/test/nginx@sha256:f57e1908e63538ad5159fa99443d0492d23b9d34ba7******Notation CLI で次のコマンドを実行して、アーティファクトに署名できます。
notation sign --id <keyId> --plugin alibabacloud.secretmanager.plugin <myRegistry>/<myRepo>@<digest> --plugin-config output_cert_dir=<dirPath>パラメーター
説明
idAlibaba Cloud KMS インスタンスの ID。
plugin-configプラグインのカスタムパラメーター。次のパラメーターがサポートされています。
output_cert_dir: アーティファクトに署名する際、このパラメーターを使用して、指定された KMS キーに基づいて対応する X.509 検証証明書を発行し、証明書を指定されたディレクトリのファイルに出力できます。ca_certs: KMS インスタンスにインポートされた自己署名キーを使用してアーティファクトに署名する場合、そのキーを使用して X.509 証明書も発行する場合は、このパラメーターを使用して自己署名証明書のパスを指定できます。
ステップ 4: Ratify と Gatekeeper を使用した署名の検証
1. Ratify と Gatekeeper のインストール
Gatekeeper ベースのポリシーガバナンスを有効にします。詳細については、「ポリシーガバナンスの有効化」をご参照ください。
Ratify をインストールします。
ratify 名前空間を作成します。
kubectl create ns ratifyACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[Helm] ページで、[作成] をクリックします。[基本情報] ページで、パラメーターを設定し、[ratify] チャートを選択して、[次へ] をクリックします。
パラメーター
例
アプリケーション名
ratify
名前空間
ratify を選択します。
ソース
デフォルト値は [マーケットプレイス] です。
チャート
シナリオ: [すべて] を選択します。
サポートされるアーキテクチャ: [amd64] を選択します。
検索ボックス: ratify を検索します。
[パラメーター] ページで、[チャートバージョン] を選択します。RAM Roles for Service Accounts (RRSA) を使用してイメージをプルする場合は、設定例に基づいてパラメーターを変更します。その後、[OK] をクリックします。
パラメーター
説明
デフォルト
設定例
ServiceAccount.createRatify 専用の ServiceAccount を作成するかどうかを指定します。有効な値:
true(デフォルト):ratify-adminという名前の ServiceAccount を自動的に作成します。false: ServiceAccount を自動的に作成しません。RRSA を使用してイメージをプルする場合は、事前に ServiceAccount を作成する必要があります。
trueデフォルト値を維持します。
ServiceAccount.nameRatify ServiceAccount のカスタム名。
ratify-adminデフォルト値を維持します。
ServiceAccount.annotationsServiceAccount のカスタムアノテーション。
{}pod-identity.alibabacloud.com/role-name: <Your-RRSA-role>アノテーションを追加して、自動インジェクションを有効にします。説明<Your-RRSA-role>を使用する RRSA ロールに置き換えてください。oras.authProviders.k8secretsEnabledイメージリポジトリとの認証に Kubernetes Secrets Provider を有効にするかどうかを指定します。
falseデフォルト値を維持します。
説明ORAS の設定の詳細については、「ORAS Store 設定例」をご参照ください。
oras.authProviders.alibabacloudAcrBasicEnabledACR イメージリポジトリインスタンスの RRSA 認証のために Alibaba Cloud ACR Provider を有効にするかどうかを指定します。
falsetrueoras.cache.enabledListReferrersとGetSubjectDescriptorの ORAS ストアキャッシングを有効にするかどうかを指定します。重要このパラメーターを有効にすると、TTL ベースのキャッシュがデータソースと一致しなくなる可能性があります。強力な整合性が必要な場合は、このパラメーターを無効にしてください。
trueデフォルト値を維持します。
oras.cache.ttlORAS Store のキャッシュの TTL。
10デフォルト値を維持します。
alibabacloudAcrConfig.defaultInstanceId宛先アーティファクトが配置されている ACR リポジトリのデフォルトのインスタンス ID。
``
必須。
作成した ACR Enterprise Edition リポジトリのインスタンス ID を設定する必要があります。
alibabacloudAcrConfig.acrInstancesConfig異なる Alibaba Cloud ACR リポジトリインスタンスからイメージをプルするには、リスト内の各インスタンスの
instanceNameとinstanceIdを定義する必要があります。[]
Alibaba Cloud ACR プライベートリポジトリに接続するには、このパラメーターを次の内容に設定します。

upgradeCRDs.enabledRatify CRD のアップグレードのために、インストール前のチャートフックプラグインを有効にするか無効にするかを指定します。
trueRatify CRD をアップグレードする必要がない場合は、このパラメーターを
falseに設定できます。説明このパラメーターを
trueに設定すると、pre-install hookがトリガーされ、インストールがタイムアウトする可能性があります。featureFlags.RATIFY_CERT_ROTATIONTLS 証明書のローテーションを有効または無効にするかを指定します。この設定により、Ratify は証明書を自動的に生成およびローテーションできます。
falseRatify バックエンドが証明書を自動的に生成およびローテーションできるようにするには、このパラメーターを
trueに設定する必要があります。notationCert非推奨。
代わりに
notationCertsを使用して、Notation の検証証明書のキューを指定します。指定された証明書と証明書チェーンの公開キーは、Notation 検証機能が使用する組み込みの certstore を作成するために使用されます。なし
デフォルト値を維持します。
notationCertsNotation 検証機能の組み込み certstore 用に、公開キー証明書と証明書チェーンのキューを設定するために使用されます。
``
Notation プラグインの署名プロセス中に返される KMS 検証証明書を指定する必要があります。例:

左側のナビゲーションウィンドウで、[セキュリティ] > [ポリシー管理] を選択します。[マイポリシー] タブをクリックし、RatifyVerification ポリシーが存在することを確認します。

2. プライベート ACR イメージの署名情報をプルするための RRSA の設定
Ratify は、RRSA を使用してプライベートな Alibaba Cloud ACR リポジトリから署名データをプルすることをサポートしています。詳細については、「RRSA を使用して ServiceAccount の RAM 権限を設定し、Pod の権限分離を実装する」をご参照ください。
指定されたクラスターの [アドオン] ページで、ack-pod-identity-webhook コンポーネントをインストールします。
ratify-role という名前の RAM ロールを作成し、その信頼できるエンティティタイプを ID プロバイダーに設定し、条件フィールドを設定します。ack-ram-tool CLI ツールを使用して設定を自動化することもできます。
{ "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "oidc:aud": "sts.aliyuncs.com", "oidc:iss": "<oidc_issuer_url>", "oidc:sub": "system:serviceaccount:<namespace>:<service_account>" # インストールされている Ratify コンポーネントの名前空間と ServiceAccount を使用します。 } }, "Effect": "Allow", "Principal": { "Federated": [ "<oidc_provider_arn>" ] } }ratify-role RAM ロールに AliyunContainerRegistryFullAccess 権限を付与します。
Ratify をデプロイする際、ServiceAccount を作成し、Ratify がデプロイされている名前空間と ServiceAccount に次のアノテーションを設定します。デプロイ後、
ALIBABA_CLOUD_ROLE_ARN、ALIBABA_CLOUD_OIDC_PROVIDER_ARN、およびALIBABA_CLOUD_OIDC_TOKEN_FILE環境変数が Ratify Pod テンプレートにインジェクトされていることを確認できます。説明事前に ServiceAccount を作成している場合は、それに
pod-identity.alibabacloud.com/role-name: ratify-roleアノテーションを追加してください。--- apiVersion: v1 kind: Namespace metadata: name: ratify # 名前空間の名前を指定します。 labels: pod-identity.alibabacloud.com/injection: 'on' --- apiVersion: v1 kind: ServiceAccount metadata: name: ratify-admin # ServiceAccount の名前を指定します。 namespace: ratify # 名前空間の名前を指定します。 annotations: pod-identity.alibabacloud.com/role-name: ratify-role # 上記で作成した RAM ロールの名前。 ---
ステップ 5: 署名と署名検証が有効になったことの確認
ACK クラスターで指定されたイメージを使用するアプリケーションをデプロイして、イメージの署名と署名検証機能が機能していることを確認します。
有効な署名を持つイメージをデプロイすると、ワークロードは宛先クラスターに正常にデプロイされます。
署名されていないイメージを使用するワークロードをデプロイすると、Ratify はデプロイをブロックします。kubectl コマンドを実行してワークロードのステータスを確認し、ブロック情報を取得できます。また、Ratify Pod のログで詳細な署名検証ログを表示することもできます。
kubectl get deploy ${unsigned_deploy_name} -n${namespace} -oyaml # アプリケーション名とその名前空間を入力します。署名検証ログは次のとおりです。

Ratify 設定の詳細
Ratify は、検証機能が処理するアーティファクトタイプを指定するためのさまざまな組み込みおよび外部の Verifier プラグインを提供します。さまざまな署名検証要件に基づいて KeyManagementProvider (KMP) インスタンスをカスタマイズし、さまざまなシナリオで Verifier の署名検証に使用されるキーまたは証明書を定義できます。Ratify はまた、OCI v1.1 仕様の subject フィールドで関連タイプのメタデータを発見および取得するための Store も提供します。以下のセクションでは、設定例を示します。
Notation Verifier 設定例
Verifier で name と artifactType フィールドを定義して、アーティファクトタイプを指定できます。Verifier はクラスターレベルで定義することも、NamespacedVerifier タイプを使用して名前空間レベルで定義することもできます。Verifier の詳細については、Ratify の公式ドキュメントをご参照ください。
デフォルト設定で Ratify コンポーネントをインストールすると、クラスター内に Notation Verifier インスタンスが自動的に作成されます。要件に応じて特定の trustPolicyDoc ポリシーを設定できます。次のコードは設定例です。
KMP 設定例
さまざまな署名検証要件に合わせて KeyManagementProvider インスタンスをカスタマイズし、CR で公開キーまたは X.509 証明書を定義できます。署名検証中、Notation や Cosign などの検証機能は、対応する KMP インスタンスリソースに関連付けられます。KMP は、クラスターレベルおよび名前空間レベルでの定義をサポートしています。KMP の詳細については、Ratify の公式ドキュメントをご参照ください。次のコードは設定例です。
ORAS Store 設定例
Ratify コンポーネントをインストールした後、デフォルトの ORAS Store インスタンスで authProvider パラメーターを設定して、プライベートな Alibaba Cloud ACR リポジトリに接続できます。次のコードは設定例です。