如何删除所有 Google Cloud Platform (GCP) 资源中的资源级权限? 例如,计算虚拟机实例可共享给另一个 GCP 用户,而无需分配 IAM 角色。有没有办法使用GCP SDK终端命令或GCP控制台来摆脱资源级权限?
我尝试了下面的终端命令,但不起作用
gcloud resource-manager members remove [email protected] --project=project_name --member-type="roles/viewer"
正如John Hanley在评论中指出的那样:
对于支持 IAM 策略的资源,您必须管理每一项。
这意味着:
gcloud
命令或 GCP Console 列出每个资源的当前 IAM 政策。例如,对于计算虚拟机实例,您将:
gcloud compute instances get-iam-policy INSTANCE_NAME --project=PROJECT_ID --format=json
通过创建排除要删除的用户或角色的修改后的 IAM 策略,从 IAM 策略中删除用户。
在文本编辑器中打开
policy.json
。您将看到一个带有多个绑定的 JSON 结构。每个绑定将一个角色与一组成员(用户、服务帐户等)相关联。members
列表中删除该用户。
例如,如果
[email protected]
具有roles/viewer
的角色,则找到并编辑相应的部分:
{
"bindings": [
{
"role": "roles/viewer",
"members": [
"user:[email protected]",
// other members
]
},
// other bindings
]
}
从
"user:[email protected]"
数组中删除 members
。
将新策略应用到资源。
gcloud compute instances set-iam-policy INSTANCE_NAME policy.json --project=PROJECT_ID
同样,您必须对每种资源类型和实例重复此过程,因为没有全局命令可以立即从所有资源中删除用户。