Поделиться через


Шифрование дисков ОС с помощью ключа, управляемого клиентом, в Azure Red Hat OpenShift

По умолчанию диски ОС виртуальных машин в кластере Azure Red Hat OpenShift шифруются автоматически созданными ключами, управляемыми Microsoft Azure. Для дополнительной безопасности клиенты могут шифровать диски ОС с помощью самоуправляемых ключей при развертывании кластера Azure Red Hat OpenShift. Эта функция позволяет более контролировать шифрование конфиденциальных данных с помощью ключей, управляемых клиентом (CMK).

Кластеры, созданные с помощью ключей, управляемых клиентом, имеют класс хранилища по умолчанию, включенный с помощью ключей. Поэтому диски ОС и диски данных шифруются этими ключами. Ключи, управляемые клиентом, хранятся в Azure Key Vault.

Дополнительные сведения об использовании Azure Key Vault для создания и обслуживания ключей см . в документации по Microsoft Azure на стороне сервера.

При шифровании на основе узла данные, хранящиеся на узле виртуальной машины виртуальных машин агента Azure Red Hat OpenShift, шифруются неактивных и передаются в службу хранилища. Шифрование на основе узла означает, что временные диски шифруются неактивных с помощью ключей, управляемых платформой.

Кэш дисков ОС и данных шифруется неактивных с помощью ключей, управляемых платформой, или ключей, управляемых клиентом, в зависимости от типа шифрования, установленного на этих дисках. По умолчанию при использовании Azure Red Hat OpenShift диски ОС и данных шифруются неактивных с помощью ключей, управляемых платформой, то есть кэши этих дисков также шифруются по умолчанию с помощью ключей, управляемых платформой.

Вы можете указать собственные управляемые ключи, выполнив приведенные ниже действия по шифрованию. Кэш для этих дисков также будет зашифрован с помощью ключа, указанного на этом шаге.

Ограничение

Это ответственность за обслуживание хранилища ключей и набора шифрования дисков в Azure. Сбой в обслуживании ключей приведет к сбою кластеров Azure Red Hat OpenShift. Виртуальные машины перестают работать, и в результате весь кластер Azure Red Hat OpenShift перестанет работать.

Команда разработчиков Azure Red Hat OpenShift не может получить доступ к ключам. Поэтому они не могут создавать резервные копии, реплицировать или извлекать ключи.

Дополнительные сведения об использовании наборов шифрования дисков для управления ключами шифрования см . в документации по Microsoft Azure на стороне сервера.

Необходимые компоненты

  • Проверьте разрешения. У вас должны быть разрешения участника и администратора доступа пользователей или разрешения владельца.

  • Если у вас несколько подписок Azure, зарегистрируйте поставщиков ресурсов. Сведения о регистрации см. в разделе "Регистрация поставщиков ресурсов".

  • Вам потребуется включить функцию EncryptionAtHost в подписке. Его можно включить, выполнив следующие действия:

    az feature register --namespace Microsoft.Compute --name EncryptionAtHost
    
  • Чтобы проверить текущее состояние функции, выполните следующую команду:

    az feature show --namespace Microsoft.Compute --name EncryptionAtHost
    

Создание виртуальной сети, содержащей две пустые подсети

Создайте виртуальную сеть, содержащую две пустые подсети. Если у вас есть существующая виртуальная сеть, которая соответствует вашим потребностям, можно пропустить этот шаг. Сведения о процедуре создания виртуальной сети см. в статье "Создание виртуальной сети с двумя пустыми подсетями".

Создайте экземпляр Azure Key Vault

Для хранения ключей необходимо использовать экземпляр Azure Key Vault. Создайте новое хранилище Azure Key Vault с включенной защитой от очистки. Затем создайте новый ключ в Key Vault, чтобы сохранить собственный пользовательский ключ.

  1. Задайте дополнительные разрешения среды:
    export KEYVAULT_NAME=$USER-enckv
    export KEYVAULT_KEY_NAME=$USER-key
    export DISK_ENCRYPTION_SET_NAME=$USER-des
    
  2. Создайте Key Vault и ключ в Key Vault:
    az keyvault create -n $KEYVAULT_NAME \
                   -g $RESOURCEGROUP \
                   -l $LOCATION \
                   --enable-purge-protection true
    
    az keyvault key create --vault-name $KEYVAULT_NAME \
                           -n $KEYVAULT_KEY_NAME \
                           --protection software
    
    KEYVAULT_ID=$(az keyvault show --name $KEYVAULT_NAME --query "[id]" -o tsv)
    
    KEYVAULT_KEY_URL=$(az keyvault key show --vault-name $KEYVAULT_NAME \
                                            --name $KEYVAULT_KEY_NAME \
                                            --query "[key.kid]" -o tsv)
    

Создание набора Шифрование дисков Azure

Набор Шифрование дисков Azure используется в качестве эталонной точки для дисков в кластерах Azure Red Hat OpenShift. Он подключен к Azure Key Vault, созданному на предыдущем шаге, и извлекает ключи, управляемые клиентом, из этого расположения.

az disk-encryption-set create -n $DISK_ENCRYPTION_SET_NAME \
                              -l $LOCATION \
                              -g $RESOURCEGROUP \
                              --source-vault $KEYVAULT_ID \
                              --key-url $KEYVAULT_KEY_URL

DES_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g $RESOURCEGROUP --query 'id' -o tsv)

DES_IDENTITY=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME \
                                           -g $RESOURCEGROUP \
                                           --query "[identity.principalId]" \
                                           -o tsv)

Предоставление разрешений для набора шифрования дисков для доступа к Key Vault

Используйте набор шифрования дисков, созданный на предыдущем шаге, и предоставьте разрешение набору шифрования дисков для доступа и использования Azure Key Vault.

az keyvault set-policy -n $KEYVAULT_NAME \
                       -g $RESOURCEGROUP \
                       --object-id $DES_IDENTITY \
                       --key-permissions wrapkey unwrapkey get

Создание кластера Azure Red Hat OpenShift

Создайте кластер Azure Red Hat OpenShift для использования ключей, управляемых клиентом.

Примечание.

Включение CMK в существующих кластерах ARO возможно только для рабочих узлов, а не главных узлов. Это можно сделать с помощью машинного API с помощью наборов CR. Дополнительные сведения см. в разделе "Включение ключей шифрования, управляемых клиентом" для набора компьютеров и изменения набора вычислительных машин.

az aro create --resource-group $RESOURCEGROUP \
              --name $CLUSTER  \
              --vnet aro-vnet  \
              --master-subnet master-subnet \
              --worker-subnet worker-subnet \
              --disk-encryption-set $DES_ID

После создания кластера Azure Red Hat OpenShift все виртуальные машины шифруются с помощью ключей шифрования, управляемых клиентом.

Чтобы убедиться, что ключи настроены правильно, выполните следующие команды:

  1. Получите имя группы ресурсов кластера, где находятся виртуальные машины кластера, диски и т. д.:
    CLUSTERRESOURCEGROUP=$(az aro show --resource-group $RESOURCEGROUP --name $CLUSTER --query 'clusterProfile.resourceGroupId' -o tsv | cut -d '/' -f 5)
    
  2. Убедитесь, что диски подключены к правильному набору шифрования дисков:
    az disk list -g $CLUSTERRESOURCEGROUP --query '[].encryption'
    
    Поле diskEncryptionSetId в выходных данных должно указывать на набор шифрования дисков, указанный при создании кластера Azure Red Hat OpenShift.