使用政策编排程序的前提条件

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

用于政策编排器前提条件的 gcloud CLI 命令

本部分列出了在使用政策编排程序功能之前需要运行的所有 gcloud 命令。

项目

以下命令用于执行创建项目级编排所需的任务:

  # Enable OS Config API
  gcloud services enable osconfig.googleapis.com

  # Enable Progressive Rollout API
  gcloud services enable progressiverollout.googleapis.com

  # Create an OS config service agent
  gcloud beta services identity create --service=osconfig.googleapis.com  --project=PROJECT_NUMBER

  # Create a Progressive Rollout service agent
  gcloud beta services identity create --service=progressiverollout.googleapis.com  --project=PROJECT_NUMBER

  # Grant the required role to the OS config rollout service agent
  gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com" \
  --role="roles/osconfig.rolloutServiceAgent"

  # Grant the required role to the OS config service agent
  gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
  --role="roles/osconfig.serviceAgent"

  # Grant the required role to the Progressive Rollout service agent
  gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com" \
  --role="roles/progressiverollout.serviceAgent"

替换以下内容:

  • PROJECT_ID:您要在其中创建服务代理的项目的数字 ID。
  • PROJECT_NUMBER:您创建项目时 Google 分配的项目资源编号。

如需了解详情,请参阅项目资源

文件夹

以下命令用于执行创建文件夹级编排所需的任务:

  # Set up the quota project
  gcloud config set billing/quota_project QUOTA_PROJECT_ID

  # Enable OS Config API
  gcloud services enable osconfig.googleapis.com

  # Create an OS config service agent
  gcloud beta services identity create --service=osconfig.googleapis.com  --folder=FOLDER_NUMBER

  # Create a Progressive Rollout service agent
  gcloud beta services identity create --service=progressiverollout.googleapis.com  --folder=FOLDER_NUMBER

  # Grant the required role to the OS config rollout service agent
  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"

  # Grant the required role to the OS config service agent
  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"

  # Grant the required role to the Progressive Rollout service agent
  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"
  

替换以下内容:

  • QUOTA_PROJECT_ID:配额项目的 ID。您可以选择任何已启用结算功能的项目。
  • FOLDER_NUMBER:您要在其中创建服务代理的文件夹的数字 ID。

组织

以下命令可执行创建组织级编排所需的任务:

  # Set up the quota project
  gcloud config set billing/quota_project QUOTA_PROJECT_ID

  # Enable OS Config API
  gcloud services enable osconfig.googleapis.com

  # Create an OS config service agent
  gcloud beta services identity create --service=osconfig.googleapis.com --organization=ORGANIZATION_NUMBER

  # Create a Progressive Rollout service agent
  gcloud beta services identity create --service=progressiverollout.googleapis.com  --organization=ORGANIZATION_NUMBER

  # Grant the required role to the OS config rollout service agent
  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"

  # Grant the required role to the OS config service agent
  gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
  --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
  --role="roles/osconfig.serviceAgent"

  # Grant the required role to the Progressive Rollout service agent
  gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
  --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-progrollout.iam.gserviceaccount.com" \
  --role="roles/progressiverollout.serviceAgent"

替换以下内容:

  • QUOTA_PROJECT_ID:配额项目的 ID。您可以选择任何已启用结算功能的项目。
  • ORGANIZATION_NUMBER 替换为要在其中创建服务代理的组织的数字 ID。

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

使用政策编排程序管理组织或文件夹中的操作系统政策资源时,您需要向基于客户端的 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

为项目启用 Progressive Rollout API

控制台

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

    转到 API 和服务

  2. 点击启用 API 和服务

  3. 搜索“Progressive Rollout”。

  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 有自己的服务代理。如需了解详情,请参阅服务代理

您必须为创建政策编排程序的每个项目、文件夹或组织创建服务代理。为了让政策编排程序正常运行,请在编排程序的父资源中向这些服务代理授予以下必需的 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

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

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

  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 命令

    项目

    # Create an OS config service agent
    gcloud beta services identity create --service=osconfig.googleapis.com  --project=PROJECT_NUMBER
    
    # Create a Progressive Rollout service agent
    gcloud beta services identity create --service=progressiverollout.googleapis.com  --project=PROJECT_NUMBER
    

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

    文件夹

    # Create an OS config service agent
    gcloud beta services identity create --service=osconfig.googleapis.com  --folder=FOLDER_NUMBER
    
    # Create a Progressive Rollout service agent
    gcloud beta services identity create --service=progressiverollout.googleapis.com  --folder=FOLDER_NUMBER
    

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

    组织

    # Create an OS config service agent
    gcloud beta services identity create --service=osconfig.googleapis.com --organization=ORGANIZATION_NUMBER
    
    # Create a Progressive Rollout service agent
    gcloud beta services identity create --service=progressiverollout.googleapis.com  --organization=ORGANIZATION_NUMBER
    

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

向服务代理授予 IAM 角色

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

项目

# Grant the required role to the OS config rollout service agent
 gcloud projects add-iam-policy-binding PROJECT_ID \
 --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig-rollout.iam.gserviceaccount.com" \
 --role="roles/osconfig.rolloutServiceAgent"

 # Grant the required role to the OS config service agent
 gcloud projects add-iam-policy-binding PROJECT_ID \
 --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
 --role="roles/osconfig.serviceAgent"

 # Grant the required role to the Progressive Rollout service agent
 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。

文件夹

# Grant the required role to the OS config rollout service agent
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"

# Grant the required role to the OS config service agent
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"

# Grant the required role to the Progressive Rollout service agent
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。

组织

# Grant the required role to the OS config rollout service agent
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"

 # Grant the required role to the OS config service agent
 gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \
 --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com" \
 --role="roles/osconfig.serviceAgent"

 # Grant the required role to the Progressive Rollout service agent
 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。

后续步骤