根據機構政策控管建構作業

您可以透過 Cloud Build 定義機構政策 (constraints/cloudbuild.allowedIntegrations),控管哪些外部服務可以叫用建構觸發條件。舉例來說,如果觸發條件會監聽 GitHub 存放區的變更,但機構政策禁止使用 GitHub,觸發條件就不會執行。您可以為機構或專案指定任意數量的允許或拒絕值。

本頁說明如何使用 Google Cloud 控制台和 gcloud 指令列工具,為整合設定機構政策 (constraints/cloudbuild.allowedIntegrations)。

事前準備

  • 啟用 Cloud Build 和 Organization Policy API。

    啟用 API 時所需的角色

    您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色

    啟用 API

  • 如要使用本指南提供的指令列範例,請安裝及設定 Google Cloud SDK

  • 如要設定、變更或刪除機構政策,您必須具有機構政策管理員 (roles/orgpolicy.policyAdmin) 角色。如要瞭解如何將角色新增至帳戶,請參閱「新增機構政策管理員」。

設定允許的整合服務適用的機構政策

本節說明如何設定機構政策 (constraints/cloudbuild.allowedIntegrations),為允許的整合定義建構作業。

控制台

  1. 在 Google Cloud 控制台中開啟「組織政策」 頁面。

    開啟「組織政策」頁面

  2. 按一下包含「Allowed Integrations (Cloud Build)」政策的資料列。

    畫面會顯示「政策詳細資料」頁面。

  3. 如要編輯政策,請按一下「編輯」

    系統會顯示「編輯政策」頁面。

  4. 在「套用對象」部分,選取「自訂」,設定政策定義。

  5. 在「政策強制執行」部分中,選取「取代」,為政策定義專屬規則。否則,請選取「與上層合併」,確保上層資源的規則會套用至您的設定。詳情請參閱「瞭解階層評估」。

  6. 在「規則」部分,按一下「新增規則」,為政策新增規則。

  7. 在「Policy values」(政策值) 下,選取「Allow all」(允許所有項目),允許來自所有服務的建構作業;選取「Deny all」(拒絕所有項目),拒絕來自所有服務的建構作業;選取「Custom」(自訂),允許或拒絕來自特定服務的建構作業。

    如果選取「自訂」做為值,請完成下列步驟:

    1. 在「政策類型」部分,選取「允許」或「拒絕」

    2. 在「自訂值」部分,輸入要允許或拒絕建構的執行個體或存放區主機網址。舉例來說,如要允許或拒絕來自 GitHub 的建構作業,請輸入 github.comwww.github.com 做為網址。

      您也可以輸入多個網址,並以空格分隔。例如 github.com ghe.staging-test.com

      根據事件,您指定的主機網址為下列其中一個:

      • RepoSync 事件:主機為 source.developers.google.com
      • GitHub 應用程式事件:主機衍生自 JSON 酬載中的 repository.html_url 欄位,一律為 github.com
      • GitHub Enterprise 事件:主機衍生自 JSON 酬載中的 repository.html_url 欄位。例如:ghe.staging-test.com
      • Pub/Sub 事件:主機衍生自觸發條件中指定的來源。如果觸發條件中未指定來源,就不會進行機構政策檢查。
      • Webhook 事件:主機衍生自觸發條件中指定的來源。如果觸發條件中未指定來源,就不會進行機構政策檢查。
  8. 如要儲存規則,請按一下「完成」

  9. 如要新增其他規則,請按一下「新增規則」。如要儲存政策,請按一下「儲存」

gcloud

  1. 開啟終端機視窗。

  2. 如要允許或拒絕所有服務的建構作業,請建立含有下列內容的 YAML 檔案:

    name: projects/PROJECT_NUMBER/policies/cloudbuild.allowedIntegrations
    spec:
      inheritFromParent: INHERIT
      rules:
        - ALLOW_OR_DENY: true
    

    其中:

    • PROJECT_NUMBER 是您的專案號碼。
    • INHERIT,請選取 true,讓政策規則沿用父項資源的規則。否則為 false
    • 如要允許來自所有主機網址的建構作業,請使用 allowAll。否則請使用 denyAllALLOW_OR_DENY
    • HOST_URL 是主機網址。例如:github.com。您也可以在下列幾行中指定其他網址。

    如要允許或拒絕來自所選服務的建構作業,請建立含有下列內容的 YAML 檔案:

    name: projects/PROJECT_NUMBER/policies/cloudbuild.allowedIntegrations
    spec:
      inheritFromParent: INHERIT
      rules:
        - values:
            ALLOW_OR_DENY:
              HOST_URL
              ...
    

    其中:

    • PROJECT_NUMBER 是您的專案號碼。
    • INHERIT,請選取 true,讓政策規則沿用父項資源的規則。否則為 false
    • 如要指定允許建構的主機網址,請使用 ALLOW_OR_DENYallowedValues否則為 deniedValues
    • HOST_URL 是主機網址。例如:github.com。您也可以在下列幾行中指定其他網址。
  3. 執行下列指令來設定機構政策,其中 FILE_NAME 是 YAML 檔案的名稱:

     gcloud org-policies set-policy FILE_NAME
    
  4. 如要確認政策已設定完成,請執行下列指令,其中 PROJECT_ID 是您的專案 ID:

     gcloud org-policies describe cloudbuild.allowedIntegrations --effective --project PROJECT_ID
    

測試允許整合的組織政策

本節說明如何使用建構觸發條件測試機構組織政策 (constraints/cloudbuild.allowedIntegrations)。

  1. 如果尚未建立自動建構觸發條件,請先建立

  2. 將變更推送至來源。

  3. 如果政策允許從來源建構,您就能在「建構記錄」頁面,查看觸發程序執行的建構作業。否則建構作業不會執行。如要查看因政策定義而受限制的建構版本記錄,請前往「記錄探索工具」頁面,查看 JSON 酬載原因和拒絕原因。

後續步驟