使用舊版連續驗證功能

本頁內容適用於舊版持續驗證 (舊版 CV) 的使用者 (已淘汰)。

舊版持續驗證是二進位授權的一項功能,可定期檢查與執行中 Pod 相關聯的容器映像檔,確保持續符合二進位授權專案單例政策。舊版 CV 會將發現項目記錄至 Cloud Logging

舊版 CV 不會終止正在執行的 Pod。

限制

舊版 CV 具有下列限制:

  • 舊版 CV 只支援部署在 Google Kubernetes Engine (GKE) 上的 Pod。
  • 舊版 CV 不支援指定 Cloud Service Mesh 服務 ID、Kubernetes 服務帳戶或 Kubernetes 命名空間特定規則的二進位授權政策。

事前準備

  1. 請確保您已在專案中設定 Google Kubernetes Engine 的二進位授權。專案中所有叢集的 Pod 都會產生舊版 CV 記錄政策一致性事件。

  2. 確認 gcloud CLI 已更新至最新版本

所需權限

身分與存取權管理 (IAM) 角色包含權限,可以指派給使用者、群組和服務帳戶。以下角色包含列出的 CV 權限:

角色名稱 舊版 CV 權限 說明
roles/binaryauthorization.policyEditor binaryauthorization.continuousValidationConfig.update 啟用及停用 CV。
binaryauthorization.continuousValidationConfig.update

如要設定必要 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」(二進位授權) 「Policy」(政策) 頁面。

    前往二進位授權政策

  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 的動態饋給資源。刪除或修改動態饋給可能會導致舊版 CV 失敗。舊版 CV 會自動還原遺失或變更的動態消息,但可能無法記錄發現項目,直到還原完成為止。

停用 CV

主控台

如要使用 Google Cloud 控制台停用舊版 CV,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「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 後,系統會定期將所有違反二進位授權政策的 Pod 記錄到 Cloud Logging。

這些記錄項目包含下列記錄名稱:

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

記錄檔探索工具

如要在 Cloud Logging 中使用記錄檔探索工具查看舊版 CV 事件,請按照下列步驟操作:

  1. 前往「Logs Explorer」頁面

  2. 選取已啟用 Google Cloud Observability 的專案 ID。

  3. 在「search-query」方塊中輸入下列查詢:

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  4. 時間範圍選取器中選取時間範圍。

舊版記錄檢視器

如要使用記錄檔探索工具在 Cloud Logging 中查看舊版 CV 事件,請按照下列步驟操作:

  1. 前往「Logs Explorer」頁面

  2. 從「選項」下拉式選單中選取「返回舊版記錄檢視器」

  3. 選擇您設定 Google Cloud Observability 的 Google Cloud 專案。

  4. 搜尋查詢方塊中輸入下列查詢:

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  5. 時間範圍選取器中選取時間範圍。

gcloud

如要在 Cloud Logging 中查看過去一週的舊版 CV 事件,請執行下列指令:gcloud

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

後續步驟