转移 Cloud Storage 代管式文件夹

Cloud Storage 代管式文件夹提供对 Cloud Storage 存储分区中的对象的精细访问权限控制。您可以在使用通用存储桶级访问权限的存储桶中的文件夹级层设置权限。使用 Storage Transfer Service 在 Cloud Storage 存储分区之间传输对象时,可以保留这些托管文件夹权限。

限制

以下限制适用于代管式文件夹的转移:

  • 您必须使用 REST API 创建转移作业。
  • 目标存储桶必须使用统一存储桶级访问权限
  • 托管文件夹转移不支持 deleteObjectsUniqueInSinkdeleteObjectsFromSourceAfterTransfer 选项。
  • 使用存储桶资源类型 (storage.googleapis.com/Bucket) 或对象资源类型 (storage.googleapis.com/Object) 的目标存储桶或其项目上不能有 IAM Conditions。如果项目中的任意存储桶具有使用上述任何资源类型的 IAM 条件,则即使稍后移除该条件,也无法将代管文件夹转移到该项目中的任何存储桶。
  • 不支持事件驱动型转移。
  • 不支持清单传输。
  • Cloud Logging 不会记录代管式文件夹操作。支持对对象进行日志记录。

IAM 权限

Google 代管式服务帐号需要以下 Google Cloud Identity and Access Management (IAM) 权限。

在源存储桶中:

  • storage.managedFolders.getIamPolicy
  • storage.managedFolders.list
  • storage.managedFolders.get

在目标存储桶中:

  • storage.managedFolders.setIamPolicy
  • storage.managedFolders.list
  • storage.managedFolders.create

除 Storage Transfer Service 所需标准权限外,

如需授予所需的托管文件夹权限,请创建一个仅包含所需权限的自定义角色,并在存储桶级(推荐)或项目级将该角色分配给 Google 代管式服务帐号。如需了解详情,请参阅安全注意事项

创建代管式文件夹传输作业

如需创建包含托管文件夹的转移作业,请在 transferSpec 中指定 managedFolderTransferEnabled: true

POST https://storagetransfer.googleapis.com/v1/transferJobs
{
  "name": "transferjobs/NAME",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "gcsDataSource": {
      "bucketName": "SOURCE_BUCKET",
      "managedFolderTransferEnabled": true
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    }
  },
  "status": "ENABLED"
}

如需详细了解如何使用 REST API 创建转移作业,请参阅创建转移作业,或参阅 transferJobs.create 参考文档

安全注意事项

将代管式文件夹权限授予 Google 代管式服务帐号后,该帐号便可修改目标文件夹或所有文件夹的 IAM 政策(如果在项目级授予此角色)。这可能会带来安全风险:具有作业修改权限的用户可利用这一点向恶意操作者授予权限。为了降低此风险,请考虑隔离专用 Google Cloud 项目中的代管式文件夹传输。

问题排查

如需有关创建和管理代管式文件夹的帮助,请参阅问题排查页面。