逐步配置 Google Cloud 权限和 Cloud Storage

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

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

准备工作

确保您收到了 Transfer Appliance 团队发送的标题为 Google Transfer Appliance 准备权限和存储空间的电子邮件。此电子邮件 包含:

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

  • 您需要用来配置设备的会话 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 准备目标存储桶”的电子邮件中,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 项目相关联。您构建的存储桶 select 必须与订购设备时所用的项目位于同一项目中。

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

    Google Cloud Console

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

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

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

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

    4. 点击完成

    命令行

    使用 gcloud storage buckets create 命令:

    gcloud storage buckets create gs://BUCKET_NAME --uniform-bucket-level-access --location=LOCATION --project=PROJECT_ID
    

    在此示例中:

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

  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. 点击保存

    命令行

    使用 gcloud storage buckets add-iam-policy-binding 命令:

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
    --member=serviceAccount:ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com \
    --role=roles/storage.admin
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
    --member=serviceAccount:project-TENANT_IDENTIFIER@storage-transfer-service.iam.gserviceaccount.com \
    --role=roles/storage.admin
    

    在此示例中:

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

准备 Cloud KMS 密钥

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

我们将使用 准备目标 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 位 RSA - OAEP 填充 - SHA256 摘要

    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 Prepare Permissions and Storage 的电子邮件,以收集您的 Cloud Storage 存储桶的相关信息。我们会使用您提供的信息来配置从 Transfer Appliance 到 Cloud Storage 的转移。

在该电子邮件中提供的链接所指向的表单中,输入以下信息:

  • Google Cloud 项目 ID
  • 选择加密选项:
    • Google 管理的加密密钥(如果您选择让 Google 管理加密密钥
    • 客户管理的加密密钥(如果您选择自行管理加密密钥)。从选择客户管理的加密密钥下拉菜单中选择所需的加密密钥。
  • Google Cloud 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 在您的网络中正常运行。