我已经使用命令创建了服务帐户
gcloud iam service-accounts create test-sa --display-name "TEST SA"
然后我继续在GCS存储桶上为该服务帐户授予管理员权限。
gsutil iam ch serviceAccount:test-sa@<PROJECT>.iam.gserviceaccount.com:admin gs://<BUCKET>
现在我想要一种方法来检查授予服务帐户的角色/权限。
一种方法是做类似的事情:
gcloud projects get-iam-policy <PROJECT> \
--flatten="bindings[].members" \
--format='table(bindings.role)' \
--filter="bindings.members: serviceAccount:test-sa@<PROJECT>.iam.gserviceaccount.com"
但是以上命令返回空。
但是如果获得了存储桶的ACL,则可以清楚地看到存储桶的成员和角色。
gsutil iam get gs://<BUCKET>
{
"bindings": [
{
"members": [
"serviceAccount:test-sa@<PROJECT>.iam.gserviceaccount.com"
],
"role": "roles/storage.admin"
},
{
"members": [
"projectEditor:<PROJECT>",
"projectOwner:<PROJECT>"
],
"role": "roles/storage.legacyBucketOwner"
},
{
"members": [
"projectViewer:<PROJECT>"
],
"role": "roles/storage.legacyBucketReader"
}
],
"etag": "CAI="
}
有人可以指导我如何查看与服务帐户相关联的存储桶/权限,而不是相反的方式吗?
您可以在项目/文件夹/组织等资源以及存储桶,对象,计算引擎实例,KMS密钥等单个资源上分配权限。没有一个命令可以检查所有内容。
当您在存储桶ACL级别上授予许可,而不使用服务帐户iam-binding时,gcloud projects get-iam-policy
命令不会返回此权限。您只能通过查询存储区ACL来获取此信息。
这里的问题是,您通过将权限直接分配给存储桶(存储桶级角色),然后在项目级别进行检查,将项目级角色与存储桶级角色混合在一起。您可以找到有关此over here的更多信息。