基于组织政策的门控构建

借助 Cloud Build,您可以定义组织政策 (constraints/cloudbuild.allowedIntegrations) 来控制哪些外部服务可以调用 build 触发器。例如: 您的触发器是否监听对 GitHub 代码库和 GitHub 的更改 在组织政策中被拒绝,您的触发器将不会运行。您可以指定 为您的组织或项目指定任意数量的允许或拒绝的值。

本页面介绍了如何设置组织政策 (constraints/cloudbuild.allowedIntegrations) 使用 Google Cloud 控制台进行集成 和 gcloud 命令行工具。

准备工作

  • Enable the Cloud Build and Organization Policy APIs.

    Enable the APIs

  • 要使用本指南中的命令行示例,请安装并 配置 Google Cloud SDK

  • 要设置、更改或删除组织政策,您必须拥有 Organization Policy Administrator (roles/orgpolicy.policyAdmin) 角色。接收者 请参阅添加组织政策管理员

为允许的集成设置组织政策

本部分介绍了如何设置组织政策 (constraints/cloudbuild.allowedIntegrations),以便为允许的集成定义 build。

控制台

  1. 在 Google Cloud 控制台中打开组织政策页面。

    打开“组织政策”页面

  2. 点击包含允许的集成 (Cloud Build) 政策的行。

    您会看到政策详情页面。

  3. 如需修改此政策,请点击修改

    您将看到修改政策页面。

  4. 应用对象部分,选择自定义以设置 政策定义

  5. 强制执行政策部分中,选择替换以定义 设置您自己的政策规则否则,请选择与父级合并,以确保将父级资源中的规则应用于您的设置。如需了解详情,请参阅了解层次结构评估

  6. 规则部分,点击添加规则以添加新的规则 您的政策。

  7. 政策值下,选择全部允许以允许构建 选择全部拒绝即可拒绝来自所有服务的构建 服务,或者选择自定义以允许或拒绝 特定服务。

    如果您选择自定义作为值,请完成以下步骤:

    1. 政策类型部分,选择允许拒绝

    2. 自定义值部分中,输入您要允许或禁止从中进行构建的实例或代码库的主机网址。例如: 要允许或拒绝来自 GitHub 的构建,请输入 github.com 的网址 或 www.github.com

      您还可以输入多个网址,以空格分隔。例如,github.com ghe.staging-test.com

      根据事件,您指定的主机网址为以下之一:

      • RepoSync 事件:主机为 source.developers.google.com
      • GitHub 应用事件:主机派生自 repository.html_url 字段 (始终为 github.com)。
      • GitHub Enterprise 事件:主机派生自 repository.html_url 字段 。例如 ghe.staging-test.com
      • Pub/Sub 事件:主机派生自来源 。如果没有来源 因此没有组织 政策检查。
      • Webhook 事件:主机派生自触发器中指定的来源。如果没有来源 还是在触发器中指定了 政策检查。
  8. 要保存规则,请点击完成

  9. 如需添加其他规则,请点击添加规则。否则,要保存 点击 Save(保存)。

gcloud

  1. 打开一个终端窗口。

  2. 如果要允许或拒绝来自所有服务的构建,请创建一个 YAML 文件,其中包含以下内容:

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

    其中:

    • PROJECT_NUMBER 是您的项目编号。
    • 如果您希望政策规则从父级资源继承,则 INHERITtrue。否则为 false
    • 如果您想允许从所有主机网址构建 build,则 ALLOW_OR_DENYallowAll;否则,为 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_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. 如果您的政策设置为允许通过源代码构建,您将要 能够在构建记录页面上查看来自触发器的构建执行情况。否则,您的构建将不会执行。接收者 查看受政策定义限制的构建的历史记录,请参阅 Logs Explorer JSON 载荷原因和遭拒原因的页面。

后续步骤