如何恢复存储桶的权限



我刚刚在默认项目"我的第一个项目"下创建了一个新存储桶。

我不小心删除了存储桶上的所有权限。是否可以恢复默认权限?

我不需要存储桶,因此可以将其删除,但我也没有权限这样做。

更新

澄清一下,我拥有项目和存储桶。其他用户不应具有访问权限。 根据@gso_gabriel的建议,我尝试了以下方法:

我可以列出存储桶中的对象:

> gsutil ls -r gs://my-bucket-name/
gs://my-bucket-name/name-of-my-file

我无法更改 ACL:

> gsutil defacl set public-read gs://my-bucket-name/
Setting default object ACL on gs://my-bucket-name/...
AccessDeniedException: 403 my-email-address does not have storage.buckets.update access to the Google Cloud Storage bucket.
> gsutil acl set -R public-read gs://my-bucket-name/
Setting ACL on gs://my-bucket-name/name-of-my-file...
AccessDeniedException: 403 my-email-address does not have storage.objects.update access to the Google Cloud Storage object.

我认为没有ACL(见最后一行(:

> gsutil ls -L gs://my-bucket-name/
gs://my-bucket-name/name-of-my-file
Creation time:          Wed, 10 Jun 2020 01:31:20 GMT
Update time:            Wed, 10 Jun 2020 01:31:20 GMT
Storage class:          STANDARD
Content-Length:         514758
Content-Type:           application/octet-stream
Hash (crc32c):          AD4ziA==
Hash (md5):             W3aLFrdB/eF85IZux9UVfQ==
ETag:                   CIPc1uiM9ukCEAE=
Generation:             1591752680386051
Metageneration:         1
ACL:                    []

更新 2

@gso_gabriel建议的 gcloud 命令的输出是:

> gcloud projects get-iam-policy my_project_ID
bindings:
- members:
- user:my-email-address
role: roles/owner
etag: BwWnsC5jgkw=
version: 1

我还尝试了 GCP 控制台的 IAM 和管理员部分中的"策略疑难解答"。它显示了以下内容:

  • 我可以在项目上创建存储桶和对象,例如已启用 storage.buckets.create
  • 我无法删除项目中的存储桶和对象,例如 storage.buckets.delete 被禁用
  • 我无法获取项目上的存储桶和对象的 IAM 策略,例如 storage.buckets.getIamPolicy 被禁用

与项目关联的"角色"包括存储管理员组中的权限(请参阅 GCP 控制台的 IAM 和管理员部分中的角色子部分(。 即 storage.objects.delete 等权限应该已启用,但策略疑难解答显示未授予这些权限。

正如此处所解释的那样,如果您是存储桶的所有者 - 或者至少有权访问拥有它的账户 - 您应该能够修改它的 ACL 并添加权限。

以所有者身份登录后,您只需运行命令gsutil acl set -R public-read gs://bucketName即可为用户提供对存储桶的公共读取。您还可以在此处检查完全默认的权限。如果您不确定哪个帐户是Owner,请运行以下命令 - 如此处所示 - 它将返回所有具有权限的帐户,包括一个将提及Owner的帐户。

gsutil ls -L gs://your-bucket/your-object

回报应该是这样的。

{
"email": "your-service-account@appspot.gserviceaccount.com",
"entity": "user-your-service-account@appspot.gserviceaccount.com",
"role": "OWNER"
}

让我知道这些信息是否对您有帮助!

最新更新