2016-02-09 47 views
1

我在Google Apps脚本中使用带有服务帐户授权的Google Cloud Resource Manager API。在该计划中,我有兴趣更新开发者控制台项目的角色。Google云资源管理器API - 授予用户所有者角色

具体而言,我试图将开发者控制台项目的所有者更改为编辑器,并将其他用户更改为所有者。这一点,我相信,在HTTP请求负载而言会是什么样子:

// before (taken from response of getIamPolicy REST call) 
{ 
    "bindings": [{ 
      "role": "roles/owner", 
      "members": ["user:[email protected]"] 
    }], 
    "version": "0", 
    "etag": "acbqwcada=" 
} 

// after (modified policy) used in setIamPolicy REST call 
{ 
    "bindings": [{ 
      "role": "roles/owner", 
      "members": ["user:[email protected]"] 
    }, 
    { 
      "role": "roles/editor", 
      "members": ["user:[email protected]"] 
    }], 
    "version": "0", 
    "etag": "acbqwcada=" 
} 

几件事我观察到:

  • 当改变当前所有者(用户电子邮件)编辑和添加新用户(用户电子邮件)API调用正在返回SOLO_MUST_INVITE_OWNERS错误。在这里,我冒充服务帐户作为项目的初始拥有者,并具有所有必需的域宽访问权限

  • 但是,当我在Google API Explorer中使用相同的有效内容进行相同的调用时,它的工作正常!

  • Google Cloud和Identity Management文档似乎令人困惑。它说在一个点"Cloud Resource Manager IAM methods only support granting the owner role to user and serviceAccount",而在另一个点"A user cannot be granted owner access using setIamPolicy(). The user must be granted the owner role using the Cloud Platform Console and he must explicitly accept the invitation." - 我想知道是否有任何其他方式来设置策略比setIamPolicy()?

回答

0

云资源管理器API不支持通过setIamPolicy添加所有者,see the documentation on setIamPolicy

添加为所有者,用户必须通过云平台 控制台邀请,并且必须接受邀请。

您邀请[email protected],他们已经接受后(他们会出现在云平台上的控制台项目的所有者,也为owner成员具有约束力的getIamPolicy返回)可以使setIamPolicy致电[email protected]致电editor

+0

在此[doc](https://cloud.google.com/iam/docs/managing-policies)中,其提及的“云资源管理器IAM方法仅支持将所有者角色授予用户和serviceAccount”。 – Surya

+0

只有用户或服务帐户可以是项目的所有者(意指只有“user:foo @ ...”和“serviceAccount:bar @ ...”是“所有者”绑定中的受支持成员),但CRM API目前不支持使用'setIamPolicy'来使它们成为所有者。目前,唯一的方法就是通过Cloud Platform控制台。 – Zack

相关问题