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

本页面介绍了如何加密 Filestore 上的数据 实例备份 使用您自己的加密密钥进行加密

默认情况下,Google Cloud 会自动加密 静态数据 并由 Google 拥有和管理如果您需要更好地控制 使用 CMEK,您可以将客户管理的加密密钥用于 Filestore。

客户管理的加密密钥选项

Cloud Key Management Service 支持由客户管理的 加密密钥 (CMEK),这些密钥可以存储为软件密钥, HSM 集群中,或在外部 Cloud External Key Manager (Cloud EKM)。有多种方案可供选择。

如需了解详情,请参阅 Cloud Key Management Service

Cloud External Key Manager

针对 Filestore 的 Cloud EKM 现已正式发布 (正式版)。如需了解详情,请参阅 Cloud External Key Manager

EKM 服务中断

根据设计,外部密钥由第三方管理;在这些情况下 Google Cloud 不负责密钥可用性。

如果 Cloud Key Management Service (Cloud KMS) 通过 External Key Manager (EKM) 通知 无法访问外部密钥时,用户会收到 ekm_key_unreachable_detected 通知。在长达一小时的时间内,用户对 实例。1 小时后,如果密钥状态保持不变,则执行以下操作 应用:

  • 密钥已停用。
  • 所有加密和解密操作都会失败。
  • Filestore 实例已暂停。

在某些情况下(例如虚拟机重启等计划外事件), 实例可能会在一小时前中断。

可以从 Filestore 实例查看无法访问的密钥通知 详情页面:

转到“Filestore 实例”页面

用户还会通过以下任一设备收到ekm_key_unreachable_detected通知: 后续操作(如果在首次报告后 1 小时内执行) 通知:

支持的层级

下表显示了 Filestore 服务层级 支持 CMEK(客户管理的加密密钥):

层级 CMEK 支持
基本 HDD
基本 SSD
可用区级
区域
Enterprise

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

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

向 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. 为 Filestore 服务账号分配 Cloud KMS CryptoKey 通过运行 projects add-iam-policy-binding 命令获取加密者/解密者角色:

    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 控制台

创建使用 Cloud KMS 密钥处理数据的实例 加密:

  1. 在 Google Cloud 控制台中,前往 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 密钥的实例

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

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 控制台

  1. 转到“Filestore 实例”页面

    转到“Filestore 实例”页面

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

  3. 点击概览标签页。

如果实例使用 Cloud KMS 密钥(而非 Google 拥有的密钥和 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 密钥

如果检测到 Cloud KMS 密钥状态发生变化, 会自动停止传送数据。下面是一些示例:

  • 停用密钥或密钥版本。
  • 销毁密钥或密钥版本。
  • 修改密钥的权限。

这种检测通常在密钥状态发生变化后的几分钟内发生, 但在某些情况下最长可能需要一个小时

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

启动已停止的实例

如果已停止的 Filestore 实例使用 Cloud KMS 密钥 对数据进行加密时,密钥的所有密钥版本都必须是 enabled恢复实例。

启用 Cloud KMS 密钥状态后 自动检测关键更改并重启,而无需执行任何其他操作; 通常在 20 分钟内完成。

为备份链提供 CMEK 支持

您不仅可以使用 CMEK 加密 Filestore 实例,还可以对其进行加密 备份链

备份链位于单个存储桶和区域中。存储和加密备份 位于源实例之外的区域,则用户必须应用两个单独的 CMEK:一个用于实例,一个用于备份链。您需要遵守一些要求:

  • CMEK 必须与其加密的备份链位于同一区域。

  • 单个 CMEK 会应用于存储备份链的存储桶 且不能合并或替换。

  • 若要使用新的 CMEK 创建备份,则整个现有备份链 必须先将其删除

CMEK 支持不适用于基本层级备份。

如需了解详情,请参阅备份

后续步骤