Criptografar discos do sistema operacional com uma chave gerenciada pelo cliente no Red Hat OpenShift no Azure

Por padrão, os discos do sistema operacional das máquinas virtuais em um cluster Red Hat OpenShift no Azure foram criptografados com chaves geradas automaticamente gerenciadas pelo Microsoft Azure. Para segurança adicional, os clientes podem criptografar os discos do sistema operacional com chaves auto-gerenciadas ao implantar um cluster Red Hat OpenShift no Azure. Esse recurso permitem mais controle criptografando dados confidenciais com CMK (chaves gerenciadas pelo cliente).

Os clusters criados com chaves gerenciadas pelo cliente têm uma classe de armazenamento padrão habilitada com suas chaves. Portanto, os discos do sistema operacional e os discos de dados são criptografados por essas chaves. As chaves gerenciadas pelo cliente devem ser armazenadas no Azure Key Vault.

Para obter mais informações sobre como usar o Azure Key Vault para criar e manter Chaves, consulte Criptografia do lado do servidor do Armazenamento em Disco do Azure na documentação Microsoft Azure.

Com a criptografia baseada em host, os dados armazenados no host da VM de suas VMs dos nós do agente Red Hat OpenShift no Azure são criptografados em repouso e fluem criptografados para o serviço de armazenamento. A criptografia baseada em host significa que os discos temporários são criptografados em repouso com chaves de criptografia gerenciadas pela plataforma.

O cache do SO e dos discos de dados é criptografado em repouso com chaves de criptografia gerenciadas pela plataforma ou chaves gerenciadas pelo cliente, dependendo do tipo de criptografia definido nesses discos. Por padrão, ao usar o Red Hat OpenShift no Azure, o SO e os discos de dados são criptografados em repouso com chaves de criptografia gerenciadas pela plataforma, o que significa que os caches desses discos também são criptografados em repouso por padrão com chaves de criptografia gerenciadas pela plataforma.

Você pode especificar suas chaves gerenciadas seguindo as etapas de criptografia abaixo. O cache desses discos também será criptografado usando a chave especificada nesta etapa.

Limitação

É responsabilidade dos clientes manter o Key Vault e o Conjunto de Criptografia de Disco no Azure. A falha ao manter as chaves resultará em clusters Red Hat OpenShift no Azure quebrados. As VMs deixarão de funcionar e, como resultado, todo o cluster Red Hat OpenShift no Azure deixará de funcionar.

A equipe de engenharia do Red Hat OpenShift no Azure não pode acessar as chaves. Portanto, eles não podem fazer backup, replicar ou recuperar as chaves.

Para obter detalhes sobre como usar conjuntos de criptografia de disco para gerenciar suas chaves de criptografia, consulte Criptografia do lado do servidor do Armazenamento em Disco do Azure na documentação Microsoft Azure.

Pré-requisitos

  • Verificar suas permissões. É necessário ter permissões de Colaborador e Administrador de Acesso do Usuário ou de Proprietário.

  • Se você tiver várias assinaturas do Azure, registre os provedores de recursos. Para obter detalhes de registro, consulte Registrar os provedores de recursos.

  • Você precisará ter o recurso EncryptionAtHost habilitado em sua assinatura. Você pode habilitá-lo executando:

    az feature register --namespace Microsoft.Compute --name EncryptionAtHost
    
  • Você pode verificar o status atual do recurso executando:

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

Criar uma rede virtual contendo duas sub-redes vazias

Criar uma rede virtual contendo duas sub-redes vazias. Se você tiver uma rede virtual existente que atenda às suas necessidades, poderá ignorar esta etapa. Para revisar o procedimento de criação de uma rede virtual, consulte Criar uma rede virtual contendo duas sub-redes vazias.

Criar uma instância do Azure Key Vault

Você deve usar uma instância do Azure Key Vault para armazenar suas chaves. Crie um novo Key Vault com a proteção de limpeza habilitada. Em seguida, crie uma nova chave dentro do Key Vault para armazenar sua própria chave personalizada.

  1. Definir mais permissões de ambiente:
    export KEYVAULT_NAME=$USER-enckv
    export KEYVAULT_KEY_NAME=$USER-key
    export DISK_ENCRYPTION_SET_NAME=$USER-des
    
  2. Crie um Key Vault e uma Chave no 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)
    

Criar um conjunto de Azure Disk Encryption

O conjunto de Azure Disk Encryption é usado como o ponto de referência discos em clusters Red Hat OpenShift no Azure. Ele está conectado ao Azure Key Vault que você criou na etapa anterior e extrai as chaves gerenciadas pelo cliente a partir desse local.

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)

Conceder permissões para o conjunto de Azure Disk Encryption para acessar o Key Vault

Use o conjunto de Disk Encryption criado na etapa anterior e conceda permissão para que o conjunto de Disk Encryption acesse e use o Azure Key Vault.

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

Criar um cluster do Red Hat OpenShift no Azure

Crie um cluster Red Hat OpenShift no Azure para usar as chaves gerenciadas pelo cliente.

Observação

Habilitar o CMK em clusters ARO existentes só é possível para nós de trabalho, não para nós mestres. Você pode conseguir isso usando API de máquina por meio de CRs de conjunto de máquinas. Veja Habilitando chaves de criptografia gerenciadas pelo cliente para um conjunto de máquinas e Modificando um conjunto de máquinas de computação para obter mais informações.

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

Depois de criar o cluster Red Hat OpenShift no Azure, todas as VMs são criptografadas com as chaves de criptografia gerenciadas pelo cliente.

Para verificar se você configurou as chaves corretamente, execute os seguintes comandos:

  1. Obter o nome do Grupo de Recursos de cluster em que as VMs de cluster, discos e assim por diante estão localizadas:
    CLUSTERRESOURCEGROUP=$(az aro show --resource-group $RESOURCEGROUP --name $CLUSTER --query 'clusterProfile.resourceGroupId' -o tsv | cut -d '/' -f 5)
    
  2. Verifique se os discos têm o conjunto de Disk Encryption correto anexado:
    az disk list -g $CLUSTERRESOURCEGROUP --query '[].encryption'
    
    O campo diskEncryptionSetId na saída deve apontar para o conjunto de Disk Encryption especificado durante a criação do cluster Red Hat OpenShift no Azure.