Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Por padrão, Microsoft Azure usa chaves geradas automaticamente para criptografar os discos do sistema operacional das VMs (máquinas virtuais) em um cluster Red Hat OpenShift no Azure. Para segurança extra, você pode criptografar os discos do sistema operacional usando chaves autogerenciadas ao implantar um cluster. Esse recurso oferece mais controle criptografando dados confidenciais com chaves gerenciadas pelo cliente.
Os clusters com chaves gerenciadas pelo cliente têm uma classe de armazenamento padrão habilitada com suas chaves. Portanto, essas chaves criptografam discos do sistema operacional e discos de dados. Azure Key Vault armazena as chaves gerenciadas pelo cliente. Para obter mais informações sobre como usar Key Vault para criar e manter chaves, consulte Azure Key Vault conceitos básicos.
Com a criptografia baseada em host, os dados armazenados no host da máquina virtual das VMs de nó do Red Hat OpenShift no Azure são criptografados em repouso. Esses dados fluem criptografados para Armazenamento do Azure. A criptografia baseada em host significa que os discos temporários são criptografados em repouso usando chaves gerenciadas pela plataforma.
O cache do SO e dos discos de dados é criptografado em repouso com chaves gerenciadas pela plataforma ou chaves gerenciadas pelo cliente. O tipo de chaves depende do tipo de criptografia definido nesses discos. Por padrão, quando você usa Red Hat OpenShift no Azure, os discos do sistema operacional e de dados são criptografados em repouso com chaves gerenciadas pela plataforma. Essa configuração padrão significa que os caches desses discos também são criptografados por padrão em repouso com chaves gerenciadas pela plataforma.
Você pode especificar suas próprias chaves gerenciadas seguindo as etapas de criptografia na próxima seção. As chaves especificadas nesta etapa também criptografam o cache desses discos.
Limitação
Os clientes devem manter o cofre de chaves e a criptografia de disco definidos em Azure. A falha na manutenção das chaves resulta em clusters Red Hat OpenShift no Azure quebrados. As VMs param de funcionar e, como resultado, todo o cluster Red Hat OpenShift no Azure para 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 a criptografia do lado do servidor de Armazenamento em Disco do Azure.
Pré-requisitos
Verificar suas permissões. Você deve ter permissões para criar um cluster Red Hat OpenShift no Azure, um cofre de chaves e um conjunto de criptografia de disco.
Confirme se você tem a função Key Vault Crypto Officer. Essa função tem permissões para criar uma chave.
Se você tiver várias assinaturas do Azure, registre os provedores de recursos. Para obter detalhes de registro, consulte Registrar os provedores de recursos.
Confirme se você tem o
EncryptionAtHostrecurso habilitado em sua assinatura. Você pode habilitá-lo executando:az feature register --namespace Microsoft.Compute --name EncryptionAtHostVocê pode verificar o status atual do recurso executando:
az feature show --namespace Microsoft.Compute --name EncryptionAtHost
Criar uma instância de Key Vault
Você deve usar uma instância de Key Vault para armazenar suas chaves. Crie um novo cofre de chaves com proteção contra limpeza habilitada. Em seguida, crie uma nova chave no cofre de chaves para armazenar sua própria chave personalizada.
Definir variáveis de ambiente:
export KEYVAULT_NAME=aro-enckv export KEYVAULT_KEY_NAME=aro-key export DISK_ENCRYPTION_SET_NAME=aro-des export LOCATION=<location-name> export RESOURCEGROUP=<resource-group-name>Crie um cofre de chaves:
az keyvault create \ --name $KEYVAULT_NAME \ --resource-group $RESOURCEGROUP \ --location $LOCATION \ --enable-purge-protection trueObservação
Você deve habilitar a proteção contra exclusão. Consulte Configure seu Azure Key Vault.
Opcional: como a proteção de limpeza está habilitada, você não pode reutilizar imediatamente o nome do cofre de chaves após a exclusão. Ao adicionar a especificação
--retention-days <NUMBER_OF_DAYS>, você pode controlar por quanto tempo o cofre é mantido em um estado de "exclusão reversível". O padrão é 90 dias, mas defini-lo como um valor mais baixo (mínimo de 7 dias) significa que você pode recuperar o nome mais rapidamente.Crie uma chave no cofre de chaves:
az keyvault key create \ --vault-name $KEYVAULT_NAME \ --name $KEYVAULT_KEY_NAME \ --protection softwareDefina o ID do recurso do Key Vault e as variáveis de URL da chave:
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 criptografia de disco
Use o conjunto de criptografia de disco Azure como o ponto de referência para discos em clusters Red Hat OpenShift no Azure. Ele está conectado ao cofre de chaves que você criou na etapa anterior e extrai as chaves gerenciadas pelo cliente desse local.
Crie o conjunto de criptografia de disco:
az disk-encryption-set create \ --name $DISK_ENCRYPTION_SET_NAME \ --location $LOCATION \ --resource-group $RESOURCEGROUP \ --source-vault $KEYVAULT_ID \ --key-url $KEYVAULT_KEY_URLEspecifique a ID de recurso do conjunto de criptografia de disco e as variáveis de identidade:
DES_ID=$(az disk-encryption-set show --name $DISK_ENCRYPTION_SET_NAME --resource-group $RESOURCEGROUP --query 'id' -o tsv) DES_IDENTITY=$(az disk-encryption-set show --name $DISK_ENCRYPTION_SET_NAME --resource-group $RESOURCEGROUP --query "[identity.principalId]" -o tsv)
Conceda permissões ao conjunto de criptografia de disco para acessar o Key Vault
Você deseja que a identidade gerenciada do conjunto de criptografia de disco use a chave de criptografia. Atribua uma função interna que conceda as permissões de chave necessárias, como Key Vault Crypto Service Encryption User ou Key Vault Crypto User. Como alternativa, use uma função personalizada, desde que inclua as permissões necessárias (wrapkeye unwrapkeyget) para executar operações de chave exigidas pelos conjuntos de criptografia de disco.
az role assignment create \
--assignee $DES_IDENTITY \
--role "Key Vault Crypto Service Encryption User" \
--scope $KEYVAULT_ID
Criar um cluster do Red Hat OpenShift no Azure
Ao criar um cluster, você pode habilitar chaves gerenciadas pelo cliente especificando o conjunto de criptografia de disco. Use o parâmetro --disk-encryption-set. Por exemplo, --disk-encryption-set $DES_ID.
Para criar um cluster com uma entidade de serviço, siga as instruções em Criar um cluster Red Hat OpenShift no Azure.
Aqui está um exemplo de criação de um cluster com o --disk-encryption-set parâmetro:
az aro create \
--resource-group $RESOURCEGROUP \
--name $CLUSTER \
--vnet aro-vnet \
--master-subnet master-subnet \
--worker-subnet worker-subnet \
--disk-encryption-set $DES_ID
Observação
Você pode habilitar chaves gerenciadas pelo cliente somente em clusters existentes para nós de trabalho, não para nós mestres. É possível obter essa configuração. Para obter mais informações, consulte a documentação do Red Hat, incluindo habilitar chaves de criptografia gerenciadas pelo cliente para um conjunto de computadores e modificar um conjunto de computadores de computação.
Para criar um cluster Red Hat OpenShift no Azure com identidades gerenciadas, antes de criar o cluster, você deve conceder a machine-api identidade e a disk-csi-driver identidade. Você também deve conceder à entidade de serviço primária do Red Hat OpenShift no Azure as permissões Microsoft.Compute/diskEncryptionSets/read para o conjunto de criptografia de disco.
Exemplos de atribuições de função para a identidade machine-api, a identidade disk-csi-driver e a entidade de serviço primária do ARO:
az role assignment create \
--assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name disk-csi-driver --query principalId -o tsv)" \
--assignee-principal-type ServicePrincipal \
--role <ROLE> \
--scope $DES_ID"
az role assignment create \
--assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name machine-api --query principalId -o tsv)" \
--assignee-principal-type ServicePrincipal \
--role <ROLE> \
--scope $DES_ID
az role assignment create \
--assignee-object-id "$(az ad sp list --display-name "Azure Red Hat OpenShift RP" --query '[0].id' -o tsv)" \
--assignee-principal-type ServicePrincipal \
--role <ROLE> \
--scope $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:
Obtenha o nome do grupo de recursos do cluster em que as VMs, discos e outras infraestruturas do cluster estão localizadas:
CLUSTERRESOURCEGROUP=$(az aro show --resource-group $RESOURCEGROUP --name $CLUSTER --query 'clusterProfile.resourceGroupId' -o tsv | cut -d '/' -f 5)Verifique se os discos têm o conjunto de criptografia de disco correto anexado:
az disk list --resource-group $CLUSTERRESOURCEGROUP --query '[].encryption'
O campo diskEncryptionSetId na saída deve apontar para o conjunto de criptografia de disco especificado durante a criação do cluster Red Hat OpenShift no Azure.
Adicionar suporte a HSM gerenciado (mHSM) para chaves gerenciadas pelo cliente e à aplicação da Azure Policy
Você também pode adicionar suporte de HSM gerenciado (mHSM) para chaves gerenciadas pelo cliente e exigir e negar determinados atributos de criptografia. Esse suporte requer alterações de API e Azure Policy.
Siga estas etapas para criar um cluster Red Hat OpenShift no Azure com mHSM e chaves gerenciadas pelo cliente:
Exportar variáveis de ambiente da etapa anterior:
export HSM_NAME=<hsm-name> export RESOURCE_GROUP=<resource-group>Habilite a proteção contra exclusão definitiva e o gerenciamento de chaves por meio do Azure Resource Manager:
az keyvault update-hsm \ --hsm-name $HSM_NAME \ --resource-group $RESOURCE_GROUP \ --enable-purge-protection true az keyvault setting update \ --hsm-name $HSM_NAME \ --name AllowKeyManagementOperationsThroughARM \ --value trueConclua as etapas restantes para ativar o mHSM: Ative o HSM gerenciado.
Conceda a si mesmo a
Managed HSM Crypto Userfunção para que você possa criar chaves no mHSM.oid=$(az ad signed-in-user show --query id -o tsv) az keyvault role assignment create \ --hsm-name $HSM_NAME \ --role "Managed HSM Crypto User" \ --assignee $oid \ --scope /keysCrie uma identidade gerenciada e conceda a ela a
Managed HSM Crypto Service Encryption Userfunção por meio do mHSM.export UA_IDENTITY=<new-ua-identity>HSM_ID="https://${HSM_NAME}.managedhsm.azure.net" az identity create \ --resource-group $RESOURCE_GROUP \ --name $UA_IDENTITY IDENTITY_OBJECT_ID=$(az identity show \ --resource-group $RESOURCE_GROUP \ --name $UA_IDENTITY \ --query principalId -o tsv) az keyvault role assignment create \ --id "$HSM_ID" \ --role "Managed HSM Crypto Service Encryption User" \ --assignee-object-id "$IDENTITY_OBJECT_ID" \ --scope "/keys/byok-key"Crie um conjunto de criptografia de disco, levando em consideração:
Definir o tipo de criptografia como
Encryption at-rest with a customer-managed key.Use a identidade atribuída pelo usuário que você criou na etapa anterior.
Conclua a atribuição de função antes de criar o conjunto de criptografia de disco.
Exportar variáveis de ambiente da etapa anterior:
export LOCATION=<yourLocation> export CLUSTER=<yourNewClusterName> export VIRTUAL_NETWORK=<yourVirtualNetwork> export KEYVAULT_NAME=<yourKeyvaultName> export KEYVAULT_KEY_NAME=byok-key export DISK_ENCRYPTION_SET_NAME=<yourDiskEncryptionSetName>Crie um cluster com seu novo conjunto de criptografia de disco:
DES_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g $RESOURCE_GROUP --query 'id' -o tsv) az aro create --resource-group $RESOURCE_GROUP \ --name $CLUSTER \ --vnet $VIRTUAL_NETWORK \ --master-subnet master-subnet \ --worker-subnet worker-subnet \ --disk-encryption-set $DES_IDDepois que o cluster estiver em funcionamento, confirme a criptografia:
az disk list -g $VIRTUAL_NETWORK --query "[].{DiskName:name, VM:managedBy, EncryptionType:encryption.type, DiskEncryptionSet:encryption.diskEncryptionSetId}" -o tablePara verificar a criptografia, procure
EncryptionAtRestWithCustomerKeyna colunaEncryptionType.