【问题标题】:can't add 'allUsers' to GCP project无法将“allUsers”添加到 GCP 项目
【发布时间】:2018-04-28 19:23:44
【问题描述】:
我有一个 GCP 项目,仅出于测试目的,我想将权限授予“allUsers”。但是当我尝试添加时,我收到错误Members of type allUsers and allAuthenticatedUsers cannot be added to this resource。有人可以帮助我了解我做错了什么或错过了什么吗?谢谢
【问题讨论】:
标签:
google-cloud-platform
google-authentication
【解决方案1】:
检查docs。
项目不支持将 allUsers 和 allAuthenticatedUsers 作为策略绑定中的成员。
【解决方案2】:
用于授予 allUser 或 allAuthenticatedUser 访问某些 Google Cloud 资源(例如存储桶)的 member types 权限不能作为 project roles 应用于项目。
Google Cloud 项目提供不同级别的访问控制,这些访问控制与用于存储分区的不同,如以下Access Control for Projects using IAM 文档中所述。
Google Cloud 中有一个三级 policy hierarchy,将项目和资源作为单独的实体。在此层次结构中,策略是可继承的,但确实具有不可互换的不同访问控制模型。
您可以向 Google Cloud 项目授予以下权限:
roles/owner - 对所有资源的完全访问权限。
roles/editor - 对所有资源的编辑权限。
roles/viewer - 对所有资源的读取权限。
角色/浏览器 - 访问以浏览项目中的资源。
如上所述,可以使用成员类型在资源级别微调上述项目权限。
【解决方案3】:
有时,您可能正在尝试使用已在 Web UI 和控制面板中不再可用但实际上仍为无法升级的用户提供静默支持的已弃用功能。
为allUsers 授予角色是其中一种情况,您可以在智能事物社区的this 回答中找到此类情况的示例。
关于:
有人可以帮助我了解我做错了什么或错过了什么吗?
您正在尝试使用强烈建议不要使用的不安全权限。这是错误的,某些 Web 用户界面中不可用是有原因的。但是,如果谷歌完全放弃这种支持,那么仍然依赖于这种支持但开发人员无法升级它们的物联网设备将变得无法操作,因此新用户不太可能看到这种可能性,因此谁在过去使用它将保持正常运行。
但是,如果您不幸删除了此类权限,并且现在您留下了许多 IoT 设备而无法发布 PubSub 主题(并且升级设备不是一个可行的选择),那么如果您遵循智能事物社区中提到的答案想要允许发布项目foo 的主题bar,那么您可以使用设置的IAM 策略API 为allUsers 应用角色roles/pubsub.publisher
资源将是:projects/foo/topic/bar
政策对象将是:
{
"policy": {
"bindings": [
{
"role": "roles/pubsub.publisher",
"members": [
"allUsers"
]
}
]
}
}
【解决方案4】:
尝试删除 GCP 云存储分区权限中的阻止公共访问。这允许对单个对象进行精细控制。这样桶中的一个或多个对象就可以是公开的。
公共访问预防可防止您的组织或项目中的数据意外暴露给公众。当您对新的或现有的 Cloud Storage 资源实施公共访问保护时,您组织中的任何人都无法通过 IAM 政策或 ACL 公开数据。
有关更多信息,请参阅文档here
【解决方案5】:
转到您的存储桶并撤销公共访问权限,如下图所示。然后转到您的资源并添加权限 allUser
【解决方案6】:
禁用对公共访问的阻止
- 转到权限(配置右侧)
- 禁用公共访问防护。
- 然后再次尝试公开图像
它会工作的