Public 存储桶要求用户登录

Public bucket requires user to be logged in

我有一个 GCP 存储桶,旨在供所有用户读取。此存储桶的用途是为网站托管图像。

我正在使用 uniform bucket-level access,并且我已经授予 allUsersallAuthenticatedUsers 访问存储桶的权限。

这里是 gsutil iam get 的输出(一些信息被编辑):

$ gsutil iam get gs://my-bucket
{
  "bindings": [
    {
      "members": [
        "user:admin@company.com"
      ],
      "role": "roles/storage.admin"
    },
    {
      "members": [
        "projectEditor:my-project",
        "projectOwner:my-project",
      ],
      "role": "roles/storage.legacyBucketOwner"
    },
    {
      "members": [
        "allAuthenticatedUsers",
        "allUsers",
        "projectViewer:my-project",
      ],
      "role": "roles/storage.legacyBucketReader"
    },
    {
      "members": [
        "user:admin@company.com"
      ],
      "role": "roles/storage.objectAdmin"
    },
    {
      "members": [
        "allAuthenticatedUsers",
        "allUsers",
      ],
      "role": "roles/storage.objectViewer"
    }
  ],
  "etag": "<redacted>"
}

请注意 allUsersallAuthenticatedUsers 具有 roles/storage.objectViewer 的作用。

但是,当我尝试访问这些对象之一时,我看到了一个登录页面。然后我可以以 任何用户 的身份登录并访问该对象。这几乎就像 GCP 忽略了 allUsers 指令并使用 allAuthenticatedUsers,但我不明白为什么它会那样做。

要访问该对象,我使用的是 URL,如下所示:

https://storage.cloud.google.com/bucket/path/to/file.png

尝试以下任何格式url在存储桶中形成对象以访问 没有登录

http(s)://storage.googleapis.com/<bucket>/<object>

http(s)://<bucket>.storage.googleapis.com/<object>