如何添加回 gcs 存储桶的默认 "Viewers of project" 权限?

How do I add back the default "Viewers of project" permission on a gcs bucket?

我用这个 terraform 资源做了一个桶 public

resource "google_storage_bucket_iam_policy" "sdfsdf" {
  bucket = "sdfzdfsdf"
  policy_data = jsonencode({
    bindings = [
      {
        members = [
          "allUsers",
        ]
        role = "roles/storage.objectViewer"
      },
    ]
  })
}

这样做之后,我立即无法再查看存储桶的权限。我必须给我的用户 Storage Admin。

我注意到当我在 UI 中创建一个新的存储桶时添加了这个权限:

`Viewers of project: my-project` 
Storage Legacy Bucket Reader
Storage Legacy Object Reader

我的配置删除了那个烫发。我如何将其添加回去?什么是 Viewers of project: my-project?此成员绑定在策略中是什么样的 json?

对覆盖|设置资源策略的命令非常小心。

[如您所见]这些命令 替换 策略;他们不会将现有政策与现有政策相结合。

使用 add-iam-policy-binding 的等价物几乎总是更安全。

我假设存储桶没有特定的默认策略(因为我假设它们会从项目继承),但它们(似乎)确实如此:

{
  "bindings": [
    {
      "members": [
        "projectEditor:[[PROJECT_ID]]",
        "projectOwner:[[PROJECT_ID]]"
      ],
      "role": "roles/storage.legacyBucketOwner"
    },
    {
      "members": [
        "projectViewer:[[PROJECT_ID]]"
      ],
      "role": "roles/storage.legacyBucketReader"
    },
    {
      "members": [
        "projectEditor:[[PROJECT_ID]]",
        "projectOwner:[[PROJECT_ID]]"
      ],
      "role": "roles/storage.legacyObjectOwner"
    },
    {
      "members": [
        "projectViewer:[[PROJECT_ID]]"
      ],
      "role": "roles/storage.legacyObjectReader"
    }
  ],
]

同样奇怪的是,我以前从未遇到过这些 member 类型,例如projectEditor:[[PROJECT-ID]]

我本以为应该发生的是您的用户继承了项目的策略。

您的身份在拥有该存储桶的项目中扮演什么角色?

奇怪的是,您从存储桶中删除了您的角色绑定(使用上述命令),但您能够恢复它们;您必须继承足够的权限,所以我很惊讶您丢失(继承的)权限但能够将它们还给您自己。

可能(但见上文),如果您还没有 OwnerEditor(因为这些角色对云存储具有固有权限),您可以将您的身份绑定到roles/storage.admin 在项目层面给自己一个未来的出路但是......再次......你是如何恢复这个角色的?你确定你真的丢了?