逐步配置 Google Cloud 权限和 Cloud Storage

本文档将逐步介绍如何配置 Google Cloud 权限和 Cloud Storage,包括:

  • 准备目标 Cloud Storage 存储桶。
  • 准备 Cloud Key Management Service 密钥以保护您的数据。
  • 向 Transfer Appliance 团队提供您的 Cloud Storage 存储桶配置数据。

准备工作

确保您收到来自 Transfer Appliance 团队标题为 Google Transfer Appliance Prepare Permissions and Storage 的电子邮件。此电子邮件包含以下内容:

  • 您的转移作业所需的服务账号的名称。

  • 配置设备所需的会话 ID。

  • 在配置完帐号后,您需要填写的表单。

准备目标 Cloud Storage 存储桶

要将数据存储在 Cloud Storage 中,您必须准备一个存储桶。存储分区是 Cloud Storage 中用于存放数据的基本容器。

我们使用两个服务帐号将您的数据从 Transfer Appliance 移动到您准备的目标 Cloud Storage 存储桶。服务账号是应用(而非人员)用于执行操作的特殊账号。在本例中,服务账号允许 Transfer Appliance 代表您使用 Cloud Storage 资源,将数据从设备复制到您的 Cloud Storage 存储桶。您需要向这些帐号授予必要的角色,以便将数据从设备复制到 Cloud Storage 存储桶。

要准备目标 Cloud Storage 存储桶,请按以下步骤操作:

  1. 在标题为 Google Transfer Appliance Prepare Destination Bucket 的电子邮件中,Transfer Appliance 团队为您提供了以下服务帐号:

    • 与此特定转移关联的会话服务账号。类似以下示例:

      ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com

      在此示例中,SESSION_ID 是此特定转移的会话 ID。

    • 与 Transfer Service for On Premises Data 服务关联的服务代理,我们使用该服务代理将数据从设备转移到您的 Cloud Storage 存储桶。它类似于以下示例:

      project-TENANT_IDENTIFIER@storage-transfer-service.iam.gserviceaccount.com

      在此示例中,TENANT_IDENTIFIER 是为此特定项目生成的专属编号。

    请记下这些服务账号,以便在后续步骤中使用。

    通过服务账号,Transfer Appliance 可代表您处理 Google Cloud 资源,也就是说,将数据从设备复制到 Cloud Storage。您需要向这些帐号授予必要的角色,以便将数据从设备复制到 Cloud Storage 存储桶。

  2. Cloud Storage 存储分区与 Google Cloud 项目相关联。您选择的存储桶必须与订购设备时所用的项目位于同一项目中。

    如果您没有 Cloud Storage 存储桶,请创建一个:

    Google Cloud Console

    1. 在 Google Cloud 控制台中打开“Cloud Storage 存储分区”页面。

      打开“Cloud Storage 存储分区”页面

    2. 点击创建存储桶,打开存储桶创建表单。

    3. 输入您的存储桶信息,然后点击继续以完成各个步骤:

    4. 点击完成

    命令行

    使用 gsutil mb 命令:

    gsutil mb -b on -l LOCATION -p PROJECT_ID gs://BUCKET_NAME
    

    在此示例中:

    • LOCATION:所需的 Cloud Storage 存储桶位置
    • PROJECT_ID:要在其下创建存储桶的项目 ID。
    • BUCKET_NAME:要创建的存储桶的名称,需符合存储桶命名要求

    请勿在存储桶上设置保留政策。

  3. 如需向 Transfer Appliance 服务帐号授予使用 Cloud Storage 存储桶的权限,请执行以下操作:

    Google Cloud Console

    1. 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。

      进入“存储桶”

    2. 点击与您要向主账号授予角色的存储桶关联的存储桶溢出菜单 ()。

    3. 选择修改存储桶权限

    4. 点击 + 添加主账号按钮。

    5. 新的主帐号字段中,输入以下身份:

      • 会话服务账号。类似以下示例:

        ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com

        在此示例中,SESSION_ID 是此特定转移的会话 ID。

      • Transfer Service for On Premises Data 服务代理。它类似于以下示例:

        project-TENANT_IDENTIFIER@storage-transfer-service.iam.gserviceaccount.com

        在此示例中,TENANT_IDENTIFIER 是特定于此特定项目生成的编号。

    6. 选择角色下拉菜单中,选择 Storage Admin 角色。

      您选择的角色将显示在窗格中,其中包含对角色授予的权限的简短说明。

    7. 点击保存

    命令行

    使用 gsutil iam ch 命令:

    gsutil iam ch \
    serviceAccount:ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com:roles/storage.admin \
    serviceAccount:project-TENANT_IDENTIFIER@storage-transfer-service.iam.gserviceaccount.com:roles/storage.admin \
    gs://BUCKET_NAME
    

    在此示例中:

    • SESSION_ID:此特定转移的会话 ID。
    • TENANT_IDENTIFIER:专为此特定项目生成的编号。
    • BUCKET_NAME:您要创建的存储桶的名称。

