如何使用 Google Cloud Resource Manager 包为项目设置 IAM 策略

How to set IAM policy for a project using Google Cloud Resource Manager package

问题

我正在使用 google-cloud-resource-manager 创建项目。我想更新项目的 IAM 策略以向所有者角色添加新用户。

这是我的做法:

async def set_iam_policy(project_id, user_id):
    client = ProjectsAsyncClient()
    project_ressource = 'projects/{}'.format(project_id)
    iam_policy : Policy = await client.get_iam_policy(resource=project_ressource)
    owner : Binding = iam_policy.bindings[0]
    owner.members.append('user:{}'.format(user_id))
    updated_policy =await client.set_iam_policy(resource=project_ressource)

解释

  1. 我得到了你的项目 IAM 政策
  2. 我编辑给定的策略以将指定用户添加为所有者
  3. 我尝试更新给定项目的 IAM 策略,它在这里中断

set_iam_policy 将资源字符串作为参数(例如 projects/myprojectid 但我无法将政策传递给这个对象,没有相应的字段。 我错过了什么吗?

文档

您可以找到与 set_iam_policy 函数关联的 documentation and the source code

我想你想要这样的东西:

request = SetIamPolicyRequest(
    resource=project_ressource,
    policy=iam_policy,
)

updated_policy = await client.set_iam_policy(
   resource=project_ressource,
   request=request,
)

NOTE retained typo in project_ressource

NOTE You should not assume that bindings[0] corresponds to roles/owners.