本页面介绍了如何使用存储桶锁定功能,包括使用保留政策以及将其永久地锁定在存储桶上。
准备工作
请确保您已完成以下部分中的步骤,然后才能使用存储桶锁定功能。
获取所需角色
如需获得使用存储桶锁定所需的权限,请让您的管理员为您授予存储桶的 Storage Admin (roles/storage.admin
) 角色。此预定义角色可提供使用存储桶锁定所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.buckets.get
storage.buckets.list
- 仅当您计划使用 Google Cloud 控制台执行本页面上的任务时,才需要此权限。
storage.buckets.update
您也可以使用自定义角色来获取这些权限。
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。
在存储桶上设置保留政策
如需在存储桶上添加、修改或移除保留政策,请执行以下操作:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击要更改保留政策的存储桶的名称。
选择页面顶部附近的保护标签页。
在保留政策部分中,设置保留政策:
如果当前没有适用于存储桶的保留政策,请点击 add_box 设置保留政策链接。选择保留期限的时间单位和时长。
如果某个保留政策当前应用于存储桶,它会显示在该部分中。点击修改以修改保留期限,或点击删除以完全移除保留政策。
如需了解 Google Cloud 控制台如何在不同时间单位之间进行转换,请参阅保留期限。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
使用带有相应标志的 gcloud storage buckets update
命令:
gcloud storage buckets update gs://BUCKET_NAME FLAG
其中:
BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。FLAG
是存储桶的保留期限所需的设置。请采用以下某种格式:--retention-period
和保留期限(如果要添加或更改保留政策)。例如--retention-period=1d43200s
。--clear-retention-period
(如果要移除存储桶上的保留政策)。
如果成功,响应将如下所示:
Updating gs://my-bucket/... Completed 1
客户端库
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
标头生成访问令牌。创建一个包含以下信息的 JSON 文件:
{ "retentionPolicy": { "retentionPeriod": "TIME_IN_SECONDS" } }
其中
TIME_IN_SECONDS
是存储桶中的对象必须保留的时长(以秒为单位)。例如2678400
。如需了解系统如何以秒为单位来计量不同的时间单位,请参阅 保留期限。要从存储桶中移除保留政策,请在 JSON 文件中使用以下内容:
{ "retentionPolicy": null }
使用
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=retentionPolicy"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的 JSON 文件的路径。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
XML API
XML API 不能用于在现有存储桶上设置或移除保留政策。它只能用于为新存储桶设置保留政策。
锁定存储桶
要锁定存储桶并永久限制对存储桶保留政策的修改,请执行以下操作:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击要锁定保留政策的存储桶的名称。
选择页面顶部附近的保护标签页。
在保留政策部分,点击锁定按钮。
此时将出现锁定保留政策吗?对话框。
阅读永久说明。
在“存储桶名称”文本框中,键入存储桶的名称。
点击锁定政策。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
使用带有 --lock-retention-period
标志的 gcloud storage buckets update
命令:
gcloud storage buckets update gs://BUCKET_NAME --lock-retention-period
其中 BUCKET_NAME
是相关存储桶的名称,例如 my-bucket
。
如果成功,响应类似于以下示例:
Updating gs://my-bucket/... Completed 1
客户端库
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
标头生成访问令牌。使用
cURL
,通过POST
Bucket 请求调用 JSON API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/lockRetentionPolicy?ifMetagenerationMatch=BUCKET_METAGENERATION_NUMBER"
其中:
BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。BUCKET_METAGENERATION_NUMBER
是存储桶的 metageneration 值,例如8
。通过GET
Bucket 请求调用 JSON API,您可以找到存储桶的 metageneration 值。
XML API
您不能使用 XML API 来锁定存储桶。 请改用其他 Cloud Storage 工具,例如 Google Cloud 控制台。
查看存储桶的保留政策和锁定状态
要查看在存储桶上设置了什么保留政策以及是否该保留政策已锁定,请执行以下操作:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
点击您要查看其状态的存储桶的名称。
如果存储桶具有保留政策,则保留期限会显示在该存储桶的保护字段中。如果保留政策未锁定,则保留期限旁边会出现一个处于解锁状态的锁形图标。如果保留政策被锁定,则保留期限旁边会出现一个处于锁定状态的锁形图标。
命令行
使用带有 --format
标志的 gcloud storage buckets describe
命令:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(retention_policy)"
其中 BUCKET_NAME
是您要查看保留政策的存储桶的名称。例如 my-bucket
。
如果成功并且存储桶存在保留政策,则响应类似于以下内容:
retention_policy: effectiveTime: '2022-10-04T18:51:22.161000+00:00' retentionPeriod: '129600'
如果成功且存储桶不存在保留政策,则响应类似于以下内容:
null
客户端库
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
标头生成访问令牌。使用
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=retentionPolicy"
其中
BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。如果存储桶上设置了保留政策,则响应类似于以下示例:
{ "retentionPolicy": { "retentionPeriod": "TIME_IN_SECONDS", "effectiveTime": "DATETIME", "isLocked": "BOOLEAN" }, }
XML API
XML API 不能用于查看存储桶上的保留政策。请改用其他 Cloud Storage 工具,例如 Google Cloud 控制台。