使用客户管理的加密密钥加密数据

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

此页面向您展示如何使用您自己的加密密钥来加密 Filestore 实例上的 Filestore 数据。

默认情况下,Google Cloud 会使用 Google 管理的加密密钥自动加密静态数据。如果您需要更好地控制用于保护数据的密钥,则可以为 Filestore 使用客户管理的加密密钥 (CMEK)。

Cloud Key Management Service 支持客户管理的加密密钥,这些密钥可以作为软件密钥存储在 HSM 集群中,也可以存储在 Cloud External Key Manager (Cloud EKM) 中。Cloud EKM 尚不支持与 Filestore 搭配使用。尝试使用此功能可能会导致错误消息不一致和服务中断。

如需了解详情,请参阅 Cloud Key Management Service客户管理的加密密钥

支持的层级

下表显示了支持客户管理的加密密钥的 Filestore 层级:

层级 客户管理的加密密钥支持
基本 HDD
基本 SSD
大规模 SSD
企业版

创建用于实例的密钥环和密钥

密钥环和密钥可以与 Filestore 实例位于不同的项目中,但它们必须位于同一位置。如果您已经有要用于 Filestore 的 Cloud KMS 密钥环和密钥,请跳至下一部分。否则,请按照关于创建对称加密密钥的说明创建密钥环和密钥。

向 Filestore 服务帐号授予密钥访问权限

在创建使用客户管理的加密密钥的 Filestore 实例之前,Filestore 服务帐号必须具有 Cloud KMS CryptoKey Encrypter/Decrypter 角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter)。

  1. 您在项目中首次创建 Filestore 实例时,系统会创建一个 Filestore 服务帐号。如果您还没有 Filestore 服务帐号,请运行以下 services identity create 命令:

    gcloud beta services identity create --service=file.googleapis.com --project=INSTANCE_PROJECT_NUMBER_OR_ID
    

    INSTANCE_PROJECT_NUMBER_OR_ID 替换为要在其中创建 Filestore 实例的项目的编号或 ID。

  2. 运行 projects add-iam-policy-binding 命令,为 Filestore 服务帐号分配 Cloud KMS CryptoKey Encrypter/Decrypter 角色:

    gcloud projects add-iam-policy-binding KMS_PROJECT_NUMBER_OR_ID \
        --member serviceAccount:service-INSTANCE_PROJECT_NUMBER@cloud-filer.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    请替换以下内容:

    • KMS_PROJECT_NUMBER_OR_ID 替换为包含您要使用的 Cloud KMS 密钥的项目的编号或 ID。
    • INSTANCE_PROJECT_NUMBER 替换为您要在其中创建 Filestore 实例的项目的编号(不是项目 ID)。

创建使用 Cloud KMS 密钥的实例

Google Cloud Console

如需创建使用您的 Cloud KMS 密钥进行数据加密的实例,请执行以下操作:

  1. 在 Google Cloud Console 中,转到 Filestore 实例页面。

    转到“Filestore 实例”页面

  2. 点击创建实例

  3. 选择支持 CMEK 的实例层级,并像往常一样填写所有其他必填字段和选填字段。

  4. 点击显示高级选项

  5. 选中使用客户管理的加密密钥 (CMEK) 复选框。

  6. 选择要用于实例的 Cloud KMS 密钥。

  7. 点击创建

gcloud CLI

如需创建使用 Cloud KMS 密钥加密数据的 Filestore 实例,请在 filestore instances create 命令中指定 --kms-key 标志:

gcloud filestore instances create nfs-server \
    --tier=<var>TIER</var> \
    --location=us-central1 \
    --file-share=name="vol1",capacity=1TiB \
    --network=name="default" \
    --kms-key=KMS_KEY

请替换以下内容:

  • TIER 替换为支持客户管理的加密密钥的 Filestore 层级。
  • KMS_KEY 替换为您要使用的 Cloud KMS 密钥的完全限定名称。或者,您也可以按以下格式分别指定每个参数:
