查找与存储桶关联的服务帐户的权限

我已经使用命令创建了一个服务帐户

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="
}

有人可以指导我如何查看与服务帐户关联的存储桶/权限,而不是相反的方式吗?

chenyd214 回答:查找与存储桶关联的服务帐户的权限

您可以在项目/文件夹/组织等资源以及存储桶,对象,计算引擎实例,KMS密钥等单个资源上分配权限。没有一个命令可以检查所有内容。

在项目级别,权限是项目范围的。在资源级别(例如对象),仅影响该对象。您将需要检查所有内容以确切了解IAM成员在何处/何处拥有权限。

,

由于您要在存储桶ACL级别上授予权限,而不使用服务帐户iam-binding, gcloud projects get-iam-policy命令不会返回此权限。 您只能通过查询存储区ACL来获取此信息。

,

这里的问题是,您通过将权限直接分配给存储桶(存储桶级角色),然后在项目级别进行检查,将项目级角色与存储桶级角色混合在一起。您可以找到有关此over here的更多信息。

这就是为什么在检查项目(云项目get-iam-policy)或存储桶(gsutil iam获取gs://)时得到不同结果的原因。

您应该坚持使用存储桶级角色或项目级角色,避免像开始混合它们那样混用两个角色,要弄清每个用户过去和现在的角色会很棘手。

根据您计划管理的存储桶数,您可以更轻松地坚持存储桶级角色,并在检查用户权限时仅遍历存储桶列表,因为您可以轻松地做到这一点Cloud SDK的运行周期比较短,例如:

for i in $(cat bucket-list.txt)
do
    gsutil iam get gs://$i
done

希望您觉得这有用。

本文链接:https://www.f2er.com/3006394.html

大家都在问