Share via


Configuración de claves administradas por el cliente para una Azure Elastic SAN

Todos los datos escritos en un volumen de Elastic SAN se cifran automáticamente en reposo con una clave de cifrado de datos (DEK). Azure usa el cifrado de sobre para cifrar la DEK mediante una clave de cifrado de claves (KEK). De forma predeterminada, la KEK es administrada por la plataforma (es decir, por Microsoft), pero puede crear y administrar su propia KEK.

En este artículo se muestra cómo configurar el cifrado de un grupo de volúmenes de Elastic SAN con claves administradas por el cliente almacenadas en Azure Key Vault.

Limitaciones

La lista siguiente contiene las regiones en las que Elastic SAN está disponible actualmente y en qué regiones se admite tanto el almacenamiento con redundancia de zona (ZRS) como el almacenamiento con redundancia local (LRS) o solo LRS:

  • Norte de Sudáfrica: LRS
  • Este de Asia: LRS
  • Sudeste de Asia: LRS
  • Sur de Brasil: LRS
  • Centro de Canadá: LRS
  • Centro de Francia: LRS y ZRS
  • Centro-oeste de Alemania: LRS
  • Este de Australia: LRS
  • Norte de Europa: LRS y ZRS
  • Oeste de Europa: LRS y ZRS
  • Sur de Reino Unido: LRS
  • Este de Japón: LRS
  • Centro de Corea del Sur: LRS
  • Centro de EE. UU.
  • Este de EE. UU.: LRS
  • Centro-sur de EE. UU.: LRS
  • Este de EE. UU. 2: LRS
  • Oeste de EE. UU. 2: LRS y ZRS
  • Oeste de EE. UU. 3: LRS
  • Centro de Suecia: LRS
  • Norte de Suiza: LRS

Requisitos previos

Para realizar las operaciones descritas en este artículo, debe preparar su cuenta de Azure y las herramientas de administración que planea usar. La preparación incluye la instalación de los módulos necesarios, el inicio de sesión en la cuenta y la configuración de variables para PowerShell y la CLI de Azure. En este artículo se usa el mismo conjunto de variables, por lo que al configurarlas ahora, podrá usar las mismas variables en todos los ejemplos.

Para realizar las operaciones descritas en este artículo mediante PowerShell:

  1. Instale la versión más reciente de Azure PowerShell si aún no lo ha hecho.

  2. Una vez instalado Azure PowerShell, instale la versión 0.1.2 o posterior de la extensión Elastic SAN con Install-Module -Name Az.ElasticSan -Repository PSGallery.

  3. Inicie sesión en Azure.

    Connect-AzAccount
    

Cree las variables que se usarán en los ejemplos de PowerShell de este artículo.

Copie el código de ejemplo y reemplace todo el texto de marcador de posición por sus propios valores. Use las mismas variables en todos los ejemplos de este artículo:

# 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"

Configuración del almacén de claves

Puede usar un almacén de claves nuevo o existente para almacenar las claves administradas por el cliente. El recurso cifrado y el almacén de claves pueden estar en distintas regiones o suscripciones en el mismo inquilino de Microsoft Entra ID. Para más información sobre Azure Key Vault, consulte Introducción a Azure Key Vault y ¿Qué es Azure Key Vault?

El uso de claves administradas por el cliente con cifrado requiere que la eliminación temporal y la protección de purga estén habilitadas para el almacén de claves. La eliminación temporal está habilitada de manera predeterminada al crear un almacén de claves y no se puede deshabilitar. Puede habilitar la protección de purga cuando cree el almacén de claves o después de crearlo. El cifrado de Azure Elastic SAN admite claves RSA de 2048, 3072 y 4096 bits.

Azure Key Vault admite la autorización con Azure RBAC mediante un modelo de permisos de Azure RBAC. Microsoft recomienda usar el modelo de permisos de RBAC de Azure sobre las directivas de acceso del almacén de claves. Para más información, consulte Concesión de permisos a las aplicaciones para que accedan a una instancia de Azure Key Vault mediante Azure RBAC.

Hay dos pasos implicados en la preparación de un almacén de claves como almacén para las KEK del grupo de volúmenes:

  • Cree un nuevo almacén de claves con la eliminación temporal y la protección de purga habilitadas, o bien habilite la protección de purga para un almacén de claves existente.
  • Cree o asigne un rol Azure RBAC que tenga los permisos backup create delete get import get list update restore.

En el ejemplo siguiente:

  • Cea un nuevo almacén de claves con la eliminación temporal y la protección de purga habilitadas.
  • Obtiene el UPN de su cuenta de usuario.
  • Asigna el rol de Agente criptográfico de Key Vault para el nuevo almacén de claves a su cuenta.

