このトピックでは、Container Registry、Key Management Service (KMS) 、Security Center、およびkritis-validation-hookを使用して、コンテナーイメージのシグネチャを自動的に検証する方法について説明します。 これにより、信頼できる機関によって署名されたコンテナイメージのみをデプロイできます。 これにより、環境での悪意のあるコード実行のリスクも軽減されます。
ステップ1: kritis-validation-hookのインストール
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
On theアドオンページをクリックし、セキュリティタブを検索し、kritis-validation-hookコンポーネントをクリックし、インストール.
kritis-validation-hookの実行をクラスターに許可します。
kritis-validation-hookを実行する権限をクラスターに付与する必要があります。 詳細については、「クラスターによるリソースへのアクセス許可」をご参照ください。
手順2: KMSコンソールで画像の署名に使用するキーを作成する
CMKの作成方法の詳細については、「キーの管理」をご参照ください。
キーを作成するときは、[キー仕様] を [RSA_2048] に、[目的] を [署名 /検証] に設定します。
手順3: Security Centerコンソールでキーを使用する監視を作成する
Security Centerコンソールにログイン 上部のナビゲーションバーで、管理するアセットのリージョンを選択します。 中国および全世界 (中国を除く)のリージョンがサポートされています。
左側のナビゲーションウィンドウで、 .
[証人] タブで、[証人の作成] をクリックします。 設定が完了したら、[OK] をクリックします。
パラメーター
説明
目撃者
証人の名前を入力します。 セキュリティポリシーを構成するときは、必要なコンテナのコンテナ署名機能を有効にする証人を選択する必要があります。 有益な名前を入力することをお勧めします。
証明書の選択
証明書リストから作成したKMS CMKを選択します。
説明
証人の説明を入力します。
ステップ4: Container Registryでイメージ署名を有効にする
Container Registryコンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
On theインスタンスページで、管理するEnterprise Editionインスタンスを見つけ、インスタンス名をクリックするか、管理.
説明Enterprise Editionインスタンスを追加するには、[ACR EEの作成] をクリックし、[インスタンスタイプ] を [詳細] に設定します。
詳細ページの左側のナビゲーションウィンドウで、 .
名前空間を作成し、名前空間内のイメージのイメージ署名を有効にします。 詳細については、「名前空間の管理」をご参照ください。
作成した名前空間のイメージ署名を有効にします。
署名署名ルールを作成するときは、ステップ3で作成した証人を選択します。
左側のナビゲーションウィンドウで、 .
On the画像署名タブをクリックします。署名ルールの作成.
署名署名ルールの設定方法の詳細については、「自動イメージ署名用の署名ルールの設定」をご参照ください。
ステップ5: Security Centerで署名検証を有効にする
名前空間の署名検証を有効にするには、security Centerコンソールでクラスターのセキュリティポリシーを追加して有効にします。
にログインします。Security Centerコンソール.
左側のナビゲーションウィンドウで、 .
[セキュリティポリシー] タブで、[ポリシーの追加] をクリックします。 パラメーターを設定したら、[OK] をクリックします。
パラメーター
説明
ポリシー名
セキュリティポリシーの名前を入力します。 セキュリティポリシーを設定するときは、必要なクラスターのコンテナー機能を有効にする証人を選択する必要があります。
有益な名前を入力することをお勧めします。
目撃者
証人リストから作成した証人を選択します。
アプリケーションクラスター
コンテナー署名機能を有効にするクラスターグループを選択します。 次に、必要なクラスター名前空間を選択します。
ポリシー有効
スイッチをオンにします。 ポリシーは、作成後に自動的に有効になります。
説明スイッチはデフォルトでオフになっています。 この場合、ポリシーは作成後に有効になりません。
注
セキュリティポリシーの説明を入力します。
ステップ6: 署名検証が有効かどうかを確認する
リポジトリが不変に設定されていない場合、ダイジェスト形式のイメージのみがサポートされます。 リポジトリを不変に設定する方法の詳細については、「リポジトリを不変に設定する」をご参照ください。
次のコマンドを実行して、署名検証が有効かどうかを確認します。
デフォルトの名前空間に対して署名検証を有効にすると、署名されていないイメージをその名前空間にデプロイすることはできません。
タグでイメージを指定するには、次のコマンドを実行します。
kubectl -n default create deployment not-sign --image=alpine:3.11 -- sleep 10
サーバーからの
Error from server: admission webhook "kritis-validation-hook-deployments.grafeas.io" denied the request: image alpine:3.11 is not attested
ダイジェストでイメージを指定するには、次のコマンドを実行します。
kubectl -n default create deployment not-sign --image=alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 -- sleep 10
Error from server: admission webhook "kritis-validation-hook-deployments.grafeas.io" denied the request: image alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 is not attested
イメージ署名が有効になっている名前空間にイメージをプッシュします。 次に、イメージの署名後にイメージを展開できることを確認します。
docker push kritis-demo***.cn-hongkong.cr.aliyuncs.com/kritis-demo***/alpine:3.11
The push refers to repository [kritis-demo***.cn-hongkong.cr.aliyuncs.com/kritis-demo***/alpine] 5216338b40a7: Pushed 3.11: digest: sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 size: 528
署名付きイメージのデプロイ要求を受け入れるには、次のコマンドを実行します。
kubectl -n default create deployment is-signed --image=kritis-demo***.cn-hongkong.cr.aliyuncs.com/kritis-demo***/alpine@sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45 -- sleep 10
deployment.apps/is-signed created
関連ドキュメント
kritis-validation-hookの詳細については、「Introduction to kritis-validation-hook」をご参照ください。
kritis-validation-hookのリリースノートの詳細については、「kritis-validation-hook」をご参照ください。