在公开的Google Cloud Platform存储存储桶上排除storage.bucket.list权限

85次阅读
没有评论

问题描述

在使用Google Cloud Platform(GCP)存储桶时,希望在不授予storage.bucket.list权限的情况下,配置一个公开的存储桶。他尝试创建一个基于“Storage Object Viewer”角色的自定义角色,并删除了storage.bucket.list权限。但在更新权限时遇到了错误。

解决方案

请注意以下操作可能会因版本差异而有所不同,执行前务必备份。

方案1:使用CLI(gcloud和gsutil)进行自定义角色配置

以下是一个使用GCP云Shell和CLI工具(gcloud和gsutil)来配置自定义角色的过程,以取代现有的标准roles/storage.objectViewer在allUsers上的权限。

  1. 创建新角色: 创建一个新的自定义角色,并定义您所需的自定义权限。

创建一个新的YAML文件,用于存储新角色的配置:

shell
vi custom_role.yaml

custom_role.yaml文件中添加新角色的配置,例如:

yaml
title: "storageobjectviewer.nolist"
description: "Storage Object Viewer Role without source objects list"
stage: "ALPHA"
includedPermissions:
- resourcemanager.projects.get
- storage.objects.get

使用gcloud命令在GCP中创建新角色:

shell
gcloud iam roles create storageobjectviewer.nolist --project=[YOUR PROJECT] --file=custom_role.yaml

  1. 获取当前权限: 将存储桶的当前权限下载到本地文件:

shell
gsutil iam get gs://[YOUR BUCKET] > perms.txt

  1. 更新权限: 使用新角色更新权限。在perms.txt文件中,找到适用于allUsers的权限部分,并将角色更改为新创建的自定义角色:

json
{
"members": [
"allUsers"
],
"role": "projects/[YOUR PROJECT]/roles/storageobjectviewer.nolist"
}

使用以下命令将新权限应用到存储桶:

shell
gsutil iam set perms.txt gs://[YOUR BUCKET]

  1. 验证更改: 使用以下命令验证新配置是否生效:

shell
gsutil iam get gs://[YOUR BUCKET]

您还可以在GCP控制台中查看存储桶的权限和IAM角色配置。

方案2:使用UI进行配置

如果您更喜欢通过GCP控制台UI进行操作,可以在以下位置配置存储桶的权限:

  1. 进入GCP控制台并选择您的项目。
  2. 找到并打开您要配置的存储桶。
  3. 导航到“权限”或“IAM”选项卡,查找allUsers的权限设置。
  4. 将现有的roles/storage.objectViewer更改为您创建的自定义角色,以删除storage.bucket.list权限。
  5. 确认更改。

请注意,无论您选择使用CLI还是UI,最终目标都是将新的自定义角色配置应用于存储桶,并确保已删除storage.bucket.list权限,从而实现公开存储桶的配置。

希望这些解决方案对您有所帮助!如需进一步了解有关自定义角色和权限配置的信息,您可以查阅GCP文档中提供的相关链接。

正文完