默认情况下,Filestore 会对静态客户内容进行加密。Filestore 会为您处理加密,您无需执行任何其他操作。此选项称为 Google 默认加密。
如果您想要控制加密密钥,则可以将 Cloud KMS 中客户管理的加密密钥 (CMEK) 与集成 CMEK 的服务(包括 Filestore)结合使用。使用 Cloud KMS 密钥时,您可以控制其保护级别、位置、轮替时间表、使用和访问权限以及加密边界。此外,您还可使用 Cloud KMS 查看审核日志并控制密钥生命周期。这样您就可以在 Cloud KMS 中控制和管理用于保护您数据的对称密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。
使用 CMEK 设置资源后,访问 Filestore 资源的体验与使用 Google 默认加密功能类似。如需详细了解加密选项,请参阅客户管理的加密密钥 (CMEK)。
支持将 CMEK 与 Filestore 实例和备份搭配使用。
CMEK 选项
文件存储区支持将 CMEK 存储为软件密钥、HSM 集群中的硬件密钥,以及 Cloud External Key Manager (Cloud EKM) 中外部存储的密钥。
如需了解详情,请参阅 Cloud Key Management Service。
EKM 服务中断
外部密钥由第三方管理,这是设计使然;在这种情况下,Google Cloud 不对密钥可用性负责。
如果 External Key Manager (EKM) 通知 Cloud Key Management Service (Cloud KMS) 外部密钥无法访问,用户会收到 ekm_key_unreachable_detected
通知。在最多一小时的时间内,用户对实例的操作权限受到限制。一小时后,如果密钥状态保持不变,系统会执行以下操作:
- 密钥已停用。
- 所有加密和解密操作都会失败。
- Filestore 实例已暂停。
在某些情况下(例如虚拟机重启等非预期事件),实例访问权限可能会在一小时之前中断。
您可以在 Filestore 实例详情页面查看无法访问的密钥通知:
如果用户在首次收到通知后一小时内执行以下任一操作,还会收到 ekm_key_unreachable_detected
通知:
支持的层级
下表显示了支持 CMEK 的 Filestore 服务层级:
层级 | CMEK 支持 |
---|---|
基本 HDD | 否 |
基本 SSD | 否 |
可用区级 | 是 |
区域 | 是 |
企业 | 是 |
创建用于实例的密钥环和密钥
密钥环和密钥可以与 Filestore 实例位于不同的项目中,但它们必须位于同一位置。如果您已经有要用于 Filestore 的 Cloud KMS 密钥环和密钥,请跳至下一部分。否则,请按照关于创建对称加密密钥的说明创建密钥环和密钥。
向 Filestore 服务账号授予密钥访问权限
Filestore 服务账号必须具有 Cloud KMS CryptoKey Encrypter/Decrypter 角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter
),您才能创建使用 CMEK 的 Filestore 实例。
首次在项目中创建 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。
通过运行
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 控制台
如需创建使用 Cloud KMS 密钥进行数据加密的实例,请执行以下操作:
在 Google Cloud 控制台中,前往“Filestore 实例”页面。
点击创建实例
选择支持 CMEK 的实例层级,并像往常一样填写所有其他必填字段和可选字段。
点击显示高级选项。
选中使用客户管理的加密密钥 (CMEK) 复选框。
选择要用于实例的 Cloud KMS 密钥。
点击创建。
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 和支持 CMEK 的 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 控制台
转到“Filestore 实例”页面
点击实例 ID 以打开“实例详情”页面。
点击概览标签页。
如果实例使用 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 密钥状态发生变化,实例会自动停止传送数据。下面是一些示例:
此检测通常会在密钥状态发生变化后的几分钟内完成,但在某些情况下最长可能需要 1 小时。
实例停止后,对文件共享数据以及任何快照的所有访问都会被阻止。已停止的实例会继续计费,直到被删除为止。
启动已停止的实例
如果已停止的 Filestore 实例使用 Cloud KMS 密钥加密数据,则必须先启用或恢复该密钥的所有密钥版本,然后才能重启实例。
启用 Cloud KMS 密钥状态后,实例会自动检测密钥更改并重启,无需您执行任何其他操作,通常会在 20 分钟内完成。
对备份链的 CMEK 支持
您不仅可以使用 CMEK 加密 Filestore 实例,还可以加密备份链。
备份链位于单个存储桶和区域中。如需在源实例之外的区域存储和加密备份数据,用户必须应用两个单独的 CMEK:一个用于实例,另一个用于备份链。需要满足以下要求:
CMEK 必须与其加密的备份链位于同一区域。
单个 CMEK 会应用于存储备份链的存储桶,并且无法组合或替换。
如需使用新的 CMEK 创建备份,必须先删除整个现有备份链。
基本层级的备份不支持 CMEK。
如需了解详情,请参阅备份。
后续步骤
- 了解如何应用 CMEK 组织政策。
- 详细了解 CMEK。
- 了解 Google Cloud 中的传输加密。