只部署由 Cloud Build 建構的映像檔

本頁面說明如何設定二進位授權,只允許部署 Cloud Build 建構的容器映像檔,確保軟體供應鏈安全無虞。

如要設定這項部署控制項,請在二進位授權政策中要求 built-by-cloud-build 驗證者。執行會產生映像檔的建構作業時,Cloud Build 會自動在專案中建立 built-by-cloud-build 簽署者。映像檔建構完成後,Cloud Build 會自動簽署映像檔並建立認證。在部署時,二進位授權會使用 built-by-cloud-build 驗證者驗證認證。經過驗證的圖片可供部署。 如果映像檔未通過驗證,系統就不會允許部署,並將失敗記錄在 Cloud 稽核記錄中。

如需端對端指南,瞭解如何使用 Cloud Build 記錄的中繼資料和二進位授權,請參閱「使用已簽署的來源和二進位授權」。

事前準備

如要使用這項功能,請先完成下列操作:

設定政策

在本節中,您將設定二進位授權政策,要求使用 built-by-cloud-build 認證者。

如要只允許部署 Cloud Build 建構的映像檔,請執行下列步驟:

控制台

  1. 前往 Google Cloud 控制台的「二進位授權」頁面:

    前往二進位授權

  2. 在「政策」分頁中,按一下「編輯政策」

  3. 在「編輯政策」對話方塊中,選取「僅接受下列所有驗證者均核准的映像檔」

  4. 按一下「新增認證者」

  5. 在「新增認證者」對話方塊中,執行下列操作:

    1. 選取「依專案和驗證者名稱新增」,然後執行下列步驟:
      1. 在「專案名稱」欄位中,輸入您執行 Cloud Build 的專案。
      2. 按一下「認證者名稱」欄位,並注意 built-by-cloud-build 認證者是否可用。
      3. 按一下「built-by-cloud-build」。
    2. 或者,選取「依驗證者資源 ID 新增」。 在「驗證者資源 ID」中輸入

      projects/PROJECT_ID/attestors/built-by-cloud-build
      

      PROJECT_ID 替換為執行 Cloud Build 的專案。

  6. 按一下「新增 1 位認證者」

  7. 點選 [儲存政策]

gcloud

  1. 使用下列指令將現有政策匯出至檔案:

    gcloud container binauthz policy export > /tmp/policy.yaml
    
  2. 編輯政策檔案。

  3. 編輯下列任一規則:

    • defaultAdmissionRule
    • clusterAdmissionRules
    • istioServiceIdentityAdmissionRules
    • kubernetesServiceAccountAdmissionRules
  4. 如果規則中沒有 requireAttestationsBy 區塊,請新增一個。

  5. requireAttestationsBy 區塊中,新增

    projects/PROJECT_ID/attestors/built-by-cloud-build
    

    PROJECT_ID 替換為執行 Cloud Build 的專案。

  6. 儲存政策檔案。

  7. 匯入政策檔案。

    gcloud container binauthz policy import /tmp/policy.yaml
    

    以下是包含 built-by-cloud-build-attestor 參照的政策檔案範例:

    defaultAdmissionRule:
      evaluationMode: REQUIRE_ATTESTATION
      enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
      requireAttestationsBy:
        - projects/PROJECT_ID/attestors/built-by-cloud-build
    name: projects/PROJECT_ID/policy
    

    PROJECT_ID 替換為執行 Cloud Build 的專案 ID。

後續步驟