如何还原存储桶的权限

时间:2020-06-10 02:18:14

标签: google-cloud-platform google-cloud-storage bucket

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

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

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

更新

为澄清起见,我拥有项目和存储桶。没有其他用户有权访问。 按照@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&Admin部分中的“策略疑难解答”。它显示以下内容:

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

与项目关联的“角色”在Storage Admin组中包含权限(请参阅GCP控制台的IAM&Admin部分中的Roles小节)。即应该启用了诸如storage.objects.delete之类的权限,但策略疑难解答显示该权限未被授予。

1 个答案:

答案 0 :(得分:1)

here的详细解释是,如果您是存储分区的所有者-或至少有权访问拥有该存储分区的帐户-您应该能够修改存储分区的ACL并添加权限恢复原状。

以所有者身份登录后,只需运行命令gsutil acl set -R public-read gs://bucketName即可为用户提供对存储桶的公共读取。您还可以检查确切的默认权限here。如果您不确定哪个帐户是Owner,请运行以下命令-如here所示-该命令将返回所有具有权限的帐户,包括其中将提及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"
}

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

相关问题