すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:kritis-validation-hookを使用してコンテナイメージのシグネチャを自動的に検証する

最終更新日:Oct 29, 2024

このトピックでは、Container Registry、Key Management Service (KMS) 、Security Center、およびkritis-validation-hookを使用して、コンテナーイメージのシグネチャを自動的に検証する方法について説明します。 これにより、信頼できる機関によって署名されたコンテナイメージのみをデプロイできます。 これにより、環境での悪意のあるコード実行のリスクも軽減されます。

ステップ1: kritis-validation-hookのインストール

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. On theアドオンページをクリックし、セキュリティタブを検索し、kritis-validation-hookコンポーネントをクリックし、インストール.

  4. kritis-validation-hookの実行をクラスターに許可します。

    kritis-validation-hookを実行する権限をクラスターに付与する必要があります。 詳細については、「クラスターによるリソースへのアクセス許可」をご参照ください。

手順2: KMSコンソールで画像の署名に使用するキーを作成する

CMKの作成方法の詳細については、「キーの管理」をご参照ください。

重要

キーを作成するときは、[キー仕様][RSA_2048] に、[目的][署名 /検証] に設定します。

手順3: Security Centerコンソールでキーを使用する監視を作成する

  1. Security Centerコンソールにログイン 上部のナビゲーションバーで、管理するアセットのリージョンを選択します。 中国および全世界 (中国を除く)のリージョンがサポートされています。

  2. 左側のナビゲーションウィンドウで、保護設定 > コンテナ保護 > コンテナ署名.

  3. [証人] タブで、[証人の作成] をクリックします。 設定が完了したら、[OK] をクリックします。

    パラメーター

    説明

    目撃者

    証人の名前を入力します。 セキュリティポリシーを構成するときは、必要なコンテナのコンテナ署名機能を有効にする証人を選択する必要があります。 有益な名前を入力することをお勧めします。

    証明書の選択

    証明書リストから作成したKMS CMKを選択します。

    説明

    証人の説明を入力します。

ステップ4: Container Registryでイメージ署名を有効にする

  1. Container Registryコンソールにログインします。

  2. 上部のナビゲーションバーで、リージョンを選択します。

  3. 左側のナビゲーションウィンドウで、[インスタンス] をクリックします。

  4. On theインスタンスページで、管理するEnterprise Editionインスタンスを見つけ、インスタンス名をクリックするか、管理.

    説明

    Enterprise Editionインスタンスを追加するには、[ACR EEの作成] をクリックし、[インスタンスタイプ][詳細] に設定します。

  5. 詳細ページの左側のナビゲーションウィンドウで、リポジトリ > 名前空間.

    名前空間を作成し、名前空間内のイメージのイメージ署名を有効にします。 詳細については、「名前空間の管理」をご参照ください。

  6. 作成した名前空間のイメージ署名を有効にします。

    署名署名ルールを作成するときは、ステップ3で作成した証人を選択します。

    1. 左側のナビゲーションウィンドウで、セキュリティと信頼 > 画像署名.

    2. On the画像署名タブをクリックします。署名ルールの作成.

      署名署名ルールの設定方法の詳細については、「自動イメージ署名用の署名ルールの設定」をご参照ください。

ステップ5: Security Centerで署名検証を有効にする

名前空間の署名検証を有効にするには、security Centerコンソールでクラスターのセキュリティポリシーを追加して有効にします。

  1. にログインします。Security Centerコンソール.

  2. 左側のナビゲーションウィンドウで、保護設定 > コンテナ保護 > コンテナ署名.

  3. [セキュリティポリシー] タブで、[ポリシーの追加] をクリックします。 パラメーターを設定したら、[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

関連ドキュメント