6.4. 为 Azure 启用用户管理的加密


在 OpenShift Container Platform 版本 4.11 中,您可以在 Azure 中使用用户管理的加密密钥安装集群。要启用此功能,您可以在安装后准备 Azure DiskEncryptionSet,修改 install-config.yaml 文件,然后执行安装后的步骤。

6.4.1. 准备 Azure 磁盘加密集

OpenShift Container Platform 安装程序可以使用带有用户管理的密钥的现有磁盘加密集。要启用此功能,您可以在 Azure 中创建磁盘加密集,并为安装程序提供密钥。

流程

  1. 运行以下命令,为 Azure 资源组设置以下环境变量:

    $ export RESOURCEGROUP="<resource_group>" \1
        LOCATION="<location>" 2
    1
    指定您要创建磁盘加密集和加密密钥的 Azure 资源组名称。为了避免在销毁集群后丢失对密钥的访问,您应该在与安装集群的资源组不同的资源组中创建 Disk Encryption Set。
    2
    指定您要创建资源组的 Azure 位置。
  2. 运行以下命令,为 Azure Key Vault 和 Disk Encryption Set 设置以下环境变量:

    $ export KEYVAULT_NAME="<keyvault_name>" \1
        KEYVAULT_KEY_NAME="<keyvault_key_name>" \2
        DISK_ENCRYPTION_SET_NAME="<disk_encryption_set_name>" 3
    1
    指定您要创建的 Azure Key Vault 的名称。
    2
    指定您要创建的加密密钥名称。
    3
    指定您要创建的磁盘加密集的名称。
  3. 运行以下命令,为您的 Azure Service Principal 设置环境变量:

    $ export CLUSTER_SP_ID="<service_principal_id>" 1
    1
    指定用于此安装的服务主体的 ID。
  4. 运行以下命令,在 Azure 中启用主机级别加密:

    $ az feature register --namespace "Microsoft.Compute" --name "EncryptionAtHost"
    $ az feature show --namespace Microsoft.Compute --name EncryptionAtHost
    $ az provider register -n Microsoft.Compute
  5. 运行以下命令,创建一个 Azure 资源组来保存磁盘加密集和相关资源:

    $ az group create --name $RESOURCEGROUP --location $LOCATION
  6. 运行以下命令来创建 Azure 密钥库:

    $ az keyvault create -n $KEYVAULT_NAME -g $RESOURCEGROUP -l $LOCATION \
        --enable-purge-protection true
  7. 运行以下命令,在密钥 vault 中创建加密密钥:

    $ az keyvault key create --vault-name $KEYVAULT_NAME -n $KEYVAULT_KEY_NAME \
        --protection software
  8. 运行以下命令捕获密钥 vault 的 ID:

    $ KEYVAULT_ID=$(az keyvault show --name $KEYVAULT_NAME --query "[id]" -o tsv)
  9. 运行以下命令,捕获密钥 vault 中的密钥 URL:

    $ KEYVAULT_KEY_URL=$(az keyvault key show --vault-name $KEYVAULT_NAME --name \
        $KEYVAULT_KEY_NAME --query "[key.kid]" -o tsv)
  10. 运行以下命令来创建磁盘加密集:

    $ az disk-encryption-set create -n $DISK_ENCRYPTION_SET_NAME -l $LOCATION -g \
        $RESOURCEGROUP --source-vault $KEYVAULT_ID --key-url $KEYVAULT_KEY_URL
  11. 运行以下命令,为 DiskEncryptionSet 资源授予对密钥 vault 的访问权限:

    $ DES_IDENTITY=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \
        $RESOURCEGROUP --query "[identity.principalId]" -o tsv)
    $ az keyvault set-policy -n $KEYVAULT_NAME -g $RESOURCEGROUP --object-id \
        $DES_IDENTITY --key-permissions wrapkey unwrapkey get
  12. 运行以下命令,授予 Azure Service Principal 权限来读取 DiskEncryptionSet:

    $ DES_RESOURCE_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \
        $RESOURCEGROUP --query "[id]" -o tsv)
    $ az role assignment create --assignee $CLUSTER_SP_ID --role "<reader_role>" \1
        --scope $DES_RESOURCE_ID -o jsonc
    1
    指定对磁盘加密集的读取权限的 Azure 角色。您可以使用 Owner 角色或具有所需权限的自定义角色。

6.4.2. 后续步骤

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.