基于代理的转移权限

使用 Google Cloud 项目管理员(具有 resourcemanager.projects.setIamPolicy 权限的用户)向适当的用户和服务授予 Identity and Access Management (IAM) 权限或角色帐号。

只有向用户和服务帐号授予权限时才需要 Google Cloud 项目管理员帐号。启动转移作业无需该帐号。

如需详细了解如何授予 IAM 角色,请参阅授予、更改和撤消对资源的访问权限

如果您希望为 Storage Transfer Service 创建自定义角色,请参阅了解 IAM 自定义角色

管理员帐号

Storage Transfer Service 管理员帐号可以管理转移代理、设置带宽用量限额,还可以删除转移作业。

如需设置管理员帐号,请分配以下 IAM 权限和角色:

角色/权限 用途 备注
resourcemanager.projects.getIamPolicy 此权限用于确认 Google 管理的服务帐号是否具有转移所需的权限。 要授予此权限,请授予 Role Viewer (roles/iam.roleViewer) 预定义角色,或者创建具有此权限的自定义角色并授予自定义角色。
Storage Transfer Admin (roles/storagetransfer.admin) 在转移项目中启用管理操作,例如项目设置和代理监控。 如需查看授予的权限的详细列表,请参阅 Storage Transfer Service 预定义角色

用户帐号

Storage Transfer Service 用户帐号可用于创建和执行转移作业。这些帐号通常无权删除转移作业。

用户帐号可以是 Google Cloud 控制台用户,也可以是服务帐号。如果使用的是服务帐号,则将凭据传递给 Storage Transfer Service 的方法会因您使用的具体界面而异。

如需设置用户帐号,请为该帐号分配以下权限和角色:

角色/权限 用途 备注
resourcemanager.projects.getIamPolicy 用于确认 Google 管理的服务帐号是否具有转移所需的 Pub/Sub 权限。 要授予此权限,请授予 Role Viewer (roles/iam.roleViewer) 预定义角色,或者创建具有此权限的自定义角色并授予自定义角色。
Storage Transfer User (roles/storagetransfer.user) 允许用户创建、获取、更新和列出转移作业。 如需查看授予的权限的详细列表,请参阅 Storage Transfer Service 预定义角色

服务帐号

Storage Transfer Service 使用 Google 管理的服务帐号转移数据。您首次创建转移作业、创建代理池、调用 googleServiceAccounts.get 或访问 Google Cloud Console 中的作业创建页面时,系统会自动创建此服务帐号。

服务帐号的格式通常为 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com。如需确定您的特定 PROJECT_NUMBER,请使用 googleServiceAccounts.get API 调用。

如需允许 Storage Transfer Service 服务帐号访问完成转移作业所需的资源,请将以下角色或等效权限分配给该服务帐号:

角色/权限 用途 备注
Storage Object Creator (roles/storage.objectCreator) 允许 Storage Transfer Service 在与此转移作业关联的 Cloud Storage 存储桶中创建转移作业日志 授予转移作业中使用的所有 Cloud Storage 存储分区。如果适合您的情况,您可以将项目级层的角色授予运行 Storage Transfer Service 的项目。

如需查看这些角色授予的权限的详细列表,请参阅 Cloud Storage 预定义角色
Storage Object Viewer (roles/storage.objectViewer) 允许 Storage Transfer Service 确定是否已向/从 Cloud Storage 转移文件。
Storage Transfer Service Agent (roles/storagetransfer.serviceAgent) 允许 Storage Transfer Service 自动创建和修改 Pub/Sub 主题,从而在 Google Cloud 与转移代理之间进行通信。 将项目级层的角色应用于运行 Storage Transfer Service 的项目。

如需查看此角色授予的权限的详细列表,请参阅权限和角色
Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) 允许 Storage Transfer Service 读取 Cloud Storage 存储桶元数据。

授予转移作业中使用的每个 Cloud Storage 存储桶。

Cloud Storage legacy 角色只能在存储桶级层授予。

转移代理

