本节介绍了对 GCP 云的服务引擎 (SE) 磁盘加密的客户托管加密密钥 (CMEK) 支持。
NSX Advanced Load Balancer GCP 云支持对以下资源进行加密。每个资源支持不同的加密密钥。
为上载原始 SE 映像文件而创建的 GCS 存储桶。
作为 GCS 对象上载的原始 SE 映像。
从原始映像中创建的 GCP 映像。
创建 SE 时的 SE 磁盘。
将密钥添加到云配置后,Cloud Connector 会检查密钥是否存在以及密钥的权限。如果有任何密钥验证失败,云将进入失败状态。如果在创建 SE 后从云中删除 SE 磁盘加密密钥,则相应的 SE 随后若关闭,便无法启动。
必备条件
使用 CMEK 之前,请执行以下步骤:
在 Google KMS 中创建一个密钥。
为 NSX Advanced Load Balancer 云服务帐户提供相应权限,以使用以下任一密钥:
a) cloudkms.cryptoKeys.get;或
b) role: roles/cloudkms.admin
为以下服务帐户提供相应权限,以使 Google 计算和存储能够使用该密钥进行数据加密或解密:
a) 权限
i. cloudkms.cryptoKeyVersions.useToEncrypt
ii.cloudkms.cryptoKeyVersions.useToDecrypt,或
iii.role: roles/cloudkms.cryptoKeyEncrypterDecrypter
b) 对于 GCS 对象和存储桶加密密钥,以下成员必须具有上述权限。
i. service-[PROJECT_NUMBER]@gs-project-accounts.iam.gserviceaccount.com
c) 对于 SE 映像和磁盘加密密钥,以下成员必须具有上述权限
i. service-[PROJECT_NUMBER]@compute-system.iam.gserviceaccount.com
云配置
要配置加密密钥,请在 GCP 云配置中设置 encryption_keys 字段。虽然加密密钥可以存在于任何 GCP 项目(独立于 SE 项目)中,但它必须与 SE 位于同一区域或者可以是全局性的。kms 密钥 ID 必须采用 projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name 格式。
配置字段
下面是各个配置字段:
gcs_bucket_kms_key_id CMEK Resource ID to encrypt Google Cloud Storage Bucket. This Bucket is used to upload Service Engine raw image. gcs_objects_kms_key_id CMEK Resource ID to encrypt Service Engine raw image. The raw image is a Google Cloud Storage Object. se_disk_kms_key_id CMEK Resource ID to encrypt Service Engine Disks. se_image_kms_key_id CMEK Resource ID to encrypt Service Engine GCE Image.
配置 GCP 以使用加密
在配置 Google Cloud 时,您需要一个用于进行加密的密钥。您可以采用 URI 格式提供密钥 ID,如下所示:
下面是 CLI 格式:
[admin:10-138-10-66]: > configure cloud gcp-cloud [admin:10-138-10-66]: cloud> gcp_configuration [admin:10-138-10-66]: cloud:gcp_configuration> encryption_keys [admin:10-138-10-66]: cloud:gcp_configuration:encryption_keys> se_disk_kms_key_id projects/kms-project/locations/us-central1/keyRings/keyring/cryptoKeys/se-disk [admin:10-138-10-66]: cloud:gcp_configuration:encryption_keys> gcs_bucket_kms_key_id projects/kms-project/locations/us-central1/keyRings/keyring/cryptoKeys/bucket [admin:10-138-10-66]: cloud:gcp_configuration:encryption_keys> se_image_kms_key_id projects/kms-project/locations/us-central1/keyRings/keyring/cryptoKeys/se-image [admin:10-138-10-66]: cloud:gcp_configuration:encryption_keys> gcs_objects_kms_key_id projects/kms-project/locations/us-central1/keyRings/keyring/cryptoKeys/se-raw [admin:10-138-10-66]: cloud:gcp_configuration:encryption_keys> save save[admin:10-138-10-66]: cloud:gcp_configuration> save [admin:10-138-10-66]: cloud> save +------------------------------+----------------------------------------+ | Field | Value | +------------------------------+----------------------------------------+ | uuid | cloud-d4513a65-0907-4f67-b75f-bb47a6990423 | | name | gcp-cloud | | vtype | CLOUD_GCP | | apic_mode | False | | gcp_configuration | | | cloud_credentials_ref | gcp-creds | | region_name | us-central1 | | zones[1] | us-central1-a | | zones[2] | us-central1-b | | se_project_id | development-237409 | | network_config | | | config | INBAND_MANAGEMENT | | inband | | | vpc_subnet_name | subnet-1 | | vpc_project_id | net-project | | vpc_network_name | net-1 | | vip_allocation_strategy | | | mode | ROUTES | | routes | | | match_se_group_subnet | False | | encryption_keys | | | se_image_kms_key_id | projects/kms-project/locations/us-central1/keyRings/keyring/cryptoKeys/se-image | | se_disk_kms_key_id | projects/kms-project/locations/us-central1/keyRings/keyring/cryptoKeys/se-disk | | gcs_bucket_kms_key_id | projects/kms-project/locations/us-central1/keyRings/keyring/cryptoKeys/bucket | | gcs_objects_kms_key_id | projects/kms-project/locations/us-central1/keyRings/keyring/cryptoKeys/se-raw | | dhcp_enabled | True | | mtu | 1500 bytes | | prefer_static_routes | False | | enable_vip_static_routes | False | | license_type | LIC_CORES | | ipam_provider_ref | ipam-gcp-cloud | | state_based_dns_registration | True | | ip6_autocfg_enabled | False | | dns_resolution_on_se | False | | enable_vip_on_all_interfaces | False | | tenant_ref | admin | | license_tier | ENTERPRISE_18 | | autoscale_polling_interval | 60 seconds | +------------------------------+----------------------------------------+ }
修改加密选项
对于已创建的云,您可以修改加密选项。修改包括:
启用/禁用加密
更改用于加密的密钥
仅当尚未为 GCP 云创建任何 SE 时,才能更新 SE 磁盘加密密钥。
其他加密密钥可随时更改。更新 SE 映像加密密钥后,将使用新的加密密钥在 GCP 中重新创建 SE 映像。
密钥必须采用 URI 格式。
仅当尚未创建任何 SE 时,才允许修改 SE 磁盘加密密钥。
必须检查密钥区域。密钥必须与 SE 位于同一区域或是全局性的。您可以从 GCP 控制台的磁盘加密密钥字段中复制密钥 ID。
其他参考资料
使用 CMEK - 客户托管加密。
CMEK 权限 - 使用客户托管密钥。
使用云 KMS 密钥保护资源 - 客户托管密钥。
将加密权限限制到服务帐户 - 使用云存储时,云 KMS 密钥权限被拒绝。