使用政策编排器的前提条件

本页介绍了在虚拟机管理器中使用政策编排器功能的前提条件。

为组织和文件夹编排设置配额项目

使用政策编排器管理组织或文件夹中的操作系统政策资源时,您需要向基于客户端的 API 发出请求。基于客户端的 API 需要配额项目。如需详细了解基于客户端的 API 和设置配额项目,请参阅配额项目概览

使用 gcloud CLI 或 REST API 调用政策编排器方法时,请按如下方式指定配额项目:

gcloud

在 gcloud CLI 配置属性中设置配额项目:

gcloud config set billing/quota_project QUOTA_PROJECT_ID

QUOTA_PROJECT_ID 替换为配额项目的 ID。

或者,您也可以使用 --billing-project 标志(该配置优先于配置属性)为特定命令设置配额项目。

REST

添加 x-goog-user-project HTTP 标头,以便在每个请求中指定配额项目。如需了解详情,请参阅通过 REST 请求设置配额项目

启用 OS Config API

如需在虚拟机管理器中使用政策编排器功能,请在以下项目中启用 OS Config API:

  • 对于组织级和文件夹级编排,请为配额项目启用 OS Config API。
  • 对于项目级编排,请在创建政策编排器的项目中启用 OS Config API。

如需了解详情,请参阅启用 OS Config API

为项目启用渐进式发布 API

控制台

  1. 在 Google Cloud 控制台中,选择要为其启用该 API 的 Google Cloud 项目,然后转到 API 和服务页面:

    转到 API 和服务

  2. 点击启用 API 和服务

  3. 搜索“渐进式发布”。

  4. 在搜索结果中,点击 Progressive Rollout API

  5. 如果该 API 尚未启用,请点击启用

gcloud

  1. 如需查看是否已启用 Progressive Rollout API,请在将 PROJECT_ID 替换为要为其启用该 API 的项目的 ID 后运行以下命令:

     gcloud services list --project=PROJECT_ID
    

    如果输出中显示 progressiverollout.googleapis.com,则表示已启用 API。

  2. 如果未启用该 API,请运行以下命令启用它。

     gcloud services enable progressiverollout.googleapis.com
    

    如需了解详情,请参阅 gcloud services

设置 OS Config 服务代理

政策编排器使用 OS Config 服务代理在您的项目中执行操作。它还取决于 Progressive Rollout API,该 API 具有自己的服务代理。如需了解详情,请参阅服务代理

您必须为创建政策编排器的每个项目、文件夹或组织创建服务代理。

如需创建服务代理,请执行以下操作。

  1. 查看每项资源的服务代理电子邮件地址格式:

    项目

    • service-PROJECT_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com
    • service-PROJECT_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com
    • service-PROJECT_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com

    PROJECT_NUMBER 替换为您创建政策编排器的项目的数字 ID。

    文件夹

    • service-folder-FOLDER_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com
    • service-folder-FOLDER_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com
    • service-folder-FOLDER_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com

    FOLDER_NUMBER 替换为您创建政策编排器的文件夹的数字 ID。

    组织

    • service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com
    • service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com
    • service-org-ORGANIZATION_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com

    ORGANIZATION_NUMBER 替换为您创建政策编排器所在组织的数字 ID。

  2. 如需为指定的 API 和资源创建服务代理,请使用 gcloud beta services identity create 命令

    项目

    gcloud beta services identity create --service=osconfig.googleapis.com  --project=PROJECT_NUMBER
    
    gcloud beta services identity create --service=progressiverollout.googleapis.com  --project=PROJECT_NUMBER
    

    PROJECT_NUMBER 替换为您要在其中创建服务代理的项目的数字 ID。

    文件夹

    gcloud beta services identity create --service=osconfig.googleapis.com  --folder=FOLDER_NUMBER
    
    gcloud beta services identity create --service=progressiverollout.googleapis.com  --folder=FOLDER_NUMBER
    

    FOLDER_NUMBER 替换为您要创建服务代理的文件夹的数字 ID。

    组织

    gcloud beta services identity create --service=osconfig.googleapis.com --organization=ORGANIZATION_NUMBER
    
    gcloud beta services identity create --service=progressiverollout.googleapis.com  --organization=ORGANIZATION_NUMBER
    

    ORGANIZATION_NUMBER 替换为您要在其中创建服务代理的组织的数字 ID。

