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: grupos de SQL dedicados de Azure Synapse Analytics (anteriormente SQL DW)

Tip

Microsoft Fabric Data Warehouse es un almacenamiento relacional de escala empresarial en una base de lago de datos, con una arquitectura lista para el futuro, inteligencia artificial integrada y nuevas características. Si no está familiarizado con el almacenamiento de datos, comience con Fabric Data Warehouse. Las cargas de trabajo del grupo dedicado de SQL pueden actualizarse a Fabric para acceder a funcionalidades avanzadas en ciencia de datos, análisis en tiempo real e informes.

Este artículo explica cómo utilizar una clave de Azure Key Vault para el cifrado transparente de datos (TDE) en Azure Synapse Analytics. 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).

Note

Este artículo trata sobre pools SQL dedicados independientes (anteriormente SQL DW).

  • Para los pools SQL dedicados de Azure Synapse Analytics (anteriormente SQL DW), configura el protector TDE a nivel de servidor. Todas las bases de datos cifradas asociadas a ese servidor heredan el protector TDE.
  • Cifra los datos en pools SQL dedicados y pools SQL serverless en un espacio de trabajo Synapse usando la clave gestionada por el cliente configurada a nivel de espacio de trabajo. Para obtener más información sobre el cifrado de datos transparente para pools de SQL dedicados dentro de áreas de trabajo de Synapse, consulte Cifrado de Azure Synapse Analytics.

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.

Note

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

Note

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

Tip

Uso de claves con versión de Azure Key Vault para TDE

Al configurar el protector TDE, haz referencia a una clave de Azure Key Vault usando una versión específica de clave.

Example:

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

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

# 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 o el almacenamiento de datos tiene TDE habilitado con una clave de cifrado en Azure Key Vault.

Comprobar el estado de cifrado y la actividad de cifrado

Use Get-AzSqlDatabaseTransparentDataEncryption para obtener el estado de cifrado de una base de datos o almacenamiento 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>
    

Troubleshooting

  • 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.