本文档介绍了如何逐步配置 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 存储分区,请按以下步骤操作:
在标题为“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 存储桶。
Cloud Storage 存储分区与 Google Cloud 项目相关联。您选择的存储桶必须与用于订购设备的项目相同。
如果您没有 Cloud Storage 存储桶,请创建一个:
Google Cloud Console
在 Google Cloud 控制台中打开“Cloud Storage 存储分区”页面。
点击创建存储分区,打开存储分区创建表单。
输入您的存储分区信息,然后点击继续以完成各个步骤:
根据存储分区命名要求指定一个名称。
为存储分区选择默认存储类别。默认情况下,系统会为上传到该存储分区的所有对象分配该默认存储类别。接下来,为存储分区数据选择一个位置。
选择访问权限控制模型,确定如何控制对存储分区对象的访问权限。
请勿为存储桶设置保留政策。
点击完成。
命令行
使用
gcloud storage buckets create
命令:gcloud storage buckets create gs://BUCKET_NAME --uniform-bucket-level-access --location=LOCATION --project=PROJECT_ID
在此示例中:
BUCKET_NAME
:要创建的存储分区的名称,需符合存储分区命名要求。LOCATION
:所需的 Cloud Storage 存储分区位置。PROJECT_ID
:要在其下创建存储分区的项目 ID。
请勿为存储桶设置保留政策。
如需向 Transfer Appliance 服务账号授予使用您的 Cloud Storage 存储桶的权限,请执行以下操作:
Google Cloud Console
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
点击您要向主账号授予角色的存储桶关联的存储桶溢出菜单 ()。
选择修改存储分区权限。
点击 + 添加主账号按钮。
在新的主账号字段中,输入以下身份:
会话服务账号。类似以下示例:
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
是特定于此特定项目的生成编号。
从选择角色下拉菜单中,选择 Storage Admin 角色。
您选择的角色将显示在窗格中,其中包含对角色授予的权限的简短说明。
点击保存。
命令行
使用
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
:特定于此特定项目的生成编号。
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
准备 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 密钥,请执行以下操作:
如果您没有 Cloud Key Management Service 密钥环,请执行以下操作进行创建:
Google Cloud Console
前往 Google Cloud 控制台中的加密密钥页面。
点击创建密钥环。
在密钥环名称字段中,输入密钥环的名称。
在密钥环位置下拉列表中,选择一个位置,例如
"us-east1"
。点击创建。
命令行
gcloud kms keyrings create KEY_RING --location=LOCATION --project=PROJECT_ID
在此示例中:
LOCATION
:密钥环的 Cloud Key Management Service 位置。例如global
。KEY_RING
:密钥环的名称。PROJECT_ID
:您的存储分区所属的 Google Cloud 项目 ID。
执行以下操作,创建非对称解密密钥:
Google Cloud Console
前往 Google Cloud 控制台中的加密密钥页面。
点击您要为其创建密钥的密钥环的名称。
点击创建密钥。
在您要创建哪种类型的密钥?部分,选择生成的密钥。
在密钥名称字段中,输入密钥的名称。
点击保护级别下拉列表,然后选择软件。
点击用途下拉列表,然后选择非对称解密。
点击算法下拉列表,然后选择 4096 位 RSA - OAEP 填充 - SHA256 Digest
点击创建。
命令行
运行以下命令以创建非对称解密密钥:
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。
执行以下操作,将会话服务账号添加为非对称密钥的主账号:
Google Cloud Console
前往 Google Cloud 控制台中的加密密钥页面。
点击包含非对称密钥的密钥环。
选中非对称密钥对应的复选框。
在信息面板中,点击添加主账号。
系统会显示添加主账号。
在新主账号字段中,输入 Transfer Appliance 团队提供的会话服务账号。类似以下示例:
ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com
在此示例中,
SESSION_ID
是此特定转移的会话 ID。在选择角色字段中,添加 Cloud KMS CryptoKey Public Key Viewer 角色。
点击添加其他角色。
在选择角色字段中,添加 Cloud KMS CryptoKey Decrypter 角色。
点击保存。
命令行
运行以下命令,向会话服务账号授予
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。
运行以下命令,向会话服务账号授予
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。
按照以下步骤获取非对称密钥的路径:
Google Cloud Console
转到 Google Cloud 控制台中的“加密密钥”页面
点击包含非对称解密密钥的密钥环。
点击非对称解密密钥的名称。
选择所需的密钥版本,然后点击“更多” more_vert。
点击复制资源名称。
密钥格式示例如下:
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
file1.txt
dirA/file2.txt
dirA/dirB/file3.txt
/
字符之后、对象的任何来源路径名称(不包括来源的根路径)之前。这可以帮助您区分从其他转移作业转移过来的对象。 下表演示了几种示例,展示源对象的路径为/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 在您的网络中正常运行。