准备 Cloud KMS 密钥

Transfer Appliance 会在您将设备寄返我们之前对数据进行加密,以此保护设备上的数据。Cloud Key Management Service (Cloud KMS) 公钥用于加密 Transfer Appliance 上的数据,私钥用于解密数据。

我们使用准备目标 Cloud Storage 存储桶中的会话服务帐号,将设备中的数据上传到您的 Cloud Storage 存储桶。

您可以通过以下选项来管理加密密钥:

  • Google 管理的加密密钥。您可以要求我们为您创建和管理 Cloud KMS 密钥。如果您想要使用此方法,则已完成 Google Cloud 项目的配置,可以继续执行接收设备中所述的步骤。

  • 自行创建和管理加密密钥。您可以按照以下说明创建和管理用于传输的加密密钥。您需要准备 Cloud KMS 非对称解密密钥,并将会话服务帐号添加到该密钥中。会话服务帐号使用该非对称解密密钥来解密数据并将其复制到 Cloud Storage。

要准备 Cloud KMS 密钥,请执行以下操作:

  1. 如果您没有 Cloud Key Management Service 密钥环,请执行以下操作进行创建:

    Google Cloud Console

    1. 前往 Google Cloud 控制台中的加密密钥页面。

      转到“加密密钥”页面

    2. 点击创建密钥环

    3. 密钥环名称字段中,输入密钥环的名称。

    4. 密钥环位置下拉列表中,选择一个位置,例如 "us-east1"

    5. 点击创建

    命令行

    gcloud kms keyrings create KEY_RING --location=LOCATION --project=PROJECT_ID
    

    在此示例中:

    • LOCATION:密钥环的 Cloud Key Management Service 位置。例如 global
    • KEY_RING:密钥环的名称。
    • PROJECT_ID:您的存储桶所属的 Google Cloud 项目 ID。
  2. 执行以下操作,创建非对称解密密钥:

    Google Cloud Console

    1. 前往 Google Cloud 控制台中的加密密钥页面。

      转到“加密密钥”页面

    2. 点击您要为其创建密钥的密钥环的名称。

    3. 点击创建密钥

    4. 您要创建哪种类型的密钥?部分,选择生成的密钥

    5. 密钥名称字段中,输入密钥的名称。

    6. 点击保护级别下拉列表,然后选择软件

    7. 点击用途下拉列表,然后选择非对称解密

    8. 点击算法下拉列表,然后选择 4096-bit RSA - OAEP Padding - SHA256 Digest

    9. 点击创建

    命令行

    运行以下命令以创建非对称解密密钥:

    gcloud kms keys create KEY --keyring=KEY_RING \
    --location=LOCATION --purpose=asymmetric-encryption \
    --default-algorithm=rsa-decrypt-oaep-4096-sha256 \
    --project=PROJECT_ID
    

    在此示例中:

    • KEY:Cloud Key Management Service 密钥的名称。例如 ta-key
    • KEY_RING:密钥环的名称。
    • LOCATION:密钥环的 Cloud Key Management Service 位置。例如 global
    • PROJECT_ID:您的存储桶所属的 Google Cloud 项目 ID。
  3. 执行以下操作,将会话服务帐号作为主帐号添加到非对称密钥:

    Google Cloud Console

    1. 前往 Google Cloud 控制台中的加密密钥页面。

      转到“加密密钥”页面

    2. 点击包含非对称密钥的密钥环。

    3. 选中非对称密钥对应的复选框。

    4. 信息面板中,点击添加主账号

      系统会显示添加主账号

    5. 新的主帐号字段中,输入 Transfer Appliance 团队提供的会话服务帐号。类似以下示例:

      ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com

      在此示例中,SESSION_ID 是此特定转移的会话 ID。

    6. 选择角色字段中,添加 Cloud KMS CryptoKey Public Key Viewer 角色。

    7. 点击添加其他角色

    8. 选择角色字段中,添加 Cloud KMS CryptoKey Decrypter 角色。

    9. 点击保存

    命令行

    1. 运行以下命令,向会话服务帐号授予 roles/cloudkms.cryptoKeyDecrypter 角色:

      gcloud kms keys add-iam-policy-binding KEY \
      --keyring=KEY_RING --location=LOCATION \
      --member=serviceAccount:ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com \
      --role=roles/cloudkms.cryptoKeyDecrypter
      

      在此示例中:

      • KEY:Cloud Key Management Service 密钥的名称。例如 ta-key
      • KEY_RING:密钥环的名称。
      • LOCATION:密钥环的 Cloud Key Management Service 位置。例如 global
      • SESSION_ID:此特定转移的会话 ID。
    2. 运行以下命令,向会话服务帐号授予 roles/cloudkms.publicKeyViewer 角色:

      gcloud kms keys add-iam-policy-binding KEY \
      --keyring=KEY_RING --location=LOCATION \
      --member=serviceAccount:ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com \
      --role=roles/cloudkms.publicKeyViewer
      

      在此示例中:

      • KEY:Cloud Key Management Service 密钥的名称。例如 ta-key
      • KEY_RING:密钥环的名称。
      • LOCATION:密钥环的 Cloud Key Management Service 位置。例如 global
      • SESSION_ID:此特定转移的会话 ID。
  4. 按照以下步骤获取非对称密钥的路径:

    Google Cloud Console

    1. 转到 Google Cloud 控制台中的“加密密钥”页面

      转到“加密密钥”页面

    2. 点击包含非对称解密密钥的密钥环。

    3. 点击非对称解密密钥的名称。

    4. 选择所需的密钥版本,然后点击“更多”

    5. 点击复制资源名称

      密钥格式示例如下:

      projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/VERSION_NUMBER

      在此示例中:

      • PROJECT_ID:您的存储桶所属的 Google Cloud 项目 ID。
      • LOCATION:密钥环的 Cloud Key Management Service 位置。
      • KEY_RING:密钥环的名称。
      • KEY:Cloud Key Management Service 密钥的名称。
      • VERSION_NUMBER:密钥的版本号。

      Transfer Appliance 团队需要包括版本号在内的整个密钥路径,以便将正确的密钥应用于您的数据。

    命令行

    运行以下命令以列出非对称密钥的完整路径,包括其版本号:

    gcloud kms keys versions list --keyring=KEY_RING \
    --key=KEY --location=LOCATION \
    --project=PROJECT_ID
    

    在此示例中:

    • KEY_RING:密钥环的名称。
    • KEY:非对称密钥的名称。
    • LOCATION:密钥环的 Google Cloud 位置。
    • PROJECT_ID:您的存储桶所属的 Google Cloud 项目 ID。

    以下示例响应类似于返回的输出:

    NAME STATE
    projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/VERSION_NUMBER
    ENABLED
    

    在此示例中:

    • PROJECT_ID:您的存储桶所属的 Google Cloud 项目 ID。
    • LOCATION:密钥环的 Cloud Key Management Service 位置。
    • KEY_RING:密钥环的名称。
    • KEY:Cloud Key Management Service 密钥的名称。
    • VERSION_NUMBER:密钥的版本号。

    Transfer Appliance 团队需要 NAME 下以 /cryptoKeyVersions/VERSION_NUMBER 结尾的字符串,其中 VERSION_NUMBER 是密钥的版本号。