向服务代理授予 IAM 角色

为了确保政策编排器正常运行,您必须在编排器的父级资源中向相应的服务账号授予所有必需的服务代理角色:

  • @gcp-sa-osconfig.iam.gserviceaccount.com 账号的 OSConfig Service Agent (roles/osconfig.serviceAgent)
  • 适用于 @gcp-sa-osconfig-rollout.iam.gserviceaccount.com 账号的 OSConfig Rollout Service Agent (roles/osconfig.rolloutServiceAgent)
  • 适用于 @gcp-sa-progrollout.iam.gserviceaccount.com 账号的 Progressiverollout Service Agent (roles/progressiverollout.serviceAgent)

如需向服务代理授予 IAM 角色,请使用 Google Cloud 控制台或 add-iam-policy-binding 命令。如需了解详情,请参阅向服务代理授予角色

所需的角色

  • 如需获得授予服务代理访问权限所需的权限,请让管理员向您授予要针对其授予访问权限的项目、文件夹或组织的以下 IAM 角色:

    • 授予服务代理对项目的访问权限: Project IAM Admin (roles/resourcemanager.projectIamAdmin)
    • 向服务代理授予对文件夹的访问权限: Folder Admin (roles/resourcemanager.folderAdmin)
    • 向服务代理授予对项目、文件夹和组织的访问权限:Organization Admin (roles/resourcemanager.organizationAdmin)

    如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

    这些预定义角色包含授予服务代理访问权限所需的权限。如需查看所需的确切权限,请展开所需权限部分:

    所需权限

    您需要具有以下权限才能向服务代理授予访问权限:

    • 向服务代理授予对项目的访问权限:
      • resourcemanager.projects.getIamPolicy
      • resourcemanager.projects.setIamPolicy
    • 向服务代理授予对文件夹的访问权限:
      • resourcemanager.folders.getIamPolicy
      • resourcemanager.folders.setIamPolicy
    • 向服务代理授予对组织的访问权限:
      • resourcemanager.organizations.getIamPolicy
      • resourcemanager.organizations.setIamPolicy

    您也可以使用自定义角色或其他预定义角色来获取这些权限。

如需授予服务代理角色,请按如下方式运行 gcloud add-iam-policy-binding

项目

gcloud projects add-iam-policy-binding PROJECT_ID \
 --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com" \
 --role="roles/osconfig.rolloutServiceAgent"
 gcloud projects add-iam-policy-binding PROJECT_ID \
 --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
 --role="roles/osconfig.serviceAgent"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com" \
--role="roles/progressiverollout.serviceAgent"

PROJECT_NUMBER 替换为要添加 IAM 政策绑定的项目的数字 ID。

文件夹

gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \
 --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com" \
 --role="roles/osconfig.rolloutServiceAgent"
 gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \
 --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
 --role="roles/osconfig.serviceAgent"
gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \
--member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com" \
--role="roles/progressiverollout.serviceAgent"

FOLDER_NUMBER 替换为要添加 IAM 政策绑定的文件夹的数字 ID。

组织

gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
 --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com" \
 --role="roles/osconfig.rolloutServiceAgent"
 gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
 --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
 --role="roles/osconfig.serviceAgent"
gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
--member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com" \
--role="roles/progressiverollout.serviceAgent"

ORGANIZATION_NUMBER 替换为要向其添加 IAM 政策绑定的组织的数字 ID。

后续步骤