2.3.6. 为机器集启用客户管理的加密密钥

Google Cloud Platform(GCP)Compute Engine 允许用户提供加密密钥来加密磁盘上的数据。密钥用于对数据加密密钥进行加密,而不是加密客户的数据。默认情况下,Compute Engine 使用 Compute Engine 密钥加密这些数据。

您可以使用 Machine API 使用客户管理的密钥启用加密。您必须首先创建 KMS 密钥并为服务帐户分配正确的权限。需要 KMS 密钥名称、密钥环名称和位置来允许服务帐户使用您的密钥。

注意

如果您不想将专用服务帐户用于 KMS 加密,则使用 Compute Engine 默认服务帐户。如果没有使用专用服务帐户,则必须授予默认服务帐户权限来访问密钥。Compute Engine 默认服务帐户名称遵循 service-<project_number>@compute-system.iam.gserviceaccount.com 模式。

流程

  1. 使用您的 KMS 密钥名称、密钥环名称和位置运行以下命令,允许特定服务帐户使用您的 KMS 密钥,并为服务帐户授予正确的 IAM 角色:

    gcloud kms keys add-iam-policy-binding <key_name> \
      --keyring <key_ring_name> \
      --location <key_ring_location> \
      --member "serviceAccount:service-<project_number>@compute-system.iam.gserviceaccount.com” \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter
  2. 在机器集 YAML 文件中的 providerSpec 字段中配置加密密钥。例如:

    providerSpec:
      value:
        # ...
        disks:
        - type:
          # ...
          encryptionKey:
            kmsKey:
              name: machine-encryption-key 1
              keyRing: openshift-encrpytion-ring 2
              location: global 3
              projectID: openshift-gcp-project 4
            kmsKeyServiceAccount: openshift-service-account@openshift-gcp-project.iam.gserviceaccount.com 5
    1
    用于磁盘加密的客户管理的加密密钥名称。
    2
    KMS 密钥所属的 KMS 密钥环的名称。
    3
    KMS 密钥环存在的 GCP 位置。
    4
    可选:存在 KMS 密钥环的项目 ID。如果没有设置项目 ID,则会使用创建机器设置的机器设置 projectID
    5
    可选:用于给定 KMS 密钥加密请求的服务帐户。如果没有设置服务帐户,则使用 Compute Engine 默认服务帐户。

    当使用更新的 providerSpec 对象配置创建新机器后,磁盘加密密钥就会使用 KMS 密钥加密。