准备工作

首次创建 Transfer Service for On Premises Data 作业时,需要启用所需的 API 并确保授予正确的权限。

如果您在执行首次设置时遇到错误,请确认您登录的用户具有执行设置步骤所需的权限。在许多情况下,并非所有用户都具备这些权限,因此您可能需要与项目管理员联系以获取帮助。

如需进行首次设置,请执行以下操作:

  1. 启用 Google Storage Transfer API。

    启用 API

    1. 确认要为其启用 API 的项目,然后点击下一步

    2. 点击启用

  2. 启用 Pub/Sub API。

    启用 API

    1. 确认要为其启用 API 的项目,然后点击下一步

    2. 点击启用

  3. 以 Google Cloud 项目管理员(具有 resourcemanager.projects.setIamPolicy 权限的用户)身份向以下账号和身份授予 Identity and Access Management (IAM) 权限或角色:
    • 本地转移管理员 (admin) 帐号 - 超级用户帐号,支持同事执行转移作业。管理员可以管理本地转移代理并设置带宽使用限制。
    • 本地转移用户帐号 - 用于创建和执行转移作业的帐号。这些帐号通常无权删除转移作业。
    • 本地转移服务帐号 - 供本地转移用来执行转移的 Google 管理的服务账号
    • 本地转移代理身份 - 用于运行本地转移代理的身份。这可以是服务帐号或用于设置本地代理的用户帐号。

    Google Cloud 项目管理员帐号只需设置转移用户并授予本地转移服务帐号所需的权限。该帐号无需开始执行转移作业。

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

    如果您希望为本地转移服务创建自定义角色,请参阅本地转移服务的 IAM 权限了解 IAM 自定义角色

    1. 如需设置本地转移管理员帐号,请为该帐号分配以下 IAM 权限和角色:
      角色/权限 用途 备注
      resourcemanager.projects.getIamPolicy 此权限用于确认本地转移服务帐号是否具有转移所需的权限。
      Storage Transfer Admin (roles/storagetransfer.admin) 在转移项目中启用管理操作,例如项目设置和代理监控。 如需查看授予的权限的详细列表,请参阅 Storage Transfer Service 预定义角色
    2. 如需设置本地转移用户帐号,请为该帐号分配以下权限和角色:
      角色/权限 用途 备注
      resourcemanager.projects.getIamPolicy 用于确认本地转移服务帐号具有转移所需的 Pub/Sub 权限。
      Storage Transfer User (roles/storagetransfer.user) 允许用户创建、获取、更新和列出转移作业。 如需查看授予的权限的详细列表,请参阅 Storage Transfer Service 预定义角色
      Storage Object Admin (roles/storage.objectAdmin) 允许用户在转移过程中创建、更新和删除 Cloud Storage 对象。 必须针对此帐号在转移作业中使用的每个 Cloud Storage 存储桶授予此角色。

      如需查看授予的权限的详细列表,请参阅 Cloud Storage 预定义角色
    3. 本地转移服务使用 Google 管理的服务帐号转移数据。服务帐号的格式通常为 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com。如需确定您的特定 PROJECT_NUMBER,请使用 googleServiceAccounts.get API 调用。

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

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

      如需查看这些角色授予的权限的详细列表,请参阅 Cloud Storage 预定义角色
      Storage Object Viewer (roles/storage.objectViewer) 启用本地转移作业以确定文件是否已转移到 Cloud Storage 或从 Cloud Storage 转移。
      Pub/Sub Editor (roles/pubsub.editor) 启用本地转移以便自动创建和修改 Pub/Sub 主题,从而在 Google Cloud 与本地转移代理之间通信。 将项目级层的角色应用于运行本地转移作业所在的项目。

      如需查看此角色授予的权限的详细列表,请参阅 Pub/Sub 角色
      Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) 启用本地转移以读取 Cloud Storage 存储桶元数据。 授予转移作业中使用的每个 Cloud Storage 存储桶。
    4. 如需设置本地转移代理服务帐号或运行本地转移代理的用户帐号,请分配以下权限和角色:
      角色/权限 用途 备注
      Storage Object Admin (roles/storage.objectAdmin) 允许本地转移代理在转移过程中创建、更新和删除 Cloud Storage 对象。 授予转移作业中使用的所有 Cloud Storage 存储桶。如果适合您的情况,您可以将项目级层的角色授予运行本地转移作业所在的项目。

      如需查看此角色授予的权限的详细列表,请参阅 Cloud Storage 预定义角色
      Pub/Sub Publisher (roles/pubsub.publisher) 允许本地转移代理通过 Pub/Sub 主题与 Google Cloud 共享信息。 如需查看此角色授予的权限的详细列表,请参阅 Pub/Sub 角色
      Pub/Sub Subscriber (roles/pubsub.subscriber) 允许 Google Cloud 通过 Pub/Sub 主题与本地转移代理共享信息。 如需查看此角色授予的权限的详细列表,请参阅 Pub/Sub 角色
      Pub/Sub Editor (roles/pubsub.editor) 允许本地转移代理创建、获取和删除 Pub/Sub 订阅;允许代理获取用于在 Google Cloud 和本地转移代理之间通信的 Pub/Sub 主题。 如需查看此角色授予的权限的详细列表,请参阅 Pub/Sub 角色
  4. 通过执行以下操作,在物理或虚拟 Linux 机器上安装 Docker 社区版:

    1. 如需安装 Docker 社区版,请运行以下命令:

       curl -fsSL https://get.docker.com -o get-docker.sh
      
       sudo sh get-docker.sh
      
       sudo systemctl enable docker
      

      如果您遇到安装错误,请参阅问题排查

    2. 启用此机器的代理以向 Google Cloud 进行身份验证。

      如需启用身份验证,请运行以下命令,将机器的默认 gcloud 凭据保存在 Docker 卷中:

      sudo docker run -ti --name gcloud-config \
          gcr.io/google.com/cloudsdktool/cloud-sdk \
          gcloud auth application-default login
      
  5. 通过运行以下命令启动代理:

    sudo docker run -d --ulimit memlock=64000000 --rm \
    --volumes-from gcloud-config \
    -v /:/transfer_root \
    gcr.io/cloud-ingest/tsop-agent:latest \
    --enable-mount-directory \
    --project-id=PROJECT_ID \
    --hostname=$(hostname)
    

    PROJECT_ID 替换为您的项目 ID。

后续步骤