本页面介绍了如何对 Cloud Storage 的存储桶启用和停用统一存储桶级访问权限,以及如何检查该功能的状态。
所需的角色
如需获得设置和管理存储桶的统一存储桶级访问权限所需的权限,请让管理员向您授予存储桶的 Storage Admin (roles/storage.admin
) 角色。此预定义角色包含设置和管理统一存储桶级访问权限所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.buckets.get
storage.buckets.list
- 仅当您计划使用 Google Cloud 控制台执行本页面上的任务时,才需要此权限。
storage.buckets.update
您也可以使用自定义角色来获取这些权限。
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。
检查 ACL 使用情况
启用统一存储桶级访问权限之前,请使用 Cloud Monitoring 确保您的存储桶没有将 ACL 用于任何工作流。如需了解详情,请参阅检查对象 ACL 的使用情况。
控制台
如需使用 Metrics Explorer 查看受监控资源的指标,请执行以下操作:
-
在 Google Cloud 控制台中,转到 leaderboard Metrics Explorer 页面:
如果您使用搜索栏查找此页面,请选择子标题为监控的结果。
- 在指标元素中,展开选择指标菜单,在过滤栏中输入
ACLs usage
,然后使用子菜单选择一个特定资源类型和指标:- 在活跃资源菜单中,选择 GCS 存储桶。
- 在活跃指标类别菜单中,选择 Authz。
- 在活跃指标菜单中,选择 ACL 用量。
- 点击应用。
- 配置数据的查看方式。 例如,如需按 ACL 操作查看数据,则对于聚合元素,请将第一个菜单设置为总和,并将第二个菜单设置为 acl_operation。
如需详细了解如何配置图表,请参阅使用 Metrics Explorer 时选择指标。
如需查看可用于 Cloud Storage 的指标的完整列表,请参阅 storage
。如需了解时间序列,请参阅指标、时间序列和资源。
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。使用
cURL
调用 Monitoring JSON API:curl \ 'https://monitoring.googleapis.com/v3/projects/PROJECT_ID/timeSeries?filter=metric.type%20%3D%20%22storage.googleapis.com%2Fauthz%2Facl_operations_count%22&interval.endTime=END_TIME&interval.startTime=START_TIME' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' \ --header 'Accept: application/json'
其中:
PROJECT_ID
是您要查看其 ACL 使用情况的项目 ID 或编号,例如my-project
。END_TIME
是您要查看其 ACL 使用情况的时间范围的结束时间,例如2019-11-02T15:01:23.045123456Z
。START_TIME
是您要查看其 ACL 使用情况的时间范围的开始时间,例如2016-10-02T15:01:23.045123456Z
。
如果请求返回空对象 {}
,则说明您的项目最近没有使用 ACL。
设置统一存储桶级访问权限
如需对存储桶启用或停用统一存储桶级访问权限,请按照以下说明操作:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,找到要启用或停用统一存储桶级访问权限的存储桶,然后点击其名称。
选择页面顶部附近的权限标签。
在名为访问权限控制的字段中,点击切换到链接。
在出现的菜单中,选择统一或精细。
点击保存。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
使用 gcloud storage buckets update
命令:
gcloud storage buckets update gs://BUCKET_NAME --STATE
其中:
BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。STATE
可以为uniform-bucket-level-access
以启用统一存储桶级访问权限,或者为no-uniform-bucket-level-access
以停用统一存储桶级访问权限。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用统一存储桶级访问权限:
以下示例在存储桶上禁用统一存储桶级访问权限:
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用统一存储桶级访问权限:
以下示例在存储桶上禁用统一存储桶级访问权限:
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用统一存储桶级访问权限:
以下示例在存储桶上禁用统一存储桶级访问权限:
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用统一存储桶级访问权限:
以下示例在存储桶上禁用统一存储桶级访问权限:
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用统一存储桶级访问权限:
以下示例在存储桶上禁用统一存储桶级访问权限:
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用统一存储桶级访问权限:
以下示例在存储桶上禁用统一存储桶级访问权限:
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用统一存储桶级访问权限:
以下示例在存储桶上禁用统一存储桶级访问权限:
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用统一存储桶级访问权限:
以下示例在存储桶上禁用统一存储桶级访问权限:
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。创建一个包含以下信息的 JSON 文件:
{ "iamConfiguration": { "uniformBucketLevelAccess": { "enabled": STATE } } }
其中 STATE 为
true
或false
。使用
cURL
,通过PATCH
Bucket 请求调用 JSON API:curl -X PATCH --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=iamConfiguration"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的路径。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
XML API
XML API 不能用于处理统一存储桶级访问权限。请改用其他 Cloud Storage 工具之一,例如 gcloud CLI。
查看统一存储桶级访问权限状态
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
点击您要查看其状态的存储桶的名称。
点击配置标签页。
您可以在访问权限控制字段中找到存储桶的统一存储桶级访问权限状态。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
使用带有 --format
标志的 gcloud storage buckets describe
命令:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(uniform_bucket_level_access)"
其中 BUCKET_NAME
是相关存储桶的名称,例如 my-bucket
。
如果成功,响应将如下所示:
uniform_bucket_level_access: true
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。使用
cURL
,通过包含所需fields
的GET
Bucket 请求调用 JSON API:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=iamConfiguration"
其中
BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。如果存储桶启用了统一存储桶级访问权限,则响应将类似于如下所示:
{ "iamConfiguration": { "uniformBucketLevelAccess": { "enabled": true, "lockedTime": "LOCK_DATE" } } }
XML API
XML API 不能用于处理统一存储桶级访问权限。请改用其他 Cloud Storage 工具之一,例如 gcloud CLI。