man-in-the-middle (MITM) 攻撃や無効なイメージの更新と実行を防ぐために、Container Registryは指定された名前空間でイメージに自動的に署名します。 イメージがContainer Registryにプッシュされると、Container Registryは、一致した署名ルールに基づいてイメージに自動的に署名します。 これにより、コンテナイメージが信頼されます。
前提条件
Advanced EditionのContainer Registry Enterprise Editionインスタンスが作成されます。 詳細については、「Container Registry Enterprise Editionインスタンスの作成」をご参照ください。
キー管理サービス (KMS) が有効化されています。 詳細については、「KMSの有効化」をご参照ください。
非対称キーの作成
Container RegistryにKMSキーへのアクセスを許可する
Container Registryがアカウント内の非対称キーを読み取ることを許可するには、Resource Access Management (RAM) でポリシーを設定します。
RAMコンソール.にログインします。
左側のナビゲーションウィンドウで、アイデンティティ> ロール.
[ロール] ページで、AliyunContainerRegistryKMSRoleという名前のRAMロールを作成します。
ロールページをクリックします。ロールの作成.
ロールタイプの選択ロールの作成ウィザードのステップで、Alibaba Cloudアカウントのための信頼できるエンティティの選択パラメーターをクリックし、次へ.
ロールの設定ステップ、セットRAMロール名AliyunContainerRegistryKMSRoleに、信頼できるAlibaba Cloudアカウントを選択し、OK.
信頼ポリシーを変更します。
[ロール] ページで、検索ボックスにAliyunContainerRegistryKMSRoleと入力してロールを検索します。 AliyunContainerRegistryKMSRoleを見つけ、[ロール名] 列のAliyunContainerRegistryKMSRoleロール名をクリックします。
信頼ポリシータブをクリックします。信頼ポリシーの編集.
信頼ポリシーを編集します。信頼ポリシーの編集コードエディターをクリックし、信頼ポリシードキュメントの保存.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cr.aliyuncs.com" ] } } ], "Version": "1" }
AliyunContainerRegistryKMSRolePolicyポリシーを作成します。
RAMコンソールの左側のナビゲーションウィンドウで、権限> ポリシー.
ポリシーページをクリックします。ポリシーの作成.
[ポリシーの作成] ページで、[JSON] タブのコードエディターでポリシーの内容を編集し、[次へ] をクリックします。 ポリシー名をAliyunContainerRegistryKMSRolePolicyに設定し、[OK] をクリックします。
説明ビジネス要件に基づいて、次のコードの
region
とaccountid
を置き換える必要があります。{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": "acs:kms:${region}:${accountid}:*" } ], "Version": "1" }
左側のナビゲーションウィンドウで、[アイデンティティ]> [ロール] を選択します。 ロールリストで、
AliyunContainerRegistryKMSRole
ロールを見つけます。クリック権限の追加ロールに対応するアクション列に表示されます。
権限の追加パネル、選択カスタムポリシーをポリシータイプとして検索し、
AliyunContainerRegistryKMSRolePolicy
をクリックし、OKカスタムポリシーを追加します。
証人と署名検証ポリシーの設定
にログインします。クラウドセキュリティセンターコンソールにアクセスします。
左側のナビゲーションウィンドウで、[保護設定]> [コンテナ保護]> [コンテナ署名] を選択します。 [コンテナー署名] ページで、[証人] タブをクリックし、[証人の作成] をクリックして証人を作成し、作成したKMSキーに証人を関連付けます。 KMSキーはイメージ署名に使用されます。
オプションです。署名検証ポリシーを作成して、対応するContainer Service for Kubernetes (ACK) クラスターに証人を関連付けます。 詳細については、「コンテナー署名機能の使用」をご参照ください。
自動イメージ署名の署名ルールの設定
にログインします。Container Registryコンソール.
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理するEnterprise Editionインスタンスをクリックします。
Container Registry Enterprise Editionインスタンスの管理ページで、左側のナビゲーションウィンドウで を選択します。 [署名ルールの作成] をクリックします。
[キー設定] ステップで、Cloud Security Centerコンソールで作成した証人を選択し、KMSキーに関連付けます。 [次へ] をクリックします。
では、署名の設定ステップ、パラメータを設定し、署名ルールの作成.
説明署名ルールは、指定された名前空間にプッシュされた新しいイメージにのみ適用されます。 既存の画像は署名ルールに基づいて署名されません。
アルゴリズム: 画像に署名するために使用されるアルゴリズム。 有効な値: RSA_PSS_SHA_256およびRSA_PKCS1_SHA_256。
スコープ: 自動的に署名する必要がある画像のスコープ。 名前空間を選択できます。
署名タイプ:
デフォルト: 画像ダイジェストとタグは署名されています。 デフォルトモードは、現在のインスタンスの画像の署名検証に適用できます。
シンプル: 画像ダイジェストのみが署名されます。 画像タグは署名されていません。 シンプルモードは、クロスインスタンスイメージ複製シナリオに適しています。 画像タグが変化すると、対応する画像のシグネチャが検証される。
トリガータイプ: イメージ署名がトリガーされるモード。 デフォルト値はAutomatic Triggerです。これは、イメージがContainer Registryにプッシュされるたびに、イメージの署名が自動的にトリガーされることを示します。
イメージ署名の検証
kritis-validation-hookを使用して、コンテナイメージのシグネチャを検証します。 詳細については、「Introduction to kritis-validation-hook」をご参照ください。
kritis-validation-hookを使用して、ACKクラスターの画像署名を自動的に検証できます。 イメージ署名が検証に失敗した場合、イメージの展開をブロックするポリシーを設定できます。 この方法を使用することを推奨します。
KMSの署名検証機能を使用して、Container Registryで画像署名を検証することもできます。