Configurar chaves gerenciadas pelo cliente para um Azure Elastic SAN
Todos os dados gravados em um volume do Elastic SAN são criptografados automaticamente em repouso com uma DEK (chave de criptografia de dados). O Azure usa a criptografia de envelope para criptografar a DEK usando uma KEK (Chave de Criptografia de Chave). Por padrão, a KEK é gerenciada por plataforma (gerenciado pela Microsoft), mas você pode criar e gerenciar sua própria.
Esse artigo mostra como configurar a criptografia de um grupo de volumes do Elastic SAN com chaves gerenciadas pelo cliente armazenadas em um Azure Key Vault.
Limitações
A lista a seguir contém as regiões em que o Elastic SAN está disponível no momento e quais regiões dão suporte ao armazenamento com redundância de zona (ZRS) e ao armazenamento com redundância local (LRS) ou apenas LRS:
- Leste da Austrália – LRS
- Sul do Brasil – LRS
- Canadá Central: LRS
- EUA Central – LRS
- Leste da Ásia: LRS
- Leste dos EUA – LRS
- Leste dos EUA 2 – LRS
- França Central – LRS e ZRS
- Centro-Oeste da Alemanha: LRS
- Índia Central — LRS
- Leste do Japão: LRS
- Coreia Central: LRS
- Norte da Europa – LRS e ZRS
- Leste da Noruega — LRS
- Norte da África do Sul: LRS
- Centro-Sul dos EUA – LRS
- Sudeste da Ásia – LRS
- Suécia Central – LRS
- Norte da Suíça: LRS
- Norte dos EAU — LRS
- Sul do Reino Unido – LRS
- Oeste da Europa – LRS e ZRS
- Oeste dos EUA 2 – LRS e ZRS
- Oeste dos EUA 3 – LRS
A Elastic SAN também está disponível nas seguintes regiões, mas sem suporte à Zona de Disponibilidade:
- Leste do Canadá – LRS
- Oeste do Japão – LRS
- Centro-Norte dos EUA – LRS
A fim de habilitar essas regiões, execute o seguinte comando para registrar o sinalizador de recurso necessário:
Register-AzProviderFeature -FeatureName "EnableElasticSANRegionalDeployment" -ProviderNamespace "Microsoft.ElasticSan"
Pré-requisitos
Para executar as operações descritas nesse artigo, você deve preparar sua conta do Azure e as ferramentas de gerenciamento que pretende usar. A preparação inclui a instalação dos módulos necessários, fazer login na sua conta e definir as variáveis para o PowerShell e a CLI do Azure. O mesmo conjunto de variáveis é usado ao longo desse artigo, portanto, defini-las agora permite que você use as mesmas em todos os exemplos.
Para executar as operações descritas nesse artigo usando o PowerShell:
Instale a versão mais recente do Azure PowerShell se ainda não o fez.
Depois que o Azure PowerShell estiver instalado, instale a versão 0.1.2 ou posterior da extensão do Elastic SAN com
Install-Module -Name Az.ElasticSan -Repository PSGallery
.Entre no Azure.
Connect-AzAccount
Criar variáveis a serem usadas nos exemplos do PowerShell nesse artigo
Copie o código de exemplo e substitua todo o texto do espaço reservado pelos seus valores. Use as mesmas variáveis em todos os exemplos desse artigo:
# Define some variables
# The name of the resource group where the resources will be deployed.
$RgName = "ResourceGroupName"
# The name of the Elastic SAN that contains the volume group to be configured.
$EsanName = "ElasticSanName"
# The name of the Elastic SAN volume group to be configured.
$EsanVgName = "ElasticSanVolumeGroupName"
# The region where the new resources will be created.
$Location = "Location"
# The name of the Azure Key Vault that will contain the KEK.
$KvName = "KeyVaultName"
# The name of the Azure Key Vault key that is the KEK.
$KeyName = "KeyName"
# The name of the user-assigned managed identity, if applicable.
$ManagedUserName = "ManagedUserName"
Configurar o cofre de chaves
Você pode usar um cofre de chaves novo ou existente para armazenar chaves gerenciadas pelo cliente. O recurso criptografado e o cofre de chaves podem estar em diferentes regiões ou assinaturas no mesmo locatário do Microsoft Entra ID. Para saber mais sobre o Azure Key Vault, confira Visão geral do Azure Key Vault e O que é o Azure Key Vault?.
O uso de chaves gerenciadas pelo cliente com criptografia exige que a exclusão temporária quanto a proteção contra limpeza estejam habilitas para o cofre de chaves. A exclusão temporária é habilitada por padrão quando você cria um novo cofre de chaves e não pode ser desabilitada. Você pode habilitar a proteção contra limpeza ao criar o cofre de chaves ou após a sua criação. A criptografia do Azure Elastic SAN dá suporte a chaves RSA dos tamanhos 2048, 3072 e 4096.
O Azure Key Vault dá suporte à autorização com o RBAC do Azure por meio de um modelo de permissão de RBAC do Azure. A Microsoft recomenda usar o modelo de permissão de RBAC do Azure nas políticas de acesso do cofre de chaves. Para obter mais informações, confira Conceder permissão para aplicativos acessarem um cofre de chaves do Azure usando o RBAC do Azure.
Há duas etapas envolvidas na preparação de um cofre de chaves como um repositório para KEKs do grupo de volumes:
- Crie um novo cofre de chaves com a exclusão temporária e a proteção contra e limpeza habilitada ou habilite a proteção contra limpeza para um existente.
- Crie ou atribua uma função RBAC do Azure com permissões backup create delete get import get list update restore.
O exemplo a seguir:
- Crie um novo cofre de chaves com a exclusão temporária e a proteção contra limpeza habilitadas.
- Obtém o UPN da sua conta de usuário alterado.
- Atribui a função de Responsável pela Criptografia do Key Vault do novo cofre de chaves para sua conta.
Use as mesmas variáveis definidas anteriormente nesse artigo.
# Setup the parameters to create the key vault.
$NewKvArguments = @{
Name = $KvName
ResourceGroupName = $RgName
Location = $Location
EnablePurgeProtection = $true
EnableRbacAuthorization = $true
}
# Create the key vault.
$KeyVault = New-AzKeyVault @NewKvArguments
# Get the UPN of the currently loggged in user.
$MyAccountUpn = (Get-AzADUser -SignedIn).UserPrincipalName
# Setup the parameters to create the role assignment.
$CrptoOfficerRoleArguments = @{
SignInName = $MyAccountUpn
RoleDefinitionName = "Key Vault Crypto Officer"
Scope = $KeyVault.ResourceId
}
# Assign the Cypto Officer role to your account for the key vault.
New-AzRoleAssignment @CrptoOfficerRoleArguments
Para saber como habilitar a proteção contra limpeza em um cofre de chaves existente com o PowerShell, confira Visão geral da recuperação do Azure Key Vault.
Para obter mais informações sobre como atribuir uma função de RBAC com o PowerShell, consulte Atribuir funções do Azure usando o Azure PowerShell.
Adicionar uma chave
Depois, adicione uma chave no cofre de chaves. Antes de adicionar a chave, verifique se você atribuiu a você mesmo a função de Key Vault Crypto Officer.
A criptografia do Armazenamento do Microsoft Azure e Azure Elastic SAN dá suporte a chaves RSA dos tamanhos 2048, 3072 e 4096. Para obter mais informações sobre os tipos de chave com suporte, confira Sobre chaves.
Use esses comandos de exemplo para adicionar uma chave ao cofre de chaves com o PowerShell. Use as mesmas variáveis definidas anteriormente nesse artigo.
# Get the key vault where the key is to be added.
$KeyVault = Get-AzKeyVault -ResourceGroupName $RgName -VaultName $KvName
# Setup the parameters to add the key to the vault.
$NewKeyArguments = @{
Name = $KeyName
VaultName = $KeyVault.VaultName
Destination = "Software"
}
# Add the key to the vault.
$Key = Add-AzKeyVaultKey @NewKeyArguments
Escolher uma estratégia de rotação de chave
Seguir as melhores práticas de criptografia significa fazer o rodízio da chave que está protegendo o grupo de volumes do Elastic SAN em um agendamento regular, normalmente pelo menos a cada dois anos. O Azure Elastic SAN nunca modifica a chave no cofre de chaves, mas você pode configurar uma política de rotação de chaves para rotacionar a chave de acordo com seus requisitos de conformidade. Para obter mais informações, consulte Como configurar a rotação automática da chave de criptografia no Azure Key Vault.
Depois que a chave é rotacionada no cofre de chaves, a configuração da criptografia para seu grupo de volumes do Elastic SAN deve ser atualizada para usar a nova versão da chave. As chaves gerenciadas pelo cliente dão suporte à atualização automática e manual da versão da KEK. Decida qual abordagem você deseja usar antes de configurar chaves gerenciadas pelo cliente para um grupo de volumes novo ou existente.
Para obter mais informações sobre a rotação de chave, confira Atualizar a versão de chave.
Importante
Quando você modifica a chave ou a versão da chave, a proteção da chave de criptografia de dados raiz muda, mas os dados em seu grupo de volumes do Azure Elastic SAN permanecem criptografados o tempo todo. Não há nenhuma ação adicional necessária de sua parte para garantir que seus dados estejam protegidos. Rotacionar a versão da chave não afeta o desempenho e não há tempo de inatividade associado a ela.
Rotação automática de versão da chave
O Azure Elastic SAN pode atualizar automaticamente a chave gerenciada pelo cliente usada para criptografia para usar a versão de chave mais recente do cofre de chaves. O Elastic SAN verifica no cofre de chaves diariamente para uma nova versão da chave. Quando uma nova versão fica disponível, ele começa a usar automaticamente a versão mais recente da chave para criptografia. Ao rotacionar uma chave, aguarde 24 horas antes de desabilitar a versão mais antiga.
Importante
Se o grupo de volumes do Elastic SAN tiver sido configurado para atualização manual da versão da chave e você quiser alterá-la para atualização automática, altere a versão da chave para uma cadeia de caracteres vazia. Para obter mais informações sobre como alterar manualmente a versão da chave, consulte Atualizar automaticamente a versão da chave.
Rotação manual de versão da chave
Se você preferir atualizar a versão da chave manualmente, especifique o URI para a versão específica no momento em que configurar a criptografia com chaves gerenciadas pelo cliente. Quando você especifica o URI, seu Elastic SAN não atualizará automaticamente a versão da chave quando uma nova versão for criada no cofre de chaves. Para que seu Elastic SAN use uma nova versão de chave, você deve atualizá-la manualmente.
Para localizar o URI de uma versão específica de uma chave no portal do Azure:
- Navegue até o cofre de chaves.
- Em Objetos, selecione Chaves.
- Selecione a chave desejada para ver suas versões.
- Selecione uma versão da chave para ver as configurações dessa versão.
- Copie o valor do campo Identificador da Chave, que fornece o URI.
- Salve o texto copiado para usar posteriormente ao configurar a criptografia para o grupo de volumes.
Escolher uma identidade gerenciada para autorizar o acesso ao cofre de chaves
Ao habilitar chaves de criptografia gerenciadas pelo cliente para um grupo de volumes do Elastic SAN, você deve especificar uma identidade gerenciada que é usada para autorizar o acesso ao cofre de chaves que contém a chave. A identidade gerenciada deve ter as seguintes permissões:
- get
- wrapkey
- unwrapkey
A identidade gerenciada que autoriza o acesso ao cofre de chaves pode ser uma identidade gerenciada atribuída pelo usuário ou atribuída pelo sistema. Para saber mais sobre as identidades gerenciadas atribuídas pelo sistema e as atribuídas pelo usuário, confira Tipos de identidade gerenciada.
Quando um grupo de volumes é criado, uma identidade atribuída pelo sistema é criada automaticamente para ele. Se você quiser usar uma identidade atribuída pelo usuário, crie-a antes de configurar chaves de criptografia gerenciadas pelo cliente para seu grupo de volumes. Para saber como criar e gerenciar uma identidade gerenciada atribuída pelo usuário, confira Gerenciar identidades gerenciadas atribuídas pelo usuário.
Usar uma identidade gerenciada atribuída pelo usuário para autorizar o acesso
Ao habilitar as chaves gerenciadas pelo cliente para um novo grupo de volumes, você precisa especificar uma identidade gerenciada atribuída pelo usuário. Um grupo de volumes existente dá suporte ao uso de uma identidade gerenciada atribuída pelo usuário ou de uma identidade gerenciada atribuída pelo sistema para configurar chaves gerenciadas pelo cliente.
Ao configurar chaves gerenciadas pelo cliente com uma identidade gerenciada atribuída pelo usuário, a identidade gerenciada atribuída pelo usuário é usada para autorizar o acesso ao cofre de chaves que contém a chave. Você precisa criar a identidade atribuída pelo usuário para configurar as chaves gerenciadas pelo cliente.
Uma identidade gerenciada atribuída pelo usuário é um recurso autônomo do Azure. Para saber mais sobre identidades gerenciadas atribuídas pelo usuário, confira Tipos de identidade gerenciada. Para saber como criar e gerenciar uma identidade gerenciada atribuída pelo usuário, confira Gerenciar identidades gerenciadas atribuídas pelo usuário.
A identidade gerenciada atribuída pelo usuário precisa ter as permissões para acessar a chave no cofre de chaves. Você pode conceder permissões manualmente à identidade ou atribuir uma função interna com o escopo do cofre de chaves para conceder essas permissões.
O exemplo a seguir mostra como:
- Crie uma identidade gerenciada atribuída pelo usuário.
- Aguarde a conclusão da criação da identidade atribuída pelo usuário.
- Obtenha o
PrincipalId
da nova identidade. - Atribua uma função RBAC à nova identidade, com o escopo para o cofre de chaves.
Use as mesmas variáveis definidas anteriormente nesse artigo.
# Create a new user-assigned managed identity.
$UserIdentity = New-AzUserAssignedIdentity -ResourceGroupName $RgName -Name $ManagedUserName -Location $Location
Dica
Aguarde cerca de 1 minuto para que a criação da identidade atribuída pelo usuário seja concluída antes de continuar.
# Get the `PrincipalId` for the new identity.
$PrincipalId = $UserIdentity.PrincipalId
# Setup the parameters to assign the Crypto Service Encryption User role.
$CryptoUserRoleArguments = @{
ObjectId = $PrincipalId
RoleDefinitionName = "Key Vault Crypto Service Encryption User"
Scope = $KeyVault.ResourceId
}
# Assign the Crypto Service Encryption User role to the managed identity so it can access the key in the vault.
New-AzRoleAssignment @CryptoUserRoleArguments
Usar uma identidade gerenciada atribuída pelo sistema para autorizar o acesso
Uma identidade gerenciada atribuída pelo sistema está associada a uma instância de um serviço do Azure, como um grupo de volumes do Azure Elastic SAN.
A identidade gerenciada atribuída pelo sistema precisa ter as permissões para acessar a chave no cofre de chaves. Este artigo usa a função de Usuário de Criptografia do Serviço de Criptografia do Key Vault para identidade gerenciada atribuída pelo sistema no escopo do cofre de chaves para conceder essas permissões.
Quando um grupo de volumes é criado, uma identidade atribuída pelo sistema é criada automaticamente para ele se o parâmetro -IdentityType "SystemAssigned"
for especificado com o comando New-AzElasticSanVolumeGroup
. A identidade atribuída pelo sistema só estará disponível após a criação do grupo de volumes. Você também deve atribuir a função apropriada, como a função Usuário de Criptografia do Serviço de Criptografia do Key Vault à identidade antes que possa acessar a chave de criptografia no cofre de chaves. Portanto, você não pode configurar chaves gerenciadas pelo cliente para usar uma identidade atribuída pelo sistema durante a criação de um grupo de volumes. Ao criar um novo grupo de volumes com chaves gerenciadas pelo cliente, é necessário usar uma identidade atribuída pelo usuário e quando você criar o grupo de volumes, você pode configurar uma identidade atribuída pelo sistema após a criação.
Use esse código de exemplo para atribuir a função RBAC necessária para a identidade gerenciada atribuída pelo sistema, com escopo no cofre de chaves. Use as mesmas variáveis definidas anteriormente nesse artigo.
# Get the Elastic SAN volume group.
$ElasticSanVolumeGroup = Get-AzElasticSanVolumeGroup -Name $EsanVgName -ElasticSanName $EsanName -ResourceGroupName $RgName
# Generate a system-assigned identity if one does not already exist.
If ($ElasticSanVolumeGroup.IdentityPrincipalId -eq $null) {
Update-AzElasticSanVolumeGroup -ResourceGroupName $RgName -ElasticSanName $EsanName -Name $EsanVgName -IdentityType "SystemAssigned"}
# Get the `PrincipalId` (system-assigned identity) of the volume group.
$PrincipalId = $ElasticSanVolumeGroup.IdentityPrincipalId
# Setup the parameters to assign the Crypto Service Encryption User role.
$CryptoUserRoleArguments = @{
ObjectId = $PrincipalId
RoleDefinitionName = "Key Vault Crypto Service Encryption User"
Scope = $KeyVault.ResourceId
}
# Assign the Crypto Service Encryption User role.
New-AzRoleAssignment @CryptoUserRoleArguments
Configurar chaves gerenciadas pelo cliente para um grupo de volumes
Selecione o módulo do Azure PowerShell ou a guia CLI do Azure para obter instruções sobre como configurar chaves de criptografia gerenciadas pelo cliente usando a ferramenta de gerenciamento de sua preferência.
Agora que você selecionou o PowerShell, selecione a guia que corresponde ao fato de você querer definir as configurações durante a criação de um novo grupo de volumes ou atualizar as configurações de um grupo existente.
Use esse exemplo para configurar chaves gerenciadas pelo cliente com atualização automática da versão da chave durante a criação de um novo grupo de volumes usando o PowerShell:
# Setup the parameters to create the volume group.
$NewVgArguments = @{
Name = $EsanVgName
ElasticSanName = $EsanName
ResourceGroupName = $RgName
ProtocolType = "Iscsi"
Encryption = "EncryptionAtRestWithCustomerManagedKey"
KeyName = $KeyName
KeyVaultUri = $KeyVault.VaultUri
IdentityType = "UserAssigned"
IdentityUserAssignedIdentity = @{$UserIdentity.Id=$UserIdentity}
EncryptionIdentityEncryptionUserAssignedIdentity = $UserIdentity.Id
}
# Create the volume group.
New-AzElasticSanVolumeGroup @NewVgArguments
Para configurar chaves gerenciadas pelo cliente com atualização manual da versão da chave durante a criação de um novo grupo de volumes usando o PowerShell, adicione o parâmetro KeyVersion
como mostrado nesse exemplo:
# Setup the parameters to create the volume group.
$NewVgArguments = @{
Name = $EsanVgName
ElasticSanName = $EsanName
ResourceGroupName = $RgName
ProtocolType = "Iscsi"
Encryption = "EncryptionAtRestWithCustomerManagedKey"
KeyName = $KeyName
KeyVaultUri = $KeyVault.VaultUri
KeyVersion = $Key.Version
IdentityType = "UserAssigned"
IdentityUserAssignedIdentity = @{$UserIdentity.Id=$UserIdentity}
EncryptionIdentityEncryptionUserAssignedIdentity = $UserIdentity.Id
}
# Create the volume group.
New-AzElasticSanVolumeGroup @NewVgArguments