第 3 章 为 Azure 启用用户管理的加密
			在 OpenShift Container Platform 版本 4.16 中,您可以在 Azure 中使用用户管理的加密密钥安装集群。要启用此功能,您可以在安装前准备 Azure DiskEncryptionSet,修改 install-config.yaml 文件,然后完成安装。
		
3.1. 准备 Azure 磁盘加密集
OpenShift Container Platform 安装程序可以使用带有用户管理的密钥的现有磁盘加密集。要启用此功能,您可以在 Azure 中创建磁盘加密集,并为安装程序提供密钥。
流程
- 运行以下命令,为 Azure 资源组设置以下环境变量: - export RESOURCEGROUP="<resource_group>" \ LOCATION="<location>"- $ export RESOURCEGROUP="<resource_group>" \- 1 - LOCATION="<location>"- 2 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,为 Azure Key Vault 和 Disk Encryption Set 设置以下环境变量: - export KEYVAULT_NAME="<keyvault_name>" \ KEYVAULT_KEY_NAME="<keyvault_key_name>" \ DISK_ENCRYPTION_SET_NAME="<disk_encryption_set_name>"- $ export KEYVAULT_NAME="<keyvault_name>" \- 1 - KEYVAULT_KEY_NAME="<keyvault_key_name>" \- 2 - DISK_ENCRYPTION_SET_NAME="<disk_encryption_set_name>"- 3 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,为您的 Azure Service Principal 设置环境变量: - export CLUSTER_SP_ID="<service_principal_id>" - $ export CLUSTER_SP_ID="<service_principal_id>"- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定用于此安装的服务主体的 ID。
 
- 运行以下命令,在 Azure 中启用主机级别加密: - az feature register --namespace "Microsoft.Compute" --name "EncryptionAtHost" - $ az feature register --namespace "Microsoft.Compute" --name "EncryptionAtHost"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - az feature show --namespace Microsoft.Compute --name EncryptionAtHost - $ az feature show --namespace Microsoft.Compute --name EncryptionAtHost- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - az provider register -n Microsoft.Compute - $ az provider register -n Microsoft.Compute- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,创建一个 Azure 资源组来保存磁盘加密集和相关资源: - az group create --name $RESOURCEGROUP --location $LOCATION - $ az group create --name $RESOURCEGROUP --location $LOCATION- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 Azure 密钥库: - az keyvault create -n $KEYVAULT_NAME -g $RESOURCEGROUP -l $LOCATION \ --enable-purge-protection true- $ az keyvault create -n $KEYVAULT_NAME -g $RESOURCEGROUP -l $LOCATION \ --enable-purge-protection true- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,在密钥 vault 中创建加密密钥: - az keyvault key create --vault-name $KEYVAULT_NAME -n $KEYVAULT_KEY_NAME \ --protection software- $ az keyvault key create --vault-name $KEYVAULT_NAME -n $KEYVAULT_KEY_NAME \ --protection software- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令捕获密钥 vault 的 ID: - KEYVAULT_ID=$(az keyvault show --name $KEYVAULT_NAME --query "[id]" -o tsv) - $ KEYVAULT_ID=$(az keyvault show --name $KEYVAULT_NAME --query "[id]" -o tsv)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,捕获密钥 vault 中的密钥 URL: - KEYVAULT_KEY_URL=$(az keyvault key show --vault-name $KEYVAULT_NAME --name \ $KEYVAULT_KEY_NAME --query "[key.kid]" -o tsv)- $ KEYVAULT_KEY_URL=$(az keyvault key show --vault-name $KEYVAULT_NAME --name \ $KEYVAULT_KEY_NAME --query "[key.kid]" -o tsv)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建磁盘加密集: - az disk-encryption-set create -n $DISK_ENCRYPTION_SET_NAME -l $LOCATION -g \ $RESOURCEGROUP --source-vault $KEYVAULT_ID --key-url $KEYVAULT_KEY_URL- $ az disk-encryption-set create -n $DISK_ENCRYPTION_SET_NAME -l $LOCATION -g \ $RESOURCEGROUP --source-vault $KEYVAULT_ID --key-url $KEYVAULT_KEY_URL- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,为 DiskEncryptionSet 资源授予对密钥 vault 的访问权限: - DES_IDENTITY=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \ $RESOURCEGROUP --query "[identity.principalId]" -o tsv)- $ DES_IDENTITY=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \ $RESOURCEGROUP --query "[identity.principalId]" -o tsv)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - az keyvault set-policy -n $KEYVAULT_NAME -g $RESOURCEGROUP --object-id \ $DES_IDENTITY --key-permissions wrapkey unwrapkey get- $ az keyvault set-policy -n $KEYVAULT_NAME -g $RESOURCEGROUP --object-id \ $DES_IDENTITY --key-permissions wrapkey unwrapkey get- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,授予 Azure Service Principal 权限来读取 DiskEncryptionSet: - DES_RESOURCE_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \ $RESOURCEGROUP --query "[id]" -o tsv)- $ DES_RESOURCE_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \ $RESOURCEGROUP --query "[id]" -o tsv)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - az role assignment create --assignee $CLUSTER_SP_ID --role "<reader_role>" \ --scope $DES_RESOURCE_ID -o jsonc- $ az role assignment create --assignee $CLUSTER_SP_ID --role "<reader_role>" \- 1 - --scope $DES_RESOURCE_ID -o jsonc- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定对磁盘加密集的读取权限的 Azure 角色。您可以使用Owner角色或具有所需权限的自定义角色。