配置对数据源和数据接收器的访问权限

本页面介绍了如何针对使用 Storage Transfer Service 进行的数据传输,设置对数据源和数据接收器的访问权限。

Storage Transfer Service 使用 Google 管理的服务帐号转移数据。如果您从 Google Cloud Console 创建转移作业并有权更新 Cloud Storage 资源的 IAM 政策,则从 Google Cloud Console 创建的转移作业会自动向 Storage Transfer Service 使用的 Google 管理的服务帐号授予该转移作业需要的权限。

对非 Google Cloud 数据源以及使用 Storage Transfer Service API 创建的转移作业的访问权限需要额外设置。

前提条件

服务帐号权限在存储桶级层进行授予。您必须具备授予这些权限的能力,例如具有 Storage Admin 角色。如需了解详情,请参阅身份和访问权限管理

如果您打算使用 Pub/Sub 进行数据转移,请确保向服务帐号授予所需 Pub/Sub 主题的 IAM 角色 Pub/Sub Publisher (roles/pubsub.publisher)。在分配角色之后,可能会经历几秒钟的延迟,然后角色才会应用到您的服务帐号上。如果您以编程方式授予此权限,请等待 30 秒再配置 Storage Transfer Service。

如果您在 Cloud Storage 源存储桶或目标存储桶启用了 Cloud Key Management Service,请检查项目的配额页面中列出的 Cloud KMS 配额是否与 Storage Transfer Service 的读取配额写入配额相匹配。如不兼容,请从项目的配额页面申请增加配额。

详情请参阅以下内容:

设置对数据源的访问权限

Cloud Storage

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

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

如需设置 Storage Transfer Service 以使用 Cloud Storage 作为数据源,请向 googleServiceAccounts.get API 调用返回的 Google 管理的服务帐号分配以下角色等效权限

角色 用途 备注
Storage Object Viewer (roles/storage.objectViewer) 允许服务帐号读取存储桶的内容,以及读取对象数据和元数据。
Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) 允许服务帐号读取存储桶的内容和其元数据,以及读取对象元数据。 如果您不打算从 Cloud Storage 中删除源对象,请向服务帐号分配 Storage Legacy Bucket Reader (roles/storage.legacyBucketReader)
Storage Legacy Bucket Writer (roles/storage.legacyBucketWriter) 允许服务帐号创建、覆盖和删除对象;列出存储桶中的对象;列出时读取对象元数据;以及读取存储桶元数据(不包括 IAM 政策)。 如果您要从 Cloud Storage 中删除数据源对象,请将 Storage Legacy Bucket Writer (roles/storage.legacyBucketWriter) 分配给服务帐号。

如需了解高级数据转移,请参阅 Storage Transfer Service 的 IAM 权限

Amazon S3

请按照以下步骤设置对 Amazon S3 存储桶的访问权限:

  1. 使用以下方法之一设置对 Amazon S3 存储桶的访问:

    访问凭据

    1. 创建 AWS Identity and Access Management (AWS IAM) 用户,并设置便于识别的用户名,如 transfer-user。确保名称遵循 AWS IAM 用户命名指南(请参阅 IAM 实体和对象的限制)。
    2. 授予 AWS IAM 用户执行以下操作的权限:
      • 列出 Amazon S3 存储桶。
      • 获取存储分区的位置。
      • 读取存储桶中的对象。
      • 如果您计划在对象转移后从来源删除对象,请授予用户“删除对象”权限。
    3. 为您要设置的传输作业创建至少一个访问/密钥对。您还可以为每个转移作业创建单独的访问/密钥对。

    联合身份

    1. Storage Transfer Service 使用 Google 管理的服务帐号,从 Amazon S3 源存储桶源存储桶移动数据。服务帐号的格式通常为 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com。如需查找您的服务帐号的格式并创建该服务帐号(如果不存在),请使用 googleServiceAccounts.get API 调用。请记下以下步骤的服务帐号。
    2. 如需允许该服务使用服务帐号对出站请求进行身份验证,请将 Service Account Token Creator 角色添加到您之前记下的服务帐号。
    3. 创建以下具有 AssumeRoleWithWebIdentity 权限的 Amazon 资源名称 (ARN) IAM 角色:
      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Federated": "accounts.google.com"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
              "StringEquals": {
                "accounts.google.com:sub": "Service_account_subject_identifier"
              }
            }
          }
        ]
      }
                        
      如需详细了解 ARN,请参阅 IAM ARN
    4. 添加允许 Storage Transfer Service 访问 Amazon S3 资源的权限。为此,请将以下政策附加到 ARN IAM 角色,此操作可通过 AWS IAM 控制台完成:
      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*",
                "s3:Delete*",
             ],
            "Resource": "*"
          }
        ]
      }
                        
  2. 恢复归档到 Amazon Glacier 的任意对象。在恢复归档到 Amazon Glacier 的 Amazon S3 对象之前,您无法访问这些对象如需了解详情,请参阅“从 Amazon Glacier 迁移到 Cloud Storage”白皮书

Microsoft Azure Blob Storage

要配置对 Microsoft Azure Storage 容器的访问权限,请按以下步骤操作:

  1. 创建或使用现有的 Microsoft Azure Storage 用户来访问 Microsoft Azure Storage Blob 容器的存储帐号。
  2. 在容器级层创建一个 SAS 令牌。请参阅使用共享访问签名授予对 Azure Storage 资源的有限访问权限

    SAS 令牌的默认到期时间为 8 小时。在创建 SAS 令牌时,请确保设置合理的到期时间,以便成功完成转移。

网址列表

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

设置对数据接收器的访问权限

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

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

数据传输的数据接收器始终是 Cloud Storage 存储桶。

如需设置 Storage Transfer Service 以将 Cloud Storage 作为数据接收器,请向 googleServiceAccounts.get API 调用返回的 Google 管理的服务帐号分配以下角色等效权限

角色 用途
Storage Legacy Bucket Writer (roles/storage.legacyBucketWriter) 允许 Google 管理的服务帐号创建、覆盖和删除对象;列出目标存储桶中的对象;读取存储桶元数据。
Storage Object Viewer (roles/storage.objectViewer) 允许 Google 管理的服务帐号列出和获取目标存储桶中的对象。

如需详细了解所需权限,请参阅 Storage Transfer Service 的 IAM 权限

后续步骤