Share via


Configurar chaves gerenciadas pelo cliente para uma SAN elástica do Azure

Todos os dados gravados em um volume SAN elástico são automaticamente criptografados em repouso com uma chave de criptografia de dados (DEK). O Azure usa a criptografia de envelope para criptografar a DEK usando uma chave de criptografia de chave (KEK). Por padrão, o KEK é gerenciado por plataforma (gerenciado pela Microsoft), mas você pode criar e gerenciar o seu próprio.

Este artigo mostra como configurar a criptografia de um grupo de volumes do Elastic SAN com chaves gerenciadas pelo cliente armazenadas em um Cofre de Chaves do Azure.

Limitações

A lista a seguir contém as regiões em que a SAN elástica está disponível no momento e quais regiões oferecem suporte ao ZRS (armazenamento com redundância de zona) e ao LRS (armazenamento com redundância local) ou apenas ao LRS:

  • África do Sul Norte - LRS
  • Ásia Oriental - LRS
  • Sudeste Asiático - LRS
  • Sul do Brasil - LRS
  • Canadá Central - LRS
  • França Central - LRS & ZRS
  • Alemanha Centro-Oeste - LRS
  • Leste da Austrália - LRS
  • Norte da Europa - LRS & ZRS
  • Europa Ocidental - LRS & ZRS
  • Sul do Reino Unido - LRS
  • Leste do Japão - LRS
  • Coreia Central - LRS
  • E.U.A. Central
  • Leste dos EUA - LRS
  • Centro-Sul dos EUA - LRS
  • Leste dos EUA 2 - LRS
  • Oeste dos EUA 2 - LRS & ZRS
  • Oeste dos EUA 3 - LRS
  • Suécia Central - LRS
  • Suíça Norte - LRS

Pré-requisitos

Para executar as operações descritas neste artigo, você deve preparar sua conta do Azure e as ferramentas de gerenciamento que planeja usar. A preparação inclui a instalação dos módulos necessários, o início de sessão na sua conta e a definição de variáveis para o PowerShell e a CLI do Azure. O mesmo conjunto de variáveis é usado ao longo deste artigo, portanto, defini-las agora permite que você use as mesmas em todas as amostras.

Para executar as operações descritas neste artigo usando o PowerShell:

  1. Instale a versão mais recente do Azure PowerShell , caso ainda não o tenha feito.

  2. Depois que o Azure PowerShell estiver instalado, instale a versão 0.1.2 ou posterior da extensão Elastic SAN com Install-Module -Name Az.ElasticSan -Repository PSGalleryo .

  3. Inicie sessão no Azure.

    Connect-AzAccount
    

Criar variáveis a serem usadas nos exemplos do PowerShell neste artigo

Copie o código de exemplo e substitua todo o texto do espaço reservado por seus próprios valores. Use as mesmas variáveis em todos os exemplos deste 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, consulte Visão geral do Azure Key Vault e O que é o Azure Key Vault?.

O uso de chaves gerenciadas pelo cliente com criptografia requer que a proteção de exclusão suave e limpeza esteja habilitada para o cofre de chaves. A exclusão suave é ativada por padrão quando você cria um novo cofre de chaves e não pode ser desabilitada. Você pode ativar a proteção contra limpeza ao criar o cofre de chaves ou depois que ele for criado. A criptografia SAN elástica do Azure dá suporte a chaves RSA dos tamanhos 2048, 3072 e 4096.

O Azure Key Vault dá suporte à autorização com o Azure RBAC por meio de um modelo de permissão do Azure RBAC. A Microsoft recomenda o uso do modelo de permissão RBAC do Azure sobre as políticas de acesso ao cofre de chaves. Para obter mais informações, consulte Conceder permissão a aplicativos para acessar um cofre de chaves do Azure usando o Azure RBAC.

Há duas etapas envolvidas na preparação de um cofre de chaves como um armazenamento para seus KEKs de grupo de volumes:

  • Crie um novo cofre de chaves com a proteção de exclusão e limpeza suave habilitada ou habilite a proteção contra limpeza para uma existente.
  • Crie ou atribua uma função RBAC do Azure que tenha o backup create delete get import get list update restore permissions.

O exemplo a seguir:

  • Cria um novo cofre de chaves com a proteção de eliminação suave e limpeza ativada.
  • Obtém o UPN da sua conta de utilizador.
  • Atribui a função Key Vault Crypto Officer para o novo cofre de chaves à sua conta.

Use as mesmas variáveis definidas anteriormente neste 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, consulte Visão geral da recuperação do Cofre de Chaves do Azure.

Para obter mais informações sobre como atribuir uma função RBAC com o PowerShell, consulte Atribuir funções do Azure usando o Azure PowerShell.

Adicionar uma chave

Em seguida, adicione uma chave ao cofre de chaves. Antes de adicionar a chave, certifique-se de que atribuiu a si mesmo a função Key Vault Crypto Officer .

O Armazenamento do Azure e a criptografia Elastic SAN oferecem suporte a chaves RSA dos tamanhos 2048, 3072 e 4096. Para obter mais informações sobre os tipos de chave suportados, consulte Sobre chaves.

Use estes comandos de exemplo para adicionar uma chave ao cofre de chaves com o PowerShell. Use as mesmas variáveis definidas anteriormente neste 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

Escolha uma estratégia de rotação de chaves

Seguir as práticas recomendadas de criptografia significa girar a chave que está protegendo seu grupo de volumes do Elastic SAN em um cronograma 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 girar a chave de acordo com seus requisitos de conformidade. Para obter mais informações, consulte Configurar a rotação automática de chaves criptográficas no Cofre de Chaves do Azure.