向 Transfer Appliance 团队提供存储桶配置数据

我们会发送一封标题为 Google Transfer Appliance 准备权限和存储的电子邮件,收集有关 Cloud Storage 存储桶的信息。我们将使用您提供的信息配置从 Transfer Appliance 到 Cloud Storage 的转移。

在该电子邮件链接的表单中输入以下信息:

  • Google Cloud 项目 ID
  • 选择加密选项:
    • Google 管理的加密密钥(如果您选择让 Google 管理您的加密密钥)。
    • 客户管理的加密密钥(如果您选择自行管理自己的加密密钥)。从选择客户管理的加密密钥下拉菜单中,选择所需的加密密钥。
  • 用于此转移作业的 Google Cloud Storage 目标存储桶名称
  • 可选:对象前缀。如果没有对象前缀,则系统会使用文件系统上文件名之前的来源路径(不包括根路径)将对象转移到 Cloud Storage。例如,如果您拥有以下文件:
    • /source_root_path/file1.txt
    • /source_root_path/dirA/file2.txt
    • /source_root_path/dirA/dirB/file3.txt
    则 Cloud Storage 中的对象名称为:
    • file1.txt
    • dirA/file2.txt
    • dirA/dirB/file3.txt
    对象前缀会添加到 Cloud Storage 中对象的目标名称上,具体位置在目标存储桶名称的 / 字符之后、对象的任何来源路径名称(不包括来源的根路径)之前。这可以帮助您区分从其他转移作业转移过来的对象。

    下表演示了几种示例,展示源对象的路径为 /source_root_path/sub_folder_name/object_name 时在 Cloud Storage 中的对象前缀及其生成的对象名称:
    前缀 目标对象名称
    /destination_bucket/sub_folder_name/object_name
    prefix/ /destination_bucket/prefix/sub_folder_name/object_name

后续步骤

配置 IP 网络端口,以便 Transfer Appliance 在您的网络中工作。