--kms-key=KMS_KEY : --kms-keyring=KEY_RING --kms-location=KMS_REGION --kms-project=KMS_PROJECT_NUMBER_OR_ID

请替换以下内容:

  • KMS_KEY 替换为 Cloud KMS 密钥的名称。
  • KMS_PROJECT_NUMBER_OR_ID 替换为在其中创建密钥的项目的编号或 ID。
  • KMS_KEY_RING 替换为密钥环的名称。
  • KMS_REGION 替换为密钥环的区域。 密钥环和实例必须位于同一区域中。

获取密钥列表

您可以通过运行 kms keys list 命令来获取键列表:

gcloud kms keys list \
    --project=KMS_PROJECT_NUMBER_OR_ID \
    --keyring=KEY_RING \
    --location=KMS_REGION

请替换以下内容:

  • KMS_PROJECT_NUMBER_OR_ID 替换为在其中创建密钥的项目的编号或 ID。
  • KEY_RING 替换为密钥环的名称。
  • KMS_REGION 替换为密钥环的区域。

输出的名称列提供现有密钥的完全限定名称。例如:

projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key

获取实例密钥信息

列出使用特定 Cloud KMS 密钥的实例

您可以运行 instances list 命令来列出使用特定密钥的 Filestore 实例:

gcloud filestore instances list --filter="kmsKeyName=KMS_KEY"

KMS_KEY 替换为要使用的密钥的完全限定名称。

示例

gcloud filestore instances list \
    --filter="kmsKeyName=projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key"

输出如下所示:

INSTANCE_NAME LOCATION    TIER       CAPACITY_GB FILE_SHARE_NAME IP_ADDRESS   STATE CREATE_TIME
nfs-server    us-central1 ENTERPRISE 1024        vol1            10.166.108.2 READY 2021-08-12T11:38:56

获取实例的 Cloud KMS 密钥信息

使用以下方法之一获取 Filestore 实例的 Cloud KMS 密钥信息:

Google Cloud Console

  1. 转到“Filestore 实例”页面

    转到“Filestore 实例”页面

  2. 点击实例 ID 以打开“实例详情”页面。

  3. 点击概览标签页。

如果实例使用 Cloud KMS 密钥而不是 Google 管理的加密密钥来加密数据,则密钥名称会显示在加密密钥字段中。

gcloud CLI

运行以下 instances describe 命令:

gcloud filestore instances describe INSTANCE_ID \
   --location=INSTANCE_LOCATION

请替换以下内容:

  • INSTANCE_ID 替换为您要获取其信息的 Filestore 实例的实例 ID。
  • INSTANCE_LOCATION 替换为实例所在的区域或可用区。

输出如下所示:

createTime: '2021-08-12T11:38:56.851157387Z'
fileShares:
- capacityGb: '1024'
  name: vol1
kmsKeyName: projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key
labels:
  key: val
name: projects/consumer-project/locations/us-central1/instances/nfs-server
networks:
- ipAddresses:
  - 10.0.100.2
  modes:
  - MODE_IPV4
  network: network
  reservedIpRange: 10.166.108.0/23
state: READY
tier: ENTERPRISE

停用或销毁实例使用的 Cloud KMS 密钥

如果您停用销毁某个密钥或密钥版本,该实例会检测密钥状态的变化并自动停止传送数据。检测通常在密钥状态发生更改后的几分钟内完成,但在某些情况下可能需要长达一个小时。

实例停止后,对文件共享数据以及任何快照的所有访问都会被阻止。已停止的实例需要付费,直到它们被删除为止。

启动已停止的实例

如果已停止的 Filestore 实例使用 Cloud KMS 密钥进行数据加密,必须先启用恢复密钥的所有密钥版本,然后才能重启实例。

启用 Cloud KMS 密钥状态后,实例将自动检测密钥更改并重启,而无需执行任何其他操作(通常在 20 分钟内)。

后续步骤