TDE CMK de nivel de base de datos está disponible para Azure SQL Database (todas las ediciones de SQL Database). No está disponible para Azure SQL Managed Instance, instancias locales de SQL Server, VM de Azure y Azure Synapse Analytics (grupos de SQL dedicados [anteriormente SQL DW]).
La misma guía se puede aplicar para configurar claves administradas por el cliente en el nivel de base de datos en el mismo inquilino mediante la exclusión del parámetro de id. de cliente federado. Para obtener más información sobre las claves administradas por el cliente en el nivel de base de datos, consulte Cifrado de datos transparente (TDE) con claves administradas por el cliente en el nivel de base de datos.
Microsoft Entra ID era conocido anteriormente como Azure Active Directory (Azure AD).
Requisitos previos
En esta guía se da por supuesto que tiene dos inquilinos de Microsoft Entra.
El primero consta del recurso de Azure SQL Database, una aplicación de Microsoft Entra multiinquilino y una identidad administrada asignada por el usuario.
El segundo inquilino aloja la instancia de Azure Key Vault.
Para obtener instrucciones completas sobre cómo configurar CMK entre inquilinos y los permisos de RBAC necesarios para configurar aplicaciones de Microsoft Entra y Azure Key Vault, consulte una de las siguientes guías:
Versión 10.3.0, o superior, del módulo Az PowerShell.
Los permisos de RBAC necesarios para CMK de nivel de base de datos son los mismos necesarios para CMK de nivel de servidor. En concreto, en el nivel de base de datos se aplican los mismos permisos de RBAC que se aplican al usar Azure Key Vault, identidades administradas y CMK entre inquilinos para TDE en el nivel de servidor. Para más información sobre la administración de claves y la directiva de acceso, vea Administración de claves.
Antes de poder configurar TDE para Azure SQL Database con CMK entre inquilinos, es necesario tener una aplicación de Microsoft Entra multiinquilino configurada con una identidad administrada asignada por el usuario asignada como credencial de identidad federada para la aplicación. Siga una de las guías de requisitos previos.
Registre el nombre e id. de la aplicación. Esta información se puede encontrar en Azure Portal>Microsoft Entra ID>Aplicaciones empresariales y, después, buscar la aplicación creada.
Recursos necesarios en el segundo inquilino
Nota:
Los módulos de PowerShell de Azure AD y MSOnline están en desuso a partir del 30 de marzo de 2024. Para obtener más información, lea la actualización de desuso. Desde esta fecha, el soporte de estos módulos se limita a la asistencia de migración al SDK de PowerShell de Microsoft Graph y a las correcciones de seguridad. Los módulos en desuso seguirán funcionando hasta el 30 de marzo de 2025.
Se recomienda migrar a PowerShell de Microsoft Graph para interactuar con Microsoft Entra ID (anteriormente Azure AD). Para preguntas comunes sobre la migración, consulte las Preguntas más frecuentes sobre migración. Nota: Las versiones 1.0.x de MSOnline pueden experimentar interrupciones después del 30 de junio de 2024.
En el segundo inquilino donde reside Azure Key Vault, cree una entidad de servicio (aplicación) mediante el id. de aplicación de la aplicación registrada desde el primer inquilino. Estos son algunos ejemplos de cómo registrar la aplicación multiinquilino. Reemplace <TenantID> y <ApplicationID> por el valor de Identificador de inquilino cliente de Microsoft Entra ID y el valor de Identificador de la aplicación de la aplicación multiinquilino, respectivamente:
Creación de una base de datos Azure SQL con claves administradas por el cliente en el nivel de base de datos
A continuación se muestran ejemplos para crear una base de datos en Azure SQL Database con una identidad administrada asignada por el usuario y cómo establecer una clave administrada por el cliente entre inquilinos en el nivel de base de datos. La identidad administrada asignada por el usuario es necesaria para configurar una clave administrada por el cliente para el cifrado de datos transparente durante la fase de creación de la base de datos.
Si aún no ha iniciado sesión en Azure Portal, hágalo cuando se le solicite.
En Bases de datos SQL, deje Tipo de recurso establecido en Base de datos única y seleccione Crear.
En la pestaña Conceptos básicos del formulario Crear base de datos SQL, en Detalles del proyecto, seleccione la suscripción de Azure, el grupo de recursos y el servidor que desee para la base de datos. Luego, use un nombre único para el nombre de la base de datos. Si no ha creado un servidor lógico para Azure SQL Database, consulte Creación de un servidor configurado con TDE con una clave administrada por el cliente entre inquilinos (CMK) como referencia.
Cuando llegue a la pestaña Seguridad, seleccione Configurar cifrado de datos transparente.
En el menú Cifrado de datos transparente, seleccione Clave administrada del cliente (CMK) de nivel de base de datos.
En Identidad administrada asignada por el usuario, seleccione Configurar para habilitar una identidad de base de datos y agregar una identidad administrada asignada por el usuario al recurso si una identidad deseada no aparece en el menú Identidad. Luego, seleccione Aplicar.
En el menú Cifrado de datos transparente, seleccione Cambiar clave. Seleccione la Subscription deseada, el Almacén de claves, la Clave y la Versión para la clave administrada por el cliente que se usará para TDE. Seleccione el botón Seleccionar. Tras seleccionar una clave, también puede agregar tantas claves de base de datos como sea necesario mediante el URI de Azure Key Vault (identificador de objeto) en el menú Cifrado de datos transparente.
La rotación automática de claves también se puede habilitar en el nivel de base de datos mediante la casilla Girar automáticamente la clave en el menú Cifrado de datos transparente.
Seleccione Aplicar para continuar con la creación de la base de datos.
En la parte inferior de la página, seleccione Revisar y crear.
En la página Revisar y crear, después de revisar, seleccione Crear.
Cree una base de datos configurada con una identidad administrada asignada por el usuario y un TDE administrado por el cliente entre inquilinos mediante el comando az sql db create. El valor de Identificador de clave del segundo inquilino se puede usar en el campo encryption-protector. El valor de Identificador de la aplicación de la aplicación multiinquilino se puede usar en el campo federated-client-id. El parámetro --encryption-protector-auto-rotation se puede usar para habilitar la rotación automática de claves en el nivel de base de datos.
Para obtener el Id. de recurso de la identidad administrada asignada por el usuario, busque Identidades administradas en Azure Portal. Busque su identidad administrada y vaya a Propiedades. Un ejemplo de Identificador de recurso para la UMI tiene un aspecto similar a /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Cree una base de datos configurada con una identidad administrada asignada por el usuario y un TDE administrado por el cliente entre inquilinos en el nivel de base de datos mediante PowerShell.
Para obtener instrucciones sobre la instalación del módulo Azure PowerShell, consulte Instalación de Azure PowerShell. Para los cmdlets concretos, consulte AzureRM.Sql.
<ResourceGroupName>: nombre del grupo de recursos para el servidor lógico de Azure SQL
<DatabaseName>: use un nombre de base de datos de Azure SQL único.
<ServerName>: use un nombre del servidor lógico de Azure SQL
<UserAssignedIdentityId>: la lista de identidades administradas asignadas por el usuario que se asignarán al servidor (pueden ser una o varias).
<CustomerManagedKeyId>: el valor de Identificador de clave de la instancia Key Vault del segundo inquilino
<FederatedClientId>: el valor de Identificador de la aplicación de la aplicación multiinquilino.
-EncryptionProtectorAutoRotation: se puede usar para habilitar la rotación automática de claves en el nivel de base de datos
Para obtener el Id. de recurso de la identidad administrada asignada por el usuario, busque Identidades administradas en Azure Portal. Busque su identidad administrada y vaya a Propiedades. Un ejemplo de Identificador de recurso para la UMI tiene un aspecto similar a /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
# create a server with user-assigned managed identity and cross-tenant customer-managed TDE with automatic key rotation enabled
$params = @{
ResourceGroupName = '<ResourceGroupName>'
ServerName = '<ServerName>'
DatabaseName = '<DatabaseName>'
AssignIdentity = $true
UserAssignedIdentityId = '<UserAssignedIdentityId>'
EncryptionProtector = '<CustomerManagedKeyId>'
FederatedClientId = '<FederatedClientId>'
EncryptionProtectorAutoRotation = $true
}
New-AzSqlDatabase @params
Este es un ejemplo de una plantilla de ARM que crea una instancia de Azure SQL Database con una identidad administrada asignada por el usuario y un TDE administrado por el cliente en el nivel de base de datos. Para una CMK entre inquilinos, use el identificador de clave del almacén de claves del segundo inquilino y el identificador de aplicación de la aplicación multiinquilino.
Para obtener el Id. de recurso de la identidad administrada asignada por el usuario, busque Identidades administradas en Azure Portal. Busque su identidad administrada y vaya a Propiedades. Un ejemplo de Identificador de recurso para la UMI tiene un aspecto similar a /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Actualización de una instancia de Azure SQL Database con claves administradas por el cliente en el nivel de base de datos
A continuación se muestran ejemplos para actualizar una base de datos existente en Azure SQL Database con una identidad administrada asignada por el usuario y cómo establecer una clave administrada por el cliente entre inquilinos en el nivel de base de datos. La identidad administrada asignada por el usuario es necesaria para configurar una clave administrada por el cliente para el cifrado de datos transparente durante la fase de creación de la base de datos.
En Azure portal, vaya al recurso de la base de datos de SQL que quiera actualizar con una clave administrada por el cliente de nivel de base de datos.
En Seguridad, seleccione Identidad. Agregue una identidad administrada asignada por el usuario a esta base de datos y seleccione Guardar.
Ahora vaya al menú Cifrado de datos transparente en Seguridad de la base de datos. Seleccione Clave administrada por el cliente (CMK) de nivel de base de datos. La identidad de la base de datos ya debe estar habilitada, porque se ha configurado en el último paso.
Seleccione Cambiar clave. Seleccione la Subscription deseada, el Almacén de claves, la Clave y la Versión para la clave administrada por el cliente que se usará para TDE. Seleccione el botón Seleccionar. Tras seleccionar una clave, también puede agregar tantas claves de base de datos como sea necesario mediante el URI de Azure Key Vault (identificador de objeto) en el menú Cifrado de datos.
Active la casilla Rotación automática de claves si quiere habilitar la rotación automática de claves en el nivel de base de datos.
Actualice una base de datos configurada con una identidad administrada asignada por el usuario y un TDE administrado por el cliente entre inquilinos mediante el comando az sql db update. El valor de Identificador de clave del segundo inquilino se puede usar en el campo encryption-protector. El valor de Identificador de la aplicación de la aplicación multiinquilino se puede usar en el campo federated-client-id.
Para obtener el Id. de recurso de la identidad administrada asignada por el usuario, busque Identidades administradas en Azure Portal. Busque su identidad administrada y vaya a Propiedades. Un ejemplo de Identificador de recurso para la UMI tiene un aspecto similar a /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>. El parámetro --encryption-protector-auto-rotation se puede usar para habilitar la rotación automática de claves en el nivel de base de datos.
La lista $keys es una lista de claves separadas por espacios que se van a agregar a la base de datos y $keysToRemove es una lista de claves separadas por espacios que se deben quitar de la base de datos.
Actualice una base de datos configurada con una identidad administrada asignada por el usuario y un TDE administrado por el cliente entre inquilinos en el nivel de base de datos mediante PowerShell.
Para obtener instrucciones sobre la instalación del módulo Azure PowerShell, consulte Instalación de Azure PowerShell. Para los cmdlets concretos, consulte AzureRM.Sql.
<ResourceGroupName>: nombre del grupo de recursos para el servidor lógico de Azure SQL
<DatabaseName>: use un nombre de base de datos de Azure SQL único.
<ServerName>: use un nombre del servidor lógico de Azure SQL
<UserAssignedIdentityId>: la lista de identidades administradas asignadas por el usuario que se asignarán al servidor (pueden ser una o varias).
<CustomerManagedKeyId>: el valor de Identificador de clave de la instancia Key Vault del segundo inquilino
<FederatedClientId>: el valor de Identificador de la aplicación de la aplicación multiinquilino.
<ListOfKeys>: lista de claves administradas por el cliente en el nivel de base de datos separadas por comas que se agregarán a la base de datos.
<ListOfKeysToRemove>: lista de claves administradas por el cliente en el nivel de base de datos separadas por comas que se quitarán de la base de datos.
-EncryptionProtectorAutoRotation: se puede usar para habilitar la rotación automática de claves en el nivel de base de datos
Para obtener el Id. de recurso de la identidad administrada asignada por el usuario, busque Identidades administradas en Azure Portal. Busque su identidad administrada y vaya a Propiedades. Un ejemplo de Identificador de recurso para la UMI tiene un aspecto similar a /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Este es un ejemplo de una plantilla de ARM que actualiza una instancia de Azure SQL Database con una identidad administrada asignada por el usuario y un TDE administrado por el cliente en el nivel de base de datos. Para una CMK entre inquilinos, use el identificador de clave de la instancia Key Vault del segundo inquilino y el identificador de aplicación de la aplicación multiinquilino.
Para obtener el Id. de recurso de la identidad administrada asignada por el usuario, busque Identidades administradas en Azure Portal. Busque su identidad administrada y vaya a Propiedades. Un ejemplo de Identificador de recurso para la UMI tiene un aspecto similar a /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Para quitar una clave de la base de datos, el valor del diccionario de claves de una clave determinada debe pasarse como null. Por ejemplo, "https://yourvault.vault.azure.net/keys/yourkey1/fd021f84a0d94d43b8ef33154bca0000": null.
Visualización de la configuración de clave administrada por el cliente de nivel de base de datos en una instancia de Azure SQL Database
A continuación se muestran ejemplos de recuperación de las claves administradas por el cliente de nivel de base de datos para una base de datos. El recurso Microsoft.Sql/servers/databases de ARM, de forma predeterminada, solo muestra el protector de TDE y la identidad administrada configurada en la base de datos. Para expandir la lista completa de claves, use el parámetro -ExpandKeyList. Además, se pueden usar filtros, como -KeysFilter "current", y un valor de un momento dado (por ejemplo, 2023-01-01) para recuperar las claves actuales usadas y las claves usadas en el pasado en un momento dado específico. Estos filtros solo se admiten para consultas de base de datos individuales y no para consultas de nivel de servidor.
Para ver las claves administradas por el cliente de nivel de base de datos en Azure Portal, vaya al menú Cifrado de datos del recurso de base de datos SQL.
# Retrieve the basic database level customer-managed key settings from a database
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter current
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter 01-01-2015
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
az sql db list --resource-group $resourceGroupName --server $serverName
Para obtener instrucciones sobre la instalación del módulo Azure PowerShell, consulte Instalación de Azure PowerShell. Para los cmdlets concretos, consulte AzureRM.Sql.
# Retrieve the basic database level customer-managed key settings from a database
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName>
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter '2023-02-03 00:00:00'
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName> | Select DatabaseName, EncryptionProtector
Use la API REST 2022-08-01-preview para Azure SQL Database.
Recupere la configuración básica de la clave administrada por el cliente en el nivel de base de datos de una base de datos.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview
Recupere la configuración básica de la clave administrada por el cliente en el nivel de base de datos de una base de datos y todas las claves agregadas.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys
Recupere la configuración básica de la clave administrada por el cliente en el nivel de base de datos de una base de datos y las claves actuales en uso.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('current'))
Recupere la configuración básica de la clave administrada por el cliente en el nivel de base de datos de una base de datos y las claves en uso en un momento dado concreto.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('2023-02-04T01:57:42.49Z'))
Enumeración de todas las claves de un servidor lógico
Para capturar la lista de todas las claves (y no solo el protector principal) usadas por cada base de datos en el servidor, debe consultarse individualmente con los filtros de clave. A continuación se muestra un ejemplo de una consulta de PowerShell para enumerar cada clave en el servidor lógico.
Revalidación de la clave administrada por el cliente de nivel de base de datos en una instancia de Azure SQL Database
En el caso de que haya algún protector de TDE al que no se pueda acceder, tal como se describe en Cifrado de datos transparente (TDE) con CMK, una vez que se haya corregido el acceso a la clave, se puede usar la operación de revalidación de clave para que se pueda acceder a la base de datos. En las siguientes instrucciones encontrará ejemplos al respecto.
Utilice Azure Portal para busque el recurso de base de datos SQL. Una vez que haya seleccionado el recurso de base de datos SQL, vaya a la pestaña Cifrado de datos transparente del menú Cifrado de datos en la configuración de Seguridad. Si la base de datos ha perdido el acceso a Azure Key Vault, aparecerá un botón Volver a validar la clave y tendrá la opción de volver a validar la clave existente seleccionando Reintentar clave existente u otra clave, para lo que debería elegir Seleccionar la clave de copia de seguridad.
az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase
Para obtener instrucciones sobre la instalación del módulo Azure PowerShell, consulte Instalación de Azure PowerShell. Para los cmdlets concretos, consulte AzureRM.Sql.
Use la API REST 2022-08-01-preview para Azure SQL Database.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revalidate?api-version=2022-08-01-preview
Reversión de la clave administrada por el cliente de nivel de base de datos en una instancia de Azure SQL Database
Una base de datos configurada con CMK de nivel de base de datos se puede revertir al cifrado de nivel de servidor si el servidor está configurado con una clave administrada por el servicio mediante los siguientes comandos.
Para revertir el valor de la clave administrada por el cliente de nivel de base de datos a la clave de cifrado de nivel de servidor en Azure Portal, vaya a la pestaña Cifrado de datos transparente del menú Cifrado de datos del recurso de base de datos SQL. Seleccione Clave de cifrado de nivel de servidor y seleccione Guardar para guardar la configuración.
Nota
Para usar el valor Clave de cifrado de nivel de servidor para bases de datos individuales, el servidor lógico de Azure SQL Database debe configurarse para usar la clave administrada por el servicio para TDE.
az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
Para obtener instrucciones sobre la instalación del módulo Azure PowerShell, consulte Instalación de Azure PowerShell. Para los cmdlets concretos, consulte AzureRM.Sql.
Use la API REST 2022-08-01-preview para Azure SQL Database.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revert?api-version=2022-08-01-preview
Pasos siguientes
Consulte la siguiente documentación sobre varias operaciones de CMK en el nivel de base de datos: