使用 IAM,我尝试允许某些用户访问 API 并允许他们创建 OAuth 客户端凭据。是否有允许此操作的预定义角色?我不想使用项目编辑者的角色,因为我尝试仅允许访问必要的服务。
更具体地说,当用户在他们的项目中并转到“API 和服务“ > 凭证,在此页面上,用户收到此错误:
您无权查看 API 密钥、OAuth 客户端和服务帐号密钥。
我对 GCP 还很陌生,所以可能遗漏了一些简单的东西。不确定哪些信息会有帮助,但我会提供所使用的服务和为用户设置的 IAM 角色。
服务:
1.App Engine
2.数据存储
3.功能
4.源代码存储库
角色/权限:
1.App Engine 管理员
2.云功能开发人员
3.云数据存储所有者
4.服务帐户管理员
5.源存储库管理员
6.存储管理
谢谢。
答案1
所以我相信我已经找到了解决方案。在网上找不到预定义角色或任何答案后,我开始深入研究创建自定义角色。如果将来有人遇到此问题,以下是我所做的。
我进入了“项目设置”>“角色”>“创建角色”。然后,我创建了 2 个自定义角色,以下是我分配给它们的所有权限:
“自定义 API”
- 容器.apiServices.创建
- 容器.apiServices.删除
- 容器.apiServices.get
- 容器.apiServices.列表
- 容器.apiServices.update
- 容器.apiServices.updateStatus
- 服务使用.apiKeys.创建
- 服务使用情况.apiKeys.删除
- 服务使用.apiKeys.get
- serviceusage.apiKeys.getProjectForKey
- 服务使用情况.apiKeys.列表
- 服务使用情况.apiKeys.重新生成
- 服务使用.apiKeys.恢复
- 服务使用情况.apiKeys.update
“自定义客户端身份验证”
- 客户端身份验证配置.品牌.创建
- clientauthconfig.brands.删除
- 客户端身份验证配置.品牌.获取
- clientauthconfig.品牌列表
- 客户端身份验证配置.品牌.更新
- clientauthconfig.客户端.创建
- clientauthconfig.客户端.createSecret
- clientauthconfig.客户端.删除
- clientauthconfig.客户端.获取
- clientauthconfig.客户端.getWithSecret
- clientauthconfig.客户端列表
- clientauthconfig.客户端.listWithSecrets
- clientauthconfig.客户端.取消删除
- clientauthconfig.客户端.更新
*请注意,在撰写本文时,这些单独的权限处于“测试”状态,可能无法按预期工作。
答案2
我最近遇到了这个问题,发现向用户帐户添加以下权限应该可行:
- 浏览器
- 创建服务帐户
- 服务帐户令牌创建者
- 按照以下建议自定义角色1布莱斯
“自定义客户端身份验证”
- clientauthconfig.品牌.创建 clientauthconfig.品牌.删除
- clientauthconfig.品牌.获取 clientauthconfig.品牌.列表
- clientauthconfig.品牌.更新 clientauthconfig.客户端.创建
- clientauthconfig.客户端.createSecret clientauthconfig.客户端.delete
- clientauthconfig.客户端.获取 clientauthconfig.客户端.获取WithSecret
- clientauthconfig.客户端列表
- clientauthconfig.客户端.listWithSecrets
- clientauthconfig.客户端.取消删除 clientauthconfig.客户端.更新
请注意,通过进一步的调整,您也许能够将其降低到更少的权限。