在配置中设置访问权限控制

要控制对 Google Cloud 中资源的访问权限,请使用 Identity and Access Management (IAM)。您可以使用 IAM 设置权限,指定对项目中的哪些资源具有哪种访问权限。如需 IAM 的说明,请参阅 IAM 概览

部署资源时,您还可通过在配置中提前设置 IAM 政策来控制谁可以访问这些资源。例如,如果您计划创建可由特定用户管理的 Pub/Sub 主题,可以通过在配置中指定 IAM 政策将其表达给 Deployment Manager。创建或更新部署时,Deployment Manager 将调用 IAM API 以在资源上设置适当的权限。

准备工作

在 Deployment Manager 中使用 IAM 政策

IAM 政策是用户及其角色的集合。您可以使用基本角色或预定义角色在项目级层设置 IAM 政策。部分服务(如 Cloud Pub/Sub)也支持在资源层级设置 IAM 政策。

如果某项服务不支持在资源层级设置 IAM 政策,Deployment Manager 将返回 NO_METHOD_TO_UPDATE_ACCESS_CONTROL 错误。

如需了解角色以及可以应用这些角色的资源列表,请参阅了解角色

授予 Deployment Manager 设置 IAM 政策的权限

Deployment Manager 使用 Google API 服务账号代表您调用其他 Google API 和管理 Google Cloud 资源。您必须为项目的 Google API 服务账号授予基本 roles/owner 角色,以便此账号可以应用您在配置中定义的 IAM 政策。

  1. 在项目的 Google Cloud 控制台中,前往 IAM 页面。

    转到 IAM 页面

  2. 如果出现提示,请从列表中选择您的项目。
  3. 查找电子邮件地址采用以下格式的 Google API 服务账号

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. 授予 API 服务账号 roles/owner 角色:

    控制台

    1. 在 Google Cloud 控制台中,展开 Google API 服务账号的角色下拉列表,然后选择项目 > 所有者
    2. 点击保存以保存所做更改。

    gcloud

    使用 Google Cloud CLI 向项目的 IAM 政策添加绑定:

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
        --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/owner

    其中:

    • [PROJECT_ID] 是项目的 ID。
    • [SERVICE_ACCOUNT_EMAIL] 是服务账号的电子邮件地址。

    例如:

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/owner

    API

    在 API 中,对以下网址发出 POST 请求,其中 [PROJECT_ID] 是项目的 ID:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
    

    请求主体应该包含您要应用于该项目的绑定列表。roles/owner 角色应该是绑定的一部分。例如:

    {
        "policy": {
            "version": "0",
            "bindings": [
                {
                    "role": "roles/owner",
                    "members": [
                        "user:example@gmail.com",
                        "serviceAccount:123456789012@cloudservices.gserviceaccount.com"
                    ]
                }
            ]
        }
    }
    

在配置中设置 IAM 政策

接下来,在配置或模板中,您可以按照以下说明设置 IAM 政策:

  1. accessControl 部分添加到您想应用访问权限控制政策的每项资源的顶层配置中。

  2. 为资源指定所需的 gcpIamPolicy。每个 IAM 政策都可能包含一系列绑定。每个绑定会将一系列成员绑定到一个角色。

    如果您使用 accessControl 管理服务账号,请详细了解如何管理服务账号

例如,以下 accessControl 部分添加了将这些角色授予用户的绑定:

用户 角色
alice@example.com roles/pubsub.editor
  • my-other-app@appspot.gserviceaccount.com
  • jane@example.com
roles/pubsub.publisher
resources:
- name: a-new-pubsub-topic
  type: pubsub.v1.topic
  properties:
    ...

  accessControl:
    gcpIamPolicy:
      bindings:
      - role: roles/pubsub.editor
        members:
        - "user:alice@example.com"
      - role: roles/pubsub.publisher
        members:
        - "user:jane@example.com"
        - "serviceAccount:my-other-app@appspot.gserviceaccount.com"

如需详细了解 IAM 政策,请阅读 IAM 文档