Depois que a chave é girada no cofre de chaves, a configuração de criptografia para o grupo de volumes do Elastic SAN deve ser atualizada para usar a nova versão da chave. As chaves gerenciadas pelo cliente suportam a atualização automática e manual da versão KEK. Decida qual abordagem 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 chaves, consulte Atualizar a versão da 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 sempre criptografados. Não é necessária qualquer ação adicional da sua parte para assegurar que os dados estão protegidos. Girar a versão principal não afeta o desempenho e não há tempo de inatividade associado a ela.

Rotação automática da 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 diariamente o cofre de chaves em busca de uma nova versão da chave. Quando uma nova versão fica disponível, ela começa automaticamente a usar a versão mais recente da chave para criptografia. Quando rodar uma chave, certifique-se de que aguarda 24 horas antes de desativar 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ê desejar alterá-lo para atualizá-lo automaticamente, 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 da versão da chave

Se preferir atualizar a versão da chave manualmente, especifique o URI para uma versão específica no momento em que configurar a criptografia com chaves gerenciadas pelo cliente. Quando você especifica o URI, sua SAN elástica não atualiza automaticamente a versão da chave quando uma nova versão é criada no cofre de chaves. Para que sua SAN elástica 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:

  1. Navegue até o cofre das chaves.
  2. Em Objetos, selecione Chaves.
  3. Selecione a chave desejada para visualizar suas versões.
  4. Selecione uma versão chave para visualizar as configurações dessa versão.
  5. Copie o valor do campo Identificador de Chave , que fornece o URI.
  6. Salve o texto copiado para usar mais tarde ao configurar a criptografia para seu grupo de volumes.

Screenshot showing key vault key URI in Azure portal.

Escolha 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 usada para autorizar o acesso ao cofre de chaves que contém a chave. A identidade gerenciada deve ter as seguintes permissões:

  • Obter
  • chave de invólucro
  • desembrulhar

A identidade gerenciada que é acesso autorizado ao cofre de chaves pode ser uma identidade gerenciada atribuída pelo usuário ou pelo sistema. Para saber mais sobre identidades gerenciadas atribuídas pelo sistema versus identidades gerenciadas atribuídas pelo usuário, consulte Tipos de identidade gerenciada.

Quando um grupo de volumes é criado, uma identidade atribuída ao 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, consulte Gerenciar identidades gerenciadas atribuídas pelo usuário.

Usar uma identidade gerenciada atribuída pelo usuário para autorizar o acesso

Ao habilitar chaves gerenciadas pelo cliente para um novo grupo de volumes, você deve especificar uma identidade gerenciada atribuída pelo usuário. Um grupo de volumes existente oferece 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.

Quando você configura 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ê deve criar a identidade atribuída pelo usuário antes de configurar 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, consulte Tipos de identidade gerenciada. Para saber como criar e gerenciar uma identidade gerenciada atribuída pelo usuário, consulte Gerenciar identidades gerenciadas atribuídas pelo usuário.

A identidade gerenciada atribuída pelo usuário deve ter permissões para acessar a chave no cofre de chaves. Você pode conceder manualmente permissões à identidade ou atribuir uma função interna com escopo do cofre de chaves para conceder essas permissões.

O exemplo a seguir mostra como:

  • Crie uma nova identidade gerenciada atribuída pelo usuário.
  • Aguarde a conclusão da criação da identidade atribuída pelo usuário.
  • Obtenha a PrincipalId partir da nova identidade.
  • Atribua uma função RBAC à nova identidade, com escopo para o cofre de chaves.

Use as mesmas variáveis definidas anteriormente neste artigo.

# Create a new user-assigned managed identity.
$UserIdentity = New-AzUserAssignedIdentity -ResourceGroupName $RgName -Name $ManagedUserName -Location $Location

Gorjeta

Aguarde cerca de 1 minuto para que a criação da identidade atribuída pelo usuário termine antes de prosseguir.

# 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 ao 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 deve ter permissões para acessar a chave no cofre de chaves. Este artigo usa a função Usuário de Criptografia do Serviço de Criptografia do Cofre da Chave para a identidade gerenciada atribuída ao sistema com o escopo do cofre de chaves para conceder essas permissões.

Quando um grupo de volumes é criado, uma identidade atribuída ao sistema é criada automaticamente para ele se o parâmetro for especificado com o -IdentityType "SystemAssigned"New-AzElasticSanVolumeGroup comando. A identidade atribuída ao sistema só estará disponível após a criação do grupo de volumes. Você também deve atribuir uma função apropriada, como a função Usuário de Criptografia do Serviço de Criptografia do Cofre da Chave, à identidade antes que ela possa acessar a chave de criptografia no cofre de chaves. Portanto, não é possível configurar chaves gerenciadas pelo cliente para usar uma identidade atribuída ao sistema durante a criação de um grupo de volumes. Ao criar um novo grupo de volumes com chaves gerenciadas pelo cliente, você deve usar uma identidade atribuída pelo usuário ao criar o grupo de volumes, você pode configurar uma identidade atribuída ao sistema após sua criação.

Use este código de exemplo para atribuir a função RBAC necessária à identidade gerenciada atribuída ao sistema, com escopo para o cofre de chaves. Use as mesmas variáveis definidas anteriormente neste 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 sua ferramenta de gerenciamento preferida.

Agora que você selecionou PowerShell, selecione a guia que corresponde se você deseja definir as configurações durante a criação de um novo grupo de volumes ou atualizar as configurações de um existente.

Use este exemplo para configurar chaves gerenciadas pelo cliente com a 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 a atualização manual da versão da chave durante a criação de um novo grupo de volumes usando o PowerShell, adicione o KeyVersion parâmetro conforme mostrado neste 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

Próximos passos