Storage Transfer Service 方法的 IAM 权限

下表列出了运行每个 Storage Transfer Service 方法所需的最低权限

资源 方法 所需权限
googleServiceAccount get storagetransfer.projects.getServiceAccount
transferJobs create 必须具有以下两个权限:

  • storagetransfer.jobs.create
  • storagetransfer.projects.getServiceAccount

transferjobs get storagetransfer.jobs.get
transferjobs list storagetransfer.jobs.list
transferjobs patch 对于删除更新:storagetransfer.jobs.delete
对于非删除更新:storagetransfer.jobs.update
transferoperations cancel storagetransfer.operations.cancel
transferOperations get storagetransfer.operations.get
transferOperations list storagetransfer.operations.list
transferOperations pause storagetransfer.operations.pause
transferOperations resume storagetransfer.operations.resume

源权限

Cloud Storage

Storage Transfer Service 使用 Google 管理的服务帐号转移 Cloud Storage 源存储桶的数据,该服务账号在您第一次调用 googleServiceAccounts.get 时创建。

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

该服务帐号必须具有源存储桶的以下权限:

权限 说明 用途
storage.buckets.get 允许服务帐号获取存储桶的位置。 始终必需。
storage.objects.list 允许服务帐号列出存储桶中的对象。 始终必需。
storage.objects.get 允许服务帐号读取存储桶中的对象。 始终必需。
storage.objects.delete 允许服务帐号删除存储桶中的对象。 deleteObjectsFromSourceAfterTransfer 设置为 true 时必需。

roles/storage.objectViewerroles/storage.legacyBucketReader 角色都具有始终必需的权限。roles/storage.legacyBucketWriter 角色包含 storage.objects.delete 权限。您必须为执行转移的服务帐号分配所需角色

如需查看 Cloud Storage 角色及其权限的完整列表,请参阅 IAM 角色

Amazon S3

要使用 Storage Transfer Service 转移来自 Amazon S3 存储桶的数据,您必须拥有 AWS Identity and Access Management 用户帐号,且该帐号具有该存储桶的特定权限:

权限 说明 用途
s3:ListBucket 允许 Storage Transfer Service 列出存储桶中的对象。 始终必需。
s3:GetObject 允许 Storage Transfer Service 读取存储桶中的对象。 始终必需。
s3:GetBucketLocation 允许 Storage Transfer Service 获取存储桶的位置。 始终必需。
s3:DeleteObject 允许 Storage Transfer Service 删除存储桶中的对象。 deleteObjectsFromSourceAfterTransfer 设置为 true 时必需。

Microsoft Azure Blob Storage

如需使用 Storage Transfer Service 将数据从 Microsoft Azure Storage 帐号或容器迁移到 Cloud Storage,您必须有一个 Microsoft Azure Storage 用户帐号,并且该帐号具备以下权限:

权限 说明 用途
List Blobs 允许 Storage Transfer Service 列出容器中的 Blob。 始终必需。
Get Blob 允许 Storage Transfer Service 获取 Blob 的内容、系统定义的元数据和用户定义的元数据。 始终必需。
Get Blob Properties 允许 Storage Transfer Service 获取系统定义的 blob 和用户定义的 blob 元数据。 始终必需。
Delete Blob 允许 Storage Transfer Service 标记要删除的 blob。 deleteObjectsFromSourceAfterTransfer 设置为 true. 时必需。

网址列表

如果您的数据源是网址列表,请确保网址列表中的每个对象都可公开访问。

接收器权限

Storage Transfer Service 使用 Google 管理的服务帐号转移 Cloud Storage 源存储桶的数据,该服务账号在您第一次调用 googleServiceAccounts.get 时创建。

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

该服务帐号必须具有目标存储桶的以下权限:

权限 说明 用途
storage.buckets.get 允许服务帐号获取存储桶的位置。 始终必需。
storage.objects.create 允许服务帐号将对象添加到存储桶。 始终必需。
storage.objects.delete 允许服务帐号删除存储桶中的对象。 如果 OverwriteWhen 设置为 ALWAYSDIFFERENT,则为必需。
storage.objects.list 允许服务帐号列出存储桶中的对象。 如果 OverwriteWhen 设置为 NEVERDIFFERENT,或 deleteObjectsUniqueInSinktrue,则为必需。

roles/storage.legacyBucketWriter 角色具有上述全部权限,您可以将该角色分配给服务帐号。如需查看 Cloud Storage 角色及其权限的完整列表,请参阅 IAM 角色

Pub/Sub 权限

如果您打算使用 Pub/Sub 转移请向服务帐号授予所需 Pub/Sub 主题的 IAM 角色 roles/pubsub.publisher