适用于受管 Lustre 的客户管理的加密密钥

默认情况下,Google Cloud Managed Lustre 会对静态客户内容进行加密。Managed Lustre 会为您处理加密,您无需执行任何其他操作。此选项称为“Google 默认加密”

如果您想要控制加密密钥,则可以将 Cloud KMS 中客户管理的加密密钥 (CMEK) 与集成 CMEK 的服务(包括 Managed Lustre)搭配使用。使用 Cloud KMS 密钥时,您可以控制其保护级别、位置、轮替时间表、使用和访问权限以及加密边界。 使用 Cloud KMS 还可让您跟踪密钥使用情况、查看审核日志以及控制密钥生命周期。 这样您就可以在 Cloud KMS 中控制和管理用于保护数据的对称密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。

使用 CMEK 设置资源后,访问受管理的 Lustre 资源的体验与使用 Google 默认加密功能类似。如需详细了解加密选项,请参阅客户管理的加密密钥 (CMEK)

以下 Managed Lustre 数据受 CMEK 保护:

  • 文件数据
  • 文件系统元数据,例如文件名

在 Managed Lustre 中使用 CMEK 时,您的项目可能会消耗 Cloud KMS 加密请求配额。 当在 Managed Lustre 中读取或写入数据时,使用 CMEK 加密的实例会消耗配额。 仅当您使用硬件 (Cloud HSM) 或外部 (Cloud EKM) 密钥时,使用 CMEK 密钥执行的加密和解密操作才会影响 Cloud KMS 配额。 如需了解详情,请参阅 Cloud KMS 配额

限制

Google Kubernetes Engine 不支持动态配置受 CMEK 保护的 Managed Lustre 实例,但支持静态配置。

集群工具包不支持受 CMEK 保护的托管 Lustre 实例。

VPC Service Controls 不支持受 CMEK 保护的托管 Lustre 实例。如果您尝试在 VPC Service Controls 边界内创建受 CMEK 保护的实例,则实例创建操作会失败。

创建 Cloud KMS 密钥

在创建启用 CMEK 的 Lustre 实例之前,您必须拥有 Cloud KMS 密钥环和 Cloud KMS 密钥。

