快速入门:通过持续验证监控 Pod 的安全性

了解如何使用基于检查的政策来开始进行 Binary Authorization 持续验证 (CV)。在本快速入门中,您将使用以下 CV 检查来持续验证正在运行的 Pod 是否满足以下条件:

  • 可信目录:检查与 Pod 关联的映像是否位于您在政策中指定的一个或多个可信目录中。
  • 映像新鲜度:检查 Pod 的映像是否是在政策中指定的天数内上传的。

准备工作

  1. 安装 Google Cloud CLI。

  2. 配置 gcloud CLI 以使用您的联合身份。

    如需了解详情,请参阅使用联合身份登录 gcloud CLI

  3. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  4. 创建或选择 Google Cloud 项目

    选择或创建项目所需的角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
    • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (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 项目名称。

  5. 验证是否已为您的 Google Cloud 项目启用结算功能

  6. 启用 Binary Authorization API 和 Google Kubernetes Engine API:

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

    gcloud services enable container.googleapis.com binaryauthorization.googleapis.com
  7. 安装 kubectl 命令行工具
  8. 如果您的 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 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