Configuración de la replicación geográfica y la restauración de copias de seguridad para el cifrado de datos transparente con claves administradas por el cliente en el nivel de base de datos
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]).
En esta guía, se describen los pasos para configurar la replicación geográfica y la restauración de copias de seguridad en una instancia de Azure SQL Database. Azure SQL Database se configura con cifrado de datos transparente (TDE) y claves administradas por el cliente (CMK) en el nivel de base de datos, para lo cual se utiliza una identidad administrada asignada por el usuario para acceder a Azure Key Vault. Tanto Azure Key Vault como el servidor lógico para Azure SQL se encuentran en el mismo inquilino de Microsoft Entra de esta guía, pero pueden estar en otros inquilinos.
Nota:
Microsoft Entra ID era conocido anteriormente como Azure Active Directory (Azure AD).
Una vez creada o restaurada la base de datos, el menú Cifrado de datos transparente de Azure Portal mostrará la nueva base de datos con la misma configuración que la base de datos de origen, pero puede que falten claves. En todos los casos en los que se crea una nueva base de datos a partir de una base de datos de origen, el número de claves mostradas para una base de datos de destino en la lista de Azure Portal Claves de base de datos adicionales podría ser inferior que el número de claves que se muestran para una base de datos de origen. Esto se debe a que el número de claves mostradas depende de los requisitos de características individuales que se usan para crear una base de datos de destino. Para enumerar todas las claves disponibles para una base de datos recién creada, use las API disponibles en 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.
Creación de una instancia de Azure SQL Database con claves administradas por el cliente en el nivel de base de datos como una secundaria o una copia
Use los siguientes comandos o instrucciones para crear una réplica secundaria o un destino de copia de una instancia de Azure SQL Database configurada con claves administradas por el cliente en el nivel de base de datos. Una 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.
Crear una copia de base de datos que tenga claves administradas por el cliente de nivel de base de datos
Para crear una base de datos en Azure SQL Database como copia con claves administradas por el cliente de nivel de base de datos, siga estos pasos:
Vaya a Azure Portal y vaya a Azure SQL Database configurado con claves administradas por el cliente de nivel de base de datos. Acceda a la pestaña Cifrado de datos transparente del menú Cifrado de datos y compruebe la lista de claves actuales que usa la base de datos.
Cree una copia de la base de datos seleccionando Copiar en el menú Información general de la base de datos.
Aparece el menú Crear SQL Database: Copiar base de datos. Use un servidor diferente para esta base de datos, pero la misma configuración que la base de datos que está intentando copiar. En la sección Administración de claves de cifrado de datos transparente, seleccione Configuración del cifrado de datos transparente.
Cuando aparezca el menú Cifrado de datos transparente, revise la configuración de la clave administrada por el cliente para esta base de datos de copia. La configuración y las claves deben rellenarse con la misma identidad y claves que se usan en la base de datos de origen.
Seleccione Aplicar para continuar y, a continuación, seleccione Revisar y crear y Crear para crear la base de datos de copia.
Crear una réplica secundaria que tenga claves administradas por el cliente de nivel de base de datos
Vaya a Azure Portal y vaya a Azure SQL Database configurado con claves administradas por el cliente de nivel de base de datos. Acceda al menú Cifrado de datos transparente y compruebe la lista de claves actuales que usa la base de datos.
En Configuración de administración de datos de la base de datos, seleccione Réplicas. Seleccione Crear réplica para crear una réplica secundaria de la base de datos.
Aparece el menú Crear SQL Database: replicación geográfica. Use un servidor secundario para esta base de datos, pero la misma configuración que la base de datos que intenta replicar. En la sección Administración de claves de cifrado de datos transparente, seleccione Configuración del cifrado de datos transparente.
Cuando aparezca el menú Cifrado de datos transparente, revise la configuración de la clave administrada por el cliente para esta réplica de base de datos. La configuración y las claves deben rellenarse con la misma identidad y claves que se usan en la base de datos principal.
Seleccione Aplicar para continuar y, a continuación, seleccione Revisar y crear y Crear para crear la base de datos de copia.
Rellene previamente la lista de claves actuales que la base de datos principal usa mediante el parámetro expand-keys. Para ello, use current para keys-filter.
az sql db show --name $databaseName --resource-group $resourceGroup --server $serverName --expand-keys --keys-filter current
Seleccione la identidad administrada asignada por el usuario (y el id. de cliente federado si configura el acceso entre inquilinos).
Cree una nueva base de datos como secundaria y proporcione la lista rellenada previamente de claves obtenidas de la base de datos de origen y la identidad anterior (y el id. de cliente federado si se configura el acceso entre inquilinos).
# Create a secondary replica with Active Geo Replication with the same name as the primary database
az sql db replica create -g $resourceGroup -s $serverName -n $databaseName --partner-server $secondaryServer --partner-database $secondaryDatabase --partner-resource-group $secondaryResourceGroup -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Importante
$keys es una lista de claves separadas por espacios recuperadas de la base de datos de origen.
Para crear una copia de la base de datos, se puede usar az sql db copy con los mismos parámetros.
# Create a copy of a database configured with database level customer-managed keys
az sql db copy -g $resourceGroup -s $serverName -n $databaseName --dest-name $secondaryDatabase -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
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.
Rellene previamente la lista de claves actuales que la base de datos principal usa mediante el comando Get-AzSqlDatabase y los parámetros -ExpandKeyList y -KeysFilter "current". Excluya -KeysFilter si desea recuperar todas las claves.
Seleccione la identidad administrada asignada por el usuario (y el id. de cliente federado si configura el acceso entre inquilinos).
Cree una base de datos como secundaria mediante el comando New-AzSqlDatabaseSecondary y proporcione la lista de claves rellenada previamente obtenidas de la base de datos de origen y la identidad anterior (y el id. de cliente federado si configura el acceso entre inquilinos) en la llamada API mediante los parámetros -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (y si es necesario -FederatedClientId).
# Create a secondary replica with Active Geo Replication with the same name as the primary database
$database = Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
$database | New-AzSqlDatabaseSecondary -PartnerResourceGroupName <SecondaryResourceGroupName> -PartnerServerName <SecondaryServerName> -AllowConnections "All" -AssignIdentity -UserAssignedIdentityId <UserAssignedIdentityId> -EncryptionProtector <CustomerManagedKeyId> -FederatedClientId <FederatedClientId>
-KeyList $database.Keys.Keys
Para crear una copia de la base de datos, se puede usar New-AzSqlDatabaseCopy con los mismos parámetros.
Este es un ejemplo de una plantilla de ARM que crea una réplica secundaria y una copia de una instancia de Azure SQL Database configurada con una identidad administrada asignada por el usuario y un TDE administrado por el cliente en el nivel de base de datos.
Rellene previamente la lista de claves actuales que la base de datos principal usa mediante la siguiente solicitud de API REST:
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'))
Seleccione la identidad administrada asignada por el usuario (y el id. de cliente federado si configura el acceso entre inquilinos).
Cree una nueva base de datos como secundaria y proporcione la lista rellenada previamente de claves obtenidas de la base de datos de origen y la identidad anterior (y el id. de cliente federado si se configura el acceso entre inquilinos) en la plantilla de ARM como el parámetro keys_to_add.
Restauración de una base de datos Azure SQL con claves administradas por el cliente en el nivel de base de datos
En esta sección se describen los pasos para restaurar una instancia de Azure SQL Database configurada con claves administradas por el cliente en el nivel de base de datos. Una 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.
Restauración a un momento dado
En la sección siguiente se describe cómo restaurar una base de datos configurada con claves administradas por el cliente en el nivel de base de datos a un momento dado. Para obtener más información sobre la recuperación de copia de seguridad de SQL Database, consulte Recuperación de una base de datos de SQL Database.
Vaya a Azure Portal y vaya a Azure SQL Database configurado con claves administradas por el cliente de nivel de base de datos que desea restaurar.
Para restaurar la base de datos a un momento dado, seleccione Restaurar en el menú Información general de la base de datos.
Aparece el menú Crear SQL Database: Restaurar base de datos. Rellene los detalles de origen y base de datos necesarios. En la sección Administración de claves de cifrado de datos transparente, seleccione Configuración del cifrado de datos transparente.
Cuando aparezca el menú Cifrado de datos transparente, revise la configuración de la clave administrada por el cliente para esta base de datos. La configuración y las claves deben rellenarse con la misma identidad y claves que se usan en la base de datos que está intentando restaurar.
Seleccione Aplicar para continuar y, a continuación, seleccione Revisar y crear y Crear para crear la base de datos de copia.
Rellene previamente la lista de claves que la base de datos principal usa mediante el parámetro expand-keys con el momento dado de restauración como keys-filter.
az sql db show --name $databaseName --resource-group $resourceGroup --server $serverName --expand-keys --keys-filter $timestamp
Seleccione la identidad administrada asignada por el usuario (y el id. de cliente federado si configura el acceso entre inquilinos).
Cree una nueva base de datos como destino de restauración y proporcione la lista rellenada previamente de claves obtenidas de la base de datos de origen y la identidad anterior (y el id. de cliente federado si se configura el acceso entre inquilinos).
# Create a restored database
az sql db restore --dest-name $destName --name $databaseName --resource-group $resourceGroup --server $serverName --subscription $subscriptionId --time $timestamp -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Importante
$keys es una lista de claves separadas por espacios recuperadas de la base de datos de origen.
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.
Rellene previamente la lista de claves que la base de datos principal usa mediante el comando Get-AzSqlDatabase y los parámetros -ExpandKeyList y -KeysFilter "2023-01-01" (2023-01-01 es un ejemplo del momento dado al que desea restaurar la base de datos). Excluya -KeysFilter si desea recuperar todas las claves.
Seleccione la identidad administrada asignada por el usuario (y el id. de cliente federado si configura el acceso entre inquilinos).
Use el comando Restore-AzSqlDatabase con el parámetro -FromPointInTimeBackup y proporcione la lista de claves rellenada previamente obtenidas de los pasos anteriores y la identidad anterior (y el id. de cliente federado si configura el acceso entre inquilinos) en la llamada API mediante los parámetros -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (y, si es necesario, -FederatedClientId).
En la sección siguiente se describe cómo restaurar una base de datos eliminada que se configuró con claves administradas por el cliente en el nivel de base de datos. Para obtener más información sobre la recuperación de copia de seguridad de SQL Database, consulte Recuperación de una base de datos de SQL Database.
Vaya a Azure Portal y vaya al servidor lógico de la base de datos eliminada que desea restaurar. En Administración de datos, seleccione Bases de datos eliminadas.
Seleccione la base de datos eliminada que desea restaurar.
Aparece el menú Crear SQL Database: Restaurar base de datos. Rellene los detalles de origen y base de datos necesarios. En la sección Administración de claves de cifrado de datos transparente, seleccione Configuración del cifrado de datos transparente.
Cuando aparezca el menú Cifrado de datos transparente, configure la sección Identidad administrada asignada por el usuario, Clave administrada por el cliente y Claves de base de datos adicionales para la base de datos.
Seleccione Aplicar para continuar y, a continuación, seleccione Revisar y crear y Crear para crear la base de datos de copia.
Rellene previamente la lista de claves usadas por la base de datos eliminada mediante el parámetro expand-keys. Se recomienda pasar todas las claves que la base de datos de origen estaba usando. También puede intentar una restauración con las claves proporcionadas en el momento de la eliminación mediante el parámetro keys-filter.
az sql db show-deleted --name $databaseName --resource-group $resourceGroup --server $serverName --restorable-dropped-database-id "databaseName,133201549661600000" --expand-keys
Importante
restorable-dropped-database-id se puede recuperar enumerando todas las bases de datos eliminadas restaurables en el servidor y tiene el formato databaseName,deletedTimestamp.
Seleccione la identidad administrada asignada por el usuario (y el id. de cliente federado si configura el acceso entre inquilinos).
Cree una nueva base de datos como destino de restauración y proporcione la lista rellenada previamente de claves obtenidas de la base de datos de origen eliminada y la identidad anterior (y el id. de cliente federado si se configura el acceso entre inquilinos).
# Create a restored database
az sql db restore --dest-name $destName --name $databaseName --resource-group $resourceGroup --server $serverName --subscription $subscriptionId --time $timestamp -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys --deleted-time "2023-02-06T11:02:46.160000+00:00"
Importante
$keys es una lista de claves separadas por espacios recuperadas de la base de datos de origen.
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.
Rellene previamente la lista de claves que la base de datos principal usa mediante el comando Get-AzSqlDeletedDatabaseBackup y el parámetro -ExpandKeyList. Se recomienda pasar todas las claves que la base de datos de origen estaba usando. También puede intentar una restauración con las claves proporcionadas en el momento de la eliminación mediante el parámetro -KeysFilter.
DatabaseId se puede recuperar enumerando todas las bases de datos eliminadas restaurables en el servidor y tiene el formato databaseName,deletedTimestamp.
Seleccione la identidad administrada asignada por el usuario (y el id. de cliente federado si configura el acceso entre inquilinos).
Use el comando Restore-AzSqlDatabase con el parámetro -FromDeletedDatabaseBackup y proporcione la lista de claves rellenada previamente obtenidas de los pasos anteriores y la identidad anterior (y el id. de cliente federado si configura el acceso entre inquilinos) en la llamada API mediante los parámetros -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (y, si es necesario, -FederatedClientId).
En la sección siguiente se describe cómo restaurar una copia de seguridad replicada geográficamente configurada con claves administradas por el cliente en el nivel de base de datos. Para obtener más información sobre la recuperación de copia de seguridad de SQL Database, consulte Recuperación de una base de datos de SQL Database.
Vaya a Azure Portal y vaya al servidor lógico donde desea restaurar la base de datos.
En el menú Información general, seleccione Crear base de datos.
Aparecerá el menú Crear base de datos SQL. Rellene las pestañas Básico y Redes de la nueva base de datos. En Configuración adicional, seleccione Copia de seguridad para la sección Usar datos existentes y seleccione una copia de seguridad con replicación geográfica.
Vaya a la pestaña Seguridad. En la sección Administración de claves de cifrado de datos transparente, seleccione Configuración del cifrado de datos transparente.
Cuando aparezca el menú Cifrado de datos transparente, seleccione Clave administrada por el cliente (CMK) de nivel de base de datos. La identidad administrada asignada por el usuario, la clave administrada por el cliente y las claves de base de datos adicionales deben coincidir con la base de datos de origen que desea restaurar. Asegúrese de que la identidad administrada asignada por el usuario tiene acceso al almacén de claves que contiene la clave administrada por el cliente que se usó en la copia de seguridad.
Seleccione Aplicar para continuar y, a continuación, seleccione Revisar y crear y Crear para crear la base de datos de copia de seguridad.
Rellene previamente la lista de claves que la copia de seguridad geográfica de la base de datos usa configurada con claves administradas por el cliente en el nivel de base de datos mediante el parámetro expand-keys.
az sql db geo-backup --database-name $databaseName --g $resourceGroup --server $serverName --expand-keys
Seleccione la identidad administrada asignada por el usuario (y el id. de cliente federado si configura el acceso entre inquilinos).
Cree una nueva base de datos como destino de restauración geográfico y proporcione la lista rellenada previamente de claves obtenidas de la base de datos de origen eliminada y la identidad anterior (y el id. de cliente federado si se configura el acceso entre inquilinos).
# Create a geo restored database
az sql db geo-backup restore --geo-backup-id "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recoverableDatabases/{databaseName}" --dest-database $destName --resource-group $resourceGroup --dest-server $destServerName -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Importante
$keys es una lista de claves separadas por espacios recuperadas de la base de datos de origen.
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.
Rellene previamente la lista de claves que la base de datos principal usa mediante el comando Get-AzSqlDatabaseGeoBackup y -ExpandKeyList para recuperar todas las claves.
DatabaseId se puede recuperar enumerando todas las bases de datos eliminadas restaurables en el servidor y tiene el formato databaseName,deletedTimestamp.
Seleccione la identidad administrada asignada por el usuario (y el id. de cliente federado si configura el acceso entre inquilinos).
Use el comando Restore-AzSqlDatabase con el parámetro -FromGeoBackup y proporcione la lista de claves rellenada previamente obtenidas de los pasos anteriores y la identidad anterior (y el id. de cliente federado si configura el acceso entre inquilinos) en la llamada API mediante los parámetros -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (y, si es necesario, -FederatedClientId).
Las copias de seguridad de retención a largo plazo (LTR) no proporcionan la lista de claves usadas por la copia de seguridad. Para restaurar una copia de seguridad LTR, todas las claves usadas por la base de datos de origen se deben pasar al destino de restauración LTR.
Opción de rotación automática de claves para bases de datos copiadas o restauradas
Las bases de datos recién copiadas o restauradas se pueden configurar para rotar automáticamente la clave administrada por el cliente que se usa para el cifrado de datos transparente. Para obtener información sobre cómo habilitar la rotación automática de claves en Azure Portal o mediante API, vea Rotación automática de claves en el nivel de base de datos.
Pasos siguientes
Consulte la siguiente documentación sobre varias operaciones de CMK en el nivel de base de datos: