传输 Cloud Storage 托管文件夹

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

限制

对受管文件夹的传输有以下限制:

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

IAM 权限

以下 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 政策,如果是在项目级授予角色,则还可以修改所有文件夹的 IAM 政策。这会带来安全风险:具有作业修改权限的用户可能会利用此漏洞向恶意行为者授予特权。为降低此风险,请考虑在专用 Google Cloud 项目中隔离受管理的文件夹传输。

问题排查

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