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

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

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

事前準備

  • 如果尚未啟用 Cloud Build 和機構政策 API,請啟用這些 API。

    啟用 API 時所需的角色

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

    啟用 API

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

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

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

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

控制台

  1. 在 Google Cloud 控制台中開啟「Organization policies」(機構政策) 頁面。

    開啟「Organization policies」(組織政策) 頁面

  2. 按一下包含「允許的整合 (Cloud Build)」政策的資料列。

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

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

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

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

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

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

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

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

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

    2. 在「自訂值」部分,輸入要允許或拒絕建構作業的執行個體或存放區主機網址。舉例來說,如要允許或拒絕來自 GitHub 的建構作業,請輸入 github.com 或 www.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。
    • 如要允許來自所有主機網址的建構作業,請使用 ALLOW_OR_DENY,否則請使用 allowAll。denyAll
    • 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_DENY。allowedValues否則為 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 酬載原因和拒絕原因。

後續步驟