使用旧版持续验证

本页面面向使用旧版持续验证(旧版 CV)(已弃用)的用户。

旧版持续验证是 Binary Authorization 的一项功能,用于定期检查与正在运行的 Pod 关联的容器映像是否持续符合 Binary Authorization 项目单例政策。旧版 CV 会将发现结果记录到 Cloud Logging

旧版 CV 不会终止正在运行的 Pod。

限制

旧版 CV 具有以下限制:

  • 旧版 CV 仅支持部署在 Google Kubernetes Engine (GKE) 上的 Pod。
  • 旧版 CV 不支持用于为 Anthos Service Mesh 服务身份、Kubernetes 服务账号或 Kubernetes 命名空间指定专用规则的 Binary Authorization 政策。

准备工作

  1. 确保您已在项目中设置了适用于 Google Kubernetes Engine 的 Binary Authorization。旧版 CV 会记录来自项目中所有集群的 Pod 中的政策合规性事件。

  2. 确保 gcloud CLI 已更新到最新版本

所需权限

Identity and Access Management (IAM) 角色包含相应的权限,可以分配给用户、群组和服务账号。以下角色包括列出的 CV 权限:

角色名称 旧版 CV 权限 说明
roles/binaryauthorization.policyEditor binaryauthorization.continuousValidationConfig.update 启用和停用 CV。

如需设置所需的 IAM 权限,请运行以下命令:

PROJECT_NUMBER=$(gcloud projects list \
  --filter="projectId:ATTESTATION_PROJECT_ID" \
  --format="value(PROJECT_NUMBER)")
SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding ATTESTATION_PROJECT_ID \
    --member="serviceAccount:$SERVICE_ACCOUNT" \
    --role='roles/containeranalysis.occurrences.viewer'

启用旧版 CV

控制台

如需使用 Google Cloud 控制台启用旧版 CV,请执行以下操作:

  1. Google Cloud 控制台中,转到 Binary Authorization 政策页面。

    转到“Binary Authorization 政策”

  2. 点击政策标签页。

  3. 点击修改政策

  4. 展开 GKE 和 Anthos 部署的其他设置部分。

  5. 选中启用持续验证复选框。

  6. 点击保存政策

REST API

如需使用 REST API 来启用旧版 CV,请执行以下操作:

  1. 存储您的项目 ID:

    DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
    

    DEPLOYER_PROJECT_ID 替换为您在其中运行 GKE 的项目的 ID。

  2. 获取 Google Cloud 的 OAuth 令牌。

    BEARER_TOKEN=$(gcloud auth print-access-token)
    

    该令牌仅在短时间内有效。

  3. 启用旧版 CV:

    curl "https://binaryauthorization.googleapis.com/v1alpha2/projects/${DEPLOYER_PROJECT_ID}/continuousValidationConfig" -X PUT -H "authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" --data '{"enforcementPolicyConfig": {"enabled": "true"}}'
    

旧版 CV 现已配置为记录事件。

Logging 日志条目类似于以下示例:

{
"insertId": "6054e143-0000-2562-aa64-883d24f57e70",
"jsonPayload": {
  "@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent",
  "podEvent": {
    "images": [
      {
        "description": "Image <var>IMAGE_NAME@IMAGE_DIGEST</var> denied by
        attestor projects/<var>ATTESTOR_PROJECT_ID</var>/attestors/<var>ATTESTOR_NAME</var>:
        No attestations found that were valid and signed by a key trusted by
        the attestor",
        "image": "<var>IMAGE_NAME@IMAGE_DIGEST</var>",
        "result": "DENY"
      }
    ],
    "verdict": "VIOLATES_POLICY",
    "deployTime": "2021-03-19T17:00:08Z",
    "pod": "<var>POD_NAME</var>"
  }
},
"resource": {
  "type": "k8s_cluster",
  "labels": {
    "cluster_name": "<var>CLUSTER_NAME</var>",
    "location": "<var>CLUSTER_LOCATION</var>",
    "project_id": "<var>DEPLOYER_PROJECT_ID</var>"
  }
},
"timestamp": "2021-03-19T17:15:43.872702342Z",
"severity": "WARNING",
"logName": "projects/<var>DEPLOYER_PROJECY_ID</var>/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
"receiveTimestamp": "2021-03-19T17:57:00.432116179Z"
}

如需了解如何查询旧版 CV 事件,请参阅在 Cloud Logging 中查看旧版 CV 事件

问题排查

旧版 CV 使用其他 Google Cloud 服务,例如 Cloud Asset Inventory 和 Pub/Sub。在旧版 CV 失败的情况下,您可以在 Cloud Logging 中检查 Cloud Asset Inventory 错误。

此外,旧版 CV 会创建一个名为 binauthz-cv-cai-feed 的 Feed 资源。删除或修改该 Feed 可能会导致旧版 CV 失败。旧版 CV 会自动恢复缺失或更改的 Feed,但在执行此操作之前可能无法记录发现结果。

停用 CV

控制台

如需使用 Google Cloud 控制台停用旧版 CV,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Binary Authorization 页面:

    转到“Binary Authorization 政策”

  2. 点击政策标签页。

  3. 点击修改政策

  4. 清除启用持续验证复选框。

  5. 点击保存政策

REST API

如需使用 REST API 来停用旧版 CV,请执行以下操作:

  1. 存储您的项目 ID:

    DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
    

    DEPLOYER_PROJECT_ID 替换为您在其中运行 GKE 的项目的 ID。

  2. 获取 Google Cloud 的 OAuth 令牌。

    BEARER_TOKEN=$(gcloud auth print-access-token)
    

    该令牌仅在短时间内有效。

  3. 使用以下命令停用旧版 CV:

    curl "https://binaryauthorization.googleapis.com/v1alpha2/projects/${DEPLOYER_PROJECT_ID}/continuousValidationConfig" -X PUT -H "authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" --data '{"enforcementPolicyConfig": {"enabled": "false"}}'
    

在 Cloud Logging 中查看旧版 CV 事件

启用 CV 后,它会定期将违反 Binary Authorization 政策的所有 Pod 记录到 Cloud Logging。

这些日志条目包含以下日志名称:

logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"

日志浏览器

如需使用 Logs Explorer 在 Cloud Logging 中查看旧版 CV 事件,请执行以下操作:

  1. 转到 Logs Explorer

  2. 选择启用了 Google Cloud Observability 的项目 ID。

  3. 在搜索查询框中输入以下查询:

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  4. 在时间范围选择器中选择时间范围。

旧式日志查看器

如需使用 Logs Explorer 在 Cloud Logging 中查看旧版 CV 事件,请执行以下操作:

  1. 转到 Logs Explorer

  2. 选项下拉菜单中选择返回到旧式日志查看器

  3. 选择其中设置了 Google Cloud Observability 的 Google Cloud 项目。

  4. 在搜索查询框中输入以下查询:

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  5. 在时间范围选择器中选择时间范围。

gcloud

如需使用 gcloud 在 Cloud Logging 中查看过去一周的旧版 CV 事件,请执行以下命令:

gcloud logging read --order="desc" --freshness=7d \
  'logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"'

后续步骤