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

本页面介绍如何使用您自己的加密密钥在 Enterprise 层级实例上加密 Filestore 数据。

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

如需大致了解 CMEK(包括其启用时间和原因),请参阅 Cloud Key Management Service 文档

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

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

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

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

  1. 通过运行以下命令创建 Filestore 服务帐号(如果它尚不存在):

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

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

  2. 通过运行以下命令向 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 密钥的实例

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

gcloud beta filestore instances create nfs-server \
    --tier=ENTERPRISE \
    --location=us-central1 \
    --file-share=name="vol1",capacity=1TiB \
    --network=name="default" \
    --kms-key=KMS_KEY

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 替换为密钥环的区域。

获取密钥列表

您可以通过运行以下命令获取密钥列表:

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 密钥的实例

您可以通过运行以下命令列出使用特定密钥的 Filestore 实例:

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

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

示例

gcloud beta 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 密钥信息,请运行以下命令:

gcloud beta 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 密钥的状态。如果密钥或密钥版本被停用销毁,Filestore 实例会继续传送数据,但随时可能由于密钥不可用而失败。

为确保在密钥停用或销毁后阻止访问数据,请与 Google 支持团队联系并发出停止实例的请求。

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

启动已停止的实例

启动使用 Cloud KMS 密钥加密数据的已停止 Filestore 实例之前,您必须先启用恢复所有密钥版本。如果实例停止超过四个星期,系统会尽最大努力再次启动实例,并且可能无法启动。

后续步骤