Managed Lustre 支持三种保护级别

  • 软件(SOFTWARE
  • 硬件 (HSM)
  • 通过互联网进行外部测试 (EXTERNAL)

创建密钥时,我们建议您在与包含受管 Lustre 实例的项目不同的项目中创建 Cloud KMS 密钥。请参阅职责分离

Cloud KMS 密钥必须在您要创建的受管 Lustre 实例所在的同一区域中创建。

如要创建项,请执行以下操作:

  1. 如果您还没有密钥环,请创建一个密钥环
  2. 创建 Cloud KMS 密钥

向 Managed Lustre 服务代理授予 IAM 权限

Managed Lustre 使用服务代理来访问您的资源并代表您执行操作。您向服务代理授予 IAM 角色以管理其访问权限。创建受管理的 Lustre 实例时,系统会自动创建受管理的 Lustre 服务代理。

服务代理身份的格式为 service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com

Google Cloud 控制台用户

如果您将使用 Google Cloud 控制台创建受 CMEK 保护的托管式 Lustre,则可以跳过此部分。 Google Cloud 控制台会在实例创建流程中授予所需的权限。

跳转到创建启用了 CMEK 的 Managed Lustre 实例

创建或检索服务代理

如果您还没有 Managed Lustre 服务代理

如果您从未在项目中创建过受管理的 Lustre 实例,请运行以下命令手动创建服务代理:

gcloud beta services identity create \
  --service=lustre.googleapis.com \
  --project=PROJECT_NUMBER_OR_ID

PROJECT_NUMBER_OR_ID 替换为要在其中创建受管 Lustre 实例的项目的编号或 ID。输出类似于以下内容:

Service identity created: service-1234567890@gcp-sa-lustre.iam.gserviceaccount.com

复制服务代理身份的值,以便在下一步中使用。

如果您已创建 Managed Lustre 实例

  1. 如需构建服务代理身份,请获取您的项目编号。PROJECT_NUMBER项目 ID 不同:

    • 项目 ID 是一个唯一字符串,可以包含字母、数字和连字符。您可以在创建项目时指定项目 ID。例如 example-project-123
    • 项目编号是系统为项目自动生成的唯一标识符,仅包含数字。例如 1234567890

    如需获取给定项目 ID 的 PROJECT_NUMBER,请使用 gcloud projects describe 命令:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  2. 将返回的项目编号复制到服务代理身份中:

    service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com
    
  3. 复制服务代理身份,以便在下一步中使用。

向服务代理授予权限

Managed Lustre 需要获得授权才能使用您的密钥执行操作。

您必须向 Managed Lustre 服务代理授予 Cloud KMS 密钥的 roles/cloudkms.cryptoKeyEncrypterDecrypter IAM 角色。

使用 gcloud kms keys add-iam-policy-binding 命令:

gcloud kms keys add-iam-policy-binding KEY_NAME \
  --keyring=KEY_RING \
  --location=REGION \
  --project=KMS_PROJECT_ID \
  --member=serviceAccount:service-SERVICE_AGENT_IDENTITY \
  --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

执行以下变量替换操作:

  • KEY_NAME:Cloud KMS 密钥的名称。
  • KEY_RING:包含密钥的密钥环的名称。
  • REGION:密钥环所在的地区。
  • KMS_PROJECT_ID:包含 Cloud KMS 密钥的项目的 ID。
  • SERVICE_AGENT_IDENTITY:上一步中的 Managed Lustre 服务代理身份,格式为:service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com

创建启用了 CMEK 的 Managed Lustre 实例

如需创建受 CMEK 保护的 Managed Lustre 实例,请执行以下操作:

gcloud

如需使用 gcloud 创建受 CMEK 保护的实例,请按照创建实例中的步骤操作。将密钥标识符指定为 --kms-key-name 的值,如下所示:

gcloud lustre instance create INSTANCE_ID \
  --filesystem=FILESYSTEM_NAME \
  --per-unit-storage-throughput=PERF_TIER \
  --capacity-gib=CAPACITY_GIB \
  --location=ZONE \
  --network=NETWORK_NAME \
  --project=PROJECT_ID \
  --kms-key-name=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

Cloud KMS 密钥必须与您要创建的受管 Lustre 实例位于同一区域。

REST

如需使用 REST API 创建受 CMEK 保护的实例,请按照创建实例中的步骤操作。将密钥标识符指定为 kmsKey 的值,如下所示:

POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances?instanceId=INSTANCE_NAME
Authorization: Bearer AUTH_TOKEN
{
  "filesystem": "FILESYSTEM_NAME",
  "perUnitStorageThroughput": PERF_TIER,
  "capacityGib": CAPACITY_GIB,
  "network": "NETWORK_NAME",
  "kmsKey": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"
}

Cloud KMS 密钥必须与您要创建的受管 Lustre 实例位于同一区域。

如需查看字段及其说明的完整列表,请参阅 Instance 资源参考文档

Google Cloud 控制台

如需使用 Google Cloud 控制台创建受 CMEK 保护的实例,请按照创建实例中的步骤操作。在 Google Cloud 控制台的创建实例页面上,执行以下操作:

  1. 加密部分中,选择 Cloud KMS 密钥

  2. 选择 Cloud KMS 作为密钥管理类型,然后选择您的密钥。如果您的密钥位于其他项目中(建议这样做),请点击切换项目,选择密钥项目,然后选择您的密钥。Cloud KMS 密钥必须与您要创建的受管 Lustre 实例位于同一区域。

  3. 如果您的 Managed Lustre 服务代理没有使用 CMEK 所需的权限,系统会提示您授予 cloudkms.cryptoKeyEncrypterDecrypter 角色。点击授予以应用该角色。

如果 Cloud KMS 密钥不可用,或者在您启动创建操作时存在权限问题,则该操作会失败并返回 FAILED_PRECONDITION 错误。

密钥管理

Cloud Key Management Service 密钥可以轮替、停用、重新启用或销毁。它们可能会因各种原因而无法使用。

轮替密钥

您可以轮替 Cloud KMS 密钥。轮替密钥会创建新的密钥版本

  • 轮替密钥不会重新加密 Managed Lustre 实例中的数据。Managed Lustre 不支持解密或重新加密数据。

  • Managed Lustre 实例的现有容量将继续使用创建实例时所用的密钥版本进行加密。

  • 当您增加实例的存储容量时,新容量会受到您发出容量增加请求时的主密钥版本保护,写入该容量的任何数据也会受到该密钥版本保护。

这意味着,如果您在轮替密钥版本后增加了受管 Lustre 实例的容量,则可以有多个密钥版本来加密该实例。

停用密钥

您可以停用密钥版本。在您的 Managed Lustre 实例使用的任何密钥版本处于停用状态期间,该实例会被暂停。如需恢复实例,请将保护实例的所有密钥版本恢复为可用状态。 如需了解有关中止实例的信息,请参阅不可用的密钥

如需了解详情,请参阅启用和停用密钥版本

重新启用密钥

如果密钥版本已停用,您可以通过 Cloud KMS API 重新启用它。请参阅启用和停用密钥版本

如需恢复受管 Lustre 实例,必须启用或恢复用于加密存储空间容量的所有版本的密钥。

所有必需的密钥恢复到 ENABLED 状态后,Managed Lustre 会自动检测密钥更改并重启实例。实例状态变为 ACTIVE,Managed Lustre 服务恢复正常运行。您可以执行 I/O 和所有其他长时间运行的操作。

销毁密钥

Cloud KMS 密钥版本可以销毁,这意味着密钥材料会被永久删除。

Cloud KMS 密钥无法立即销毁;您必须安排销毁密钥版本。在安排销毁时长内,您可以恢复密钥版本以取消销毁。如需了解详情,请参阅销毁和恢复密钥版本

处于计划销毁状态的密钥版本不可用;受该密钥版本保护的任何受管 Lustre 实例都会被暂停。如需了解有关暂停实例的信息,请参阅不可用的密钥

密钥版本销毁后就无法恢复。您的实例将永久保持中止状态。对 Managed Lustre 实例唯一可执行的操作是删除实例。

不可用的密钥

密钥可能会因以下原因而无法使用:

  • 密钥已停用。
  • 密钥已被销毁或已安排销毁。
  • 从服务代理中移除了所需权限
  • Cloud KMS 密钥的项目已停用结算功能,并且停用状态已持续超过一小时。
  • 外部密钥无法访问的时间已超过一小时。

在这些情况下,事件发生后几分钟内,受管理的 Lustre 实例会关停,其实例状态会设置为 SUSPENDED

通过重新提供密钥,可以恢复 SUSPENDED 实例。

账号可能因以下原因而被中止:

密钥操作 实例状态 暂停原因 可以重新启用
停用 SUSPENDED KEY_DISABLE
安排销毁 SUSPENDED KEY_DESTROY_SCHEDULED
销毁 SUSPENDED KEY_DESTROY
移除权限 SUSPENDED PERMISSION_DENIED
停用结算功能 1 小时 SUSPENDED BILLING_DISABLED
无法访问 EKM 密钥(持续 1 小时) SUSPENDED EKM_KEY_UNREACHABLE

当实例处于暂停状态时:

  • 实例更新和导入/导出等长时间运行的操作会被阻止,并返回 FAILED_PRECONDITION 错误。
  • I/O 操作停止响应,直到服务器节点关闭。 此过程会在 30 分钟内完成。
  • 唯一允许长时间运行的操作是 DeleteInstance

暂停时间超过 4 个月的实例可能无法恢复。

已暂停实例的结算

如果 Managed Lustre 实例因密钥不可用而进入 SUSPENDED 状态,您仍需继续为该实例付费。暂停状态不会暂停结算。如需停止支付实例费用,您必须删除该实例。

Cloud KMS 还会单独向您收取任何正在使用的密钥版本的费用。

查看密钥使用情况并列出密钥版本

您可以查看组织内受 Cloud KMS 密钥保护的 Google Cloud 资源。如需了解详情,请参阅查看密钥使用情况

如需查看您的 Managed Lustre 实例使用的完整密钥版本列表,请使用 gcloud kms inventory search-protected-resources 命令:

gcloud kms inventory search-protected-resources \
  --keyname=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME \
  --scope=organizations/ORGANIZATION_ID \
  --filter="name:projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID" \
  --flatten="cryptoKeyVersions" \
  --format="value(cryptoKeyVersions)"

其中:

您还可以通过密钥清单页面查看关键信息。

前往“密钥清单”