可以使用用户帐号或服务帐号运行 Storage Transfer Service 转移代理。

要设置转移代理服务帐号或运行转移代理的用户帐号,请分配以下角色:

角色/权限 用途 备注
Storage Transfer Agent (roles/storagetransfer.transferAgent) 向转移代理授予完成转移所需的 Storage Transfer Service 和 Pub/Sub 权限。 将此角色授予代理使用的用户或服务帐号。

如需查看此角色授予的权限的详细列表,请参阅使用 IAM 进行访问权限控制

源和目标位置的权限

您还必须确保代理帐号具有访问源数据和写入目标位置的正确权限。

文件系统到 Cloud Storage

如果转移作业的目标位置是 Cloud Storage 存储桶,则转移代理需要目标存储桶的以下权限。如需查看说明,请参阅将主帐号添加到存储桶级层政策中

权限 说明
storage.objects.create 允许代理帐号在转移期间写入 Cloud Storage 对象。
storage.objects.get 允许代理帐号读取对象数据和元数据。
storage.objects.delete 如果您的转移作业配置为覆盖或删除接收器中的对象,则此权限是必需的。例如,如果在转移作业的 transferOptions 配置中设置了 overwriteObjectsAlreadyExistingInSinkdeleteObjectsUniqueInSink

如需授予这些权限,请授予以下角色:

或者,创建具有特定权限的自定义角色并授予自定义角色。

如需启用分段上传,您还需要具备其他权限。

Cloud Storage 到文件系统

如果转移作业的来源是 Cloud Storage 存储桶,则转移代理需要源存储桶的以下权限。

权限 说明
storage.objects.get 允许代理帐号读取对象数据和元数据。

要授予此权限,请授予以下角色:

或者,创建具有此权限的自定义角色并授予自定义角色。

文件系统到文件系统

如果在两个文件系统之间转移,则转移代理需要中间存储桶的以下权限。

权限 说明
storage.objects.create 允许代理帐号在转移期间写入 Cloud Storage 对象。
storage.objects.get 允许代理帐号读取对象数据和元数据。
storage.objects.delete 如果您的转移作业配置为在转移完成后删除中间存储桶中的对象,则此权限是必需的。

如需授予这些权限,请授予以下角色:

或者,创建具有特定权限的自定义角色并授予自定义角色。

如需启用分段上传,您还需要具备其他权限。

兼容 S3 的存储空间到 Cloud Storage

转移代理帐号需要目标存储桶的以下权限。如需查看说明,请参阅将主帐号添加到存储桶级层政策中

权限 说明
storage.objects.create 允许代理帐号在转移期间写入 Cloud Storage 对象。
storage.objects.get 允许代理帐号读取对象数据和元数据。
storage.objects.delete 如果您的转移作业配置为覆盖或删除接收器中的对象,则此权限是必需的。例如,如果在转移作业的 transferOptions 配置中设置了 overwriteObjectsAlreadyExistingInSinkdeleteObjectsUniqueInSink

如需授予这些权限,请授予以下角色:

或者,创建具有特定权限的自定义角色并授予自定义角色。

分段上传

如需在将数据从文件系统转移到 Cloud Storage 或在文件系统之间转移数据的过程中启用分段上传,请额外向代理授予以下权限。

  • 若要将数据转移到 Cloud Storage,您需要向目标存储桶分配相应权限。
  • 若要在文件系统之间转移数据,您需要向中间存储桶分配相应权限。

如果转移作业包含大型文件,可通过分段上传加快转移速度,但该功能仅支持使用 Standard Storage 存储类别的存储桶。

分段上传权限名称 说明
storage.multipartUploads.create 在多个段中上传对象。
storage.multipartUploads.abort 中止分段上传会话。
storage.multipartUploads.listParts 在分段上传会话中列出已上传的对象部分。
storage.multipartUploads.list 列出存储分区中的分段上传会话。

如需授予这些权限,请授予以下角色:

或者,创建具有特定权限的自定义角色并授予自定义角色。