PowerShell y la CLI de Azure: habilitar el Cifrado de datos transparente con una clave administrada por el cliente desde Azure Key Vault

Se aplica a:Azure SQL DatabaseAzure SQL Managed Instance

Este artículo muestra cómo utilizar una clave de Azure Key Vault para el cifrado transparente de datos (TDE) en Azure SQL Database. Para obtener más información sobre TDE con la integración de Azure Key Vault - compatibilidad con Traiga su propia clave (BYOK), visite TDE with customer-managed keys in Azure Key Vault (TDE con claves administradas por el cliente de Azure Key Vault). Si quieres instrucciones del portal de Azure sobre cómo habilitar TDE con una clave gestionada por el cliente de Azure Key Vault, consulta Crear servidor configurado con identidad gestionada asignada por el usuario y TDE con clave administrada por el cliente.

Nota

Azure SQL Database soporta claves asimétricas (RSA) y simétricas (AES) para Cifrado de datos transparente gestionada por el cliente, dependiendo de la configuración. La compatibilidad con claves simétricas (AES) está actualmente en versión preliminar pública y está limitada a Azure SQL Database. Podrías ver que esta capacidad aparece con el tiempo dependiendo de tu región y el estado del despliegue del servicio. Para más detalles, véase Cifrado de datos transparente with customer-managed keys (BYOK).

Requisitos previos para PowerShell

  • Debe tener una suscripción de Azure y ser un administrador en esa suscripción.
  • [Recomendado, pero opcional] Debe tener un módulo de seguridad de hardware (HSM) o un almacén de claves locales para crear una copia local del material de claves del protector de TDE.
  • Es preciso tener instalado y en ejecución Azure PowerShell.
  • Cree una instancia de Azure Key Vault y una clave para usar para TDE.
  • La clave debe tener los siguientes atributos que se usarán para TDE:
    • La fecha de activación (si se establece) debe ser una fecha y hora del pasado
    • La fecha de expiración (si se establece) debe ser una fecha y hora del futuro
    • El estado de la clave debe ser Habilitada
    • Poder realizar las operaciones get, wrap key, unwrap key
  • Para usar una clave HSM administrada de Azure Key Vault, siga las instrucciones para crear y activar un HSM administrado mediante CLI de Azure

Para obtener instrucciones sobre la instalación del módulo Azure PowerShell, consulte Instalación de Azure PowerShell.

Para obtener información específica sobre Azure Key Vault, consulte las instrucciones de PowerShell desde Azure Key Vault y cómo usar la eliminación temporal de Azure Key Vault con PowerShell.

Asignación de una identidad de Microsoft Entra al servidor

Si tienes un servidor existente, utiliza las siguientes instrucciones para añadir una identidad Microsoft Entra a tu servidor:

$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity

Si estás creando un servidor, usa el cmdlet New-AzSqlServer con la -Identity etiqueta para añadir una identidad Microsoft Entra durante la creación del servidor:

$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
    -ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity

Concesión de permisos de Azure Key Vault al servidor

Utilice el cmdlet Set-AzKeyVaultAccessPolicy para conceder al servidor acceso al almacén de claves antes de usar una clave para TDE.

Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
    -ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey

Para añadir permisos a tu servidor en un HSM gestionado, añade el rol RBAC local Managed HSM Crypto Service Encryption User al servidor. Este rol permite al servidor realizar get, wrap key, y unwrap key operaciones sobre las claves en el HSM gestionado. Para obtener más información, consulte Administración de roles HSM administrados.

Agregue la clave de Azure Key Vault al servidor y establezca el protector de TDE.

Nota

En el caso de las claves HSM administradas, use la versión Az.Sql 2.11.1 de PowerShell o posterior.

Nota

La longitud combinada del nombre de la bóveda de claves y del nombre clave no puede superar los 94 caracteres.

Sugerencia

Uso de claves de Azure Key Vault con versiones y sin versiones para TDE

Al configurar el protector TDE, puedes hacer referencia a una clave de Azure Key Vault usando una versión específica de clave o un identificador de clave sin versión.

En ambos casos, Azure SQL Database siempre resuelve y usa la versión habilitada más reciente de la clave en Azure Key Vault o HSM administrado de Azure Key Vault. Use identificadores de clave sin versión para evitar insertar una versión de clave específica en la configuración del protector de TDE.

Actualmente, solo se admiten identificadores de clave sin versión para Azure SQL Database.

Ejemplos:

  • Identificador de clave que incluye una versión específica

    https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>

  • Identificador de clave sin versión

    https://<key-vault-name>.vault.azure.net/keys/<key-name>

# add the key from Azure Key Vault to the server
Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>

# set the key as the TDE protector for all resources under the server
Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> `
   -Type AzureKeyVault -KeyId <KeyVaultKeyId>

# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>

Activar TDE

Utilice el cmdlet Set-AzSqlDatabaseTransparentDataEncryption para activar el TDE.

Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"

Ahora la base de datos tiene TDE activado con una clave de cifrado en Azure Key Vault.

Comprobar el estado de cifrado y la actividad de cifrado

Utiliza el Get-AzSqlDatabaseTransparentDataEncryption para obtener el estado de cifrado de una base de datos.

# get the encryption state of the database
Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> `

Cmdlets de PowerShell útiles

  • Utilice el cmdlet Set-AzSqlDatabaseTransparentDataEncryption para desactivar TDE.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Use el cmdlet Get-AzSqlServerKeyVaultKey para devolver la lista de claves de Azure Key Vault agregadas al servidor.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Utilice el comando Remove-AzSqlServerKeyVaultKey para eliminar una clave de Azure Key Vault del servidor.

    # the key set as the TDE Protector cannot be removed
    Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    

Solución de problemas

  • Si no se encuentra Key Vault, asegúrate de estar en la suscripción correcta.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Si no puedes añadir la nueva clave al servidor, o si no puedes actualizar la nueva clave como protector de TDE, comprueba las siguientes condiciones:

    • La clave no debería tener fecha de caducidad.
    • La clave debe tener las operaciones get, wrap key y unwrap key.

TDE BYOK Azure Synapse Analytics

Para la documentación de TDE BYOK sobre Azure Synapse Analytics, consulte la documentación SQL de Azure Synapse Analytics. Para obtener documentación sobre el Cifrado de datos transparente para grupos de SQL dedicados en áreas de trabajo de Synapse, consulte Cifrado de Azure Synapse Analytics.