クイックスタート: 継続的検証で Pod のセキュリティをモニタリングする

チェックベースのポリシーを使用して Binary Authorization の継続的検証(CV)を開始する方法を学習します。このクイックスタートでは、次の CV チェックを使用して、次の条件で実行中の Pod を継続的に検証します。

  • 信頼できるディレクトリ: Pod に関連付けられたイメージが、ポリシーで指定された 1 つ以上の信頼できるディレクトリに存在することを確認します。
  • イメージの鮮度: ポリシーで指定した日数以内に Pod のイメージがアップロードされていることを確認します。

始める前に

  1. アカウントにログインします。 Google Cloud を初めて使用する場合は、 Google Cloud アカウントを作成して、 実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  5. プロジェクト Google Cloud を選択または作成します

    プロジェクトを選択または作成するために必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
    • プロジェクトを作成する Google Cloud :

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  6. プロジェクト Google Cloud に対して課金が有効になっていることを確認します

  7. Binary Authorization API と Google Kubernetes Engine API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法をご覧ください

    gcloud services enable container.googleapis.com binaryauthorization.googleapis.com
  8. Google Cloud CLI をインストールします。

  9. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  10. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  11. プロジェクト Google Cloud を選択または作成します

    プロジェクトを選択または作成するために必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
    • プロジェクトを作成する Google Cloud :

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  12. プロジェクト Google Cloud に対して課金が有効になっていることを確認します

  13. Binary Authorization API と Google Kubernetes Engine API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法をご覧ください

    gcloud services enable container.googleapis.com binaryauthorization.googleapis.com
  14. kubectl コマンドライン ツールをインストールします。
  15. Binary Authorization ポリシーと GKE クラスタが別々のプロジェクトにある場合は、両方のプロジェクトで Binary Authorization が有効になっていることを確認します。

プラットフォーム ポリシーを作成する

CV GKE プラットフォーム ポリシーを設定する手順は次のとおりです。

  1. プラットフォーム ポリシーの YAML ファイルを作成します。

    cat << EOF > /tmp/my-policy.yaml
    gkePolicy:
      checkSets:
      - checks:
        - trustedDirectoryCheck:
            trustedDirPatterns:
            - us-central1-docker.pkg.dev/my-project/my-directory
          displayName: My trusted directory check
        - imageFreshnessCheck:
            maxUploadAgeDays: 30
          displayName: My image freshness check
        displayName: My trusted directory and image freshness check set
    EOF
    

    このポリシーでは、次の条件がチェックされます。

    • Pod のイメージが us-central1-docker.pkg.dev/my-project/my-directory という名前の Artifact Registry リポジトリに保存されている。

    • Pod のイメージが過去 30 日以内に Artifact Registry または Container Registry リポジトリにアップロードされている。

  2. プラットフォーム ポリシーを作成します。

    gcloud beta container binauthz policy create POLICY_ID \
        --platform=gke \
        --policy-file=/tmp/my-policy.yaml \
        --project=POLICY_PROJECT_ID
    

    次のように置き換えます。

    • POLICY_ID: 任意の ID
    • POLICY_PROJECT_ID: ポリシー プロジェクト ID

クラスタの作成または更新

クラスタで CV を有効にするには、新しいクラスタを作成するか、既存のクラスタを更新します。

  • チェックベースのプラットフォーム ポリシーを有効にしてクラスタを作成するには、次のコマンドを実行します。

    gcloud beta container clusters create CLUSTER_NAME \
        --location=LOCATION \
        --binauthz-evaluation-mode=POLICY_BINDINGS \
        --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \
        --project=CLUSTER_PROJECT_ID
    

    次のように置き換えます。

    • CLUSTER_NAME: クラスタの名前
    • LOCATION: ロケーション(例: us-central1asia-south1
    • POLICY_PROJECT_ID: ポリシーが保存されているプロジェクトの ID
    • POLICY_ID: ポリシー ID
    • CLUSTER_PROJECT_ID: クラスタ プロジェクト ID

    クラスタが作成されるまで待ちます。

  • チェックベースのポリシーを有効にして既存のクラスタを更新するには、次のコマンドを実行します。

    gcloud beta container clusters update