Use las mismas variables que definió anteriormente en este artículo.

# 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 más información sobre cómo habilitar la protección de purga en un almacén de claves existente con PowerShell, consulte Introducción a la recuperación de Azure Key Vault.

Para más información sobre cómo asignar un rol RBAC con PowerShell, consulte Asignación de roles de Azure mediante Azure PowerShell.

Adición de una clave

A continuación, agregue una clave al almacén de claves. Antes de agregar la clave, asegúrese de que se le ha asignado el rol Key Vault Crypto Officer.

El cifrado de Azure Storage y Azure Elastic SAN admite claves RSA de 2048, 3072 y 4096 bits. Para más información sobre los tipos de clave admitidos, consulte Acerca de las claves.

Use estos comandos de muestra para agregar una clave al almacén de claves con PowerShell. Use las mismas variables que definió anteriormente en este artículo.

# 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

Elección de una estrategia de rotación de claves

Seguir los procedimientos recomendados criptográficos significa rotar la clave que protege el grupo de volúmenes de Elastic SAN según una programación normal, normalmente al menos cada dos años. Azure Elastic SAN nunca modifica la clave en el almacén de claves, pero puede configurar una directiva de rotación de claves para rotar la clave según sus requisitos de cumplimiento. Para más información, consulte Configurar la rotación automática de claves en Azure Key Vault.

Una vez rotada la clave en el almacén de claves, la configuración de cifrado para el grupo de volúmenes de Elastic SAN debe actualizarse para usar la nueva versión de la clave. Las claves administradas por el cliente admiten la actualización automática y manual de la versión de la KEK. Decida qué enfoque quiere usar antes de configurar las claves administradas por el cliente para un grupo de volúmenes nuevo o existente.

Para más información sobre la rotación de claves, consulte Actualización de la versión de la clave.

Importante

Al modificar la clave o la versión de la clave, la protección de la clave de cifrado de los datos raíz cambiará, pero los datos del grupo de volúmenes de Azure Elastic SAN seguirán cifrados en todo momento. No se requiere ninguna acción adicional de su parte para garantizar que sus datos estén protegidos. La rotación de la versión de la clave no afecta al rendimiento y no hay ningún tiempo de inactividad asociado.

Rotación automática de la versión de la clave

Azure Elastic SAN puede actualizar automáticamente la clave administrada por el cliente que se usa para el cifrado, de modo que se use la versión más reciente de esta en el almacén de claves. Azure Elastic SAN comprueba el almacén de claves diariamente para obtener una nueva versión de la clave. Cuando hay disponible una versión nueva, empieza a usar automáticamente la versión más reciente de la clave para el cifrado. Al girar una clave, asegúrese de esperar 24 horas antes de deshabilitar la versión anterior.

Importante

Si el grupo de volúmenes Elastic SAN se configuró para la actualización manual de la versión de la clave y quiere cambiarlo para actualizarlo automáticamente, cambie la versión de la clave a una cadena vacía. Para obtener más información acerca de cómo cambiar manualmente la versión de la clave, consulte Actualización automática de la versión de la clave.

Rotación manual de la versión de la clave

Si prefiere actualizar la versión de la clave manualmente, especifique el URI de una versión en particular en el momento en que configure el cifrado con claves administradas por el cliente. Al especificar el identificador URI, el SAN elástico no actualizará automáticamente la versión de la clave cuando se cree una nueva versión en el almacén de claves. Para que la SAN elástica use una nueva versión de clave, debe actualizarla manualmente.

Para buscar el URI de una versión específica de una clave en Azure Portal:

  1. Vaya al almacén de claves.
  2. En Objetos, seleccione Claves.
  3. Seleccione la clave que quiera para ver sus versiones.
  4. Seleccione cualquiera de las versiones de clave para ver su configuración.
  5. Copie el valor del campo Identificador de clave, que proporciona el URI.
  6. Guarde el texto copiado para usarlo más adelante al configurar el cifrado para el grupo de volúmenes.

Screenshot showing key vault key URI in Azure portal.

Elección de una identidad administrada para autorizar el acceso al almacén de claves

Al habilitar las claves de cifrado administradas por el cliente para un grupo de volúmenes de Elastic SAN, debe especificar una identidad administrada que se usará para autorizar el acceso al almacén de claves que contiene la clave. La identidad administrada debe tener los siguientes permisos:

  • get
  • wrapkey
  • unwrapkey

La identidad administrada que tiene acceso autorizado al almacén de claves puede ser una identidad administrada asignada por el usuario o por el sistema. Para más información sobre los tipos de identidad administrada asignada por el sistema y asignada por el usuario, consulte Tipos de identidad administrada.

Cuando se crea un grupo de volúmenes, se le agrega automáticamente una identidad asignada por el sistema. Si quiere usar una identidad asignada por el usuario, créela antes de configurar las claves de cifrado administradas por el cliente para el grupo de volúmenes. Para más información sobre cómo crear y administrar una identidad administrada asignada por el usuario, consulte Administración de identidades administradas asignadas por el usuario.

Uso de una identidad administrada asignada por el usuario para autorizar el acceso

Al habilitar claves administradas por el cliente para un nuevo grupo de volúmenes, debe especificar una identidad administrada asignada por el usuario. Si configura claves administradas por el cliente en un grupo de volúmenes existente, puede usar una identidad administrada asignada por el usuario o por el sistema.

Al configurar claves administradas por el cliente con una identidad administrada asignada por el usuario, la identidad administrada asignada por el usuario se usa para autorizar el acceso al almacén de claves que contiene la clave. Debe crear la identidad asignada por el usuario antes de configurar las claves administradas por el cliente.

Se crea una identidad administrada asignada por el usuario como recurso de Azure independiente. Para más información sobre las identidades administradas asignadas por el usuario, consulte Tipos de identidad administrada. Para más información sobre cómo crear y administrar una identidad administrada asignada por el usuario, consulte Administración de identidades administradas asignadas por el usuario.

La identidad administrada asignada por el usuario debe tener los permisos para acceder a la clave en el almacén. Puede conceder permisos manualmente a la identidad o asignar un rol integrado con el ámbito del almacén de claves para conceder estos permisos.

El ejemplo siguiente muestra cómo:

  • Cree una identidad administrada asignada por el usuario.
  • Espere a que se complete la creación de la identidad asignada por el usuario.
  • Obtenga el PrincipalId de la nueva identidad.
  • Asigne un rol RBAC a la nueva identidad, con ámbito en el almacén de claves.

Use las mismas variables que definió anteriormente en este artículo.

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

Sugerencia

Espere aproximadamente 1 minuto para que finalice la creación de la identidad asignada por el usuario 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

Uso de una identidad administrada asignada por el sistema para autorizar el acceso

Una identidad administrada asignada por el sistema está asociada a una instancia de un servicio de Azure, como un grupo de volúmenes de Azure Elastic SAN.

La identidad administrada asignada por el usuario debe tener los permisos para acceder a la clave del almacén de claves. En este artículo se usa el rol Usuario de cifrado del servicio criptográfico de Key Vault a la identidad administrada asignada por el sistema con el ámbito del almacén de claves para conceder estos permisos.

Cuando se crea un grupo de volúmenes, se le agrega automáticamente una identidad asignada por el sistema si se especifica el parámetro -IdentityType "SystemAssigned" con el comando New-AzElasticSanVolumeGroup. La identidad asignada por el sistema no está disponible hasta que no se ha creado el grupo de volúmenes. También debe asignar a la identidad un rol apropiado, como el rol Usuario del cifrado del servicio de cifrado de Key Vault a la identidad para que pueda acceder a la clave de cifrado en el almacén de claves. Por lo tanto, no puede configurar claves administradas por el cliente para usar una identidad asignada por el sistema durante la creación de un grupo de volúmenes. Al crear un nuevo grupo de volúmenes con claves administradas por el cliente, debe usar una identidad asignada por el usuario al crear el grupo de volúmenes, puede configurar una identidad asignada por el sistema después de crearla.

Use este código de ejemplo para asignar el rol RBAC necesario a la identidad administrada asignada por el sistema, con ámbito al almacén de claves. Use las mismas variables que definió anteriormente en este artículo.

# 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

Configuración de claves administradas por el cliente para un grupo de volúmenes

Seleccione el módulo Azure PowerShell o la pestaña CLI de Azure para obtener instrucciones acerca de cómo configurar claves de cifrado administradas por el cliente utilizando su herramienta de administración preferida.

Ahora que ha seleccionado PowerShell, seleccione la pestaña que corresponde a si desea configurar las opciones durante la creación de un nuevo grupo de volúmenes o actualizar la configuración de una existente.

Use este ejemplo para configurar claves administradas por el cliente con actualización automática de la versión de la clave durante la creación de un nuevo grupo de volúmenes mediante 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 claves administradas por el cliente con actualización manual de la versión de la clave durante la creación de un nuevo grupo de volúmenes mediante PowerShell, agregue el parámetro KeyVersion como se muestra en este ejemplo:

# 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

Pasos siguientes