Le chiavi gestite dal cliente per il TDE a livello di database sono disponibili per database SQL di Azure (tutte le edizioni database SQL). Non è disponibile per Istanza gestita di SQL di Azure, SQL Server locale, macchine virtuali di Azure e Azure Synapse Analytics (pool SQL dedicati (in precedenza SQL Data Warehouse)).
In questa guida vengono illustrati i passaggi per configurare la replica geografica e il ripristino del backup in un database SQL di Azure. Il database SQL di Azure è configurato con Transparent Data Encryption (TDE) e chiavi gestite dal cliente a livello di database, usando un'identità gestita assegnata dall'utente per accedere ad Azure Key Vault. Sia Azure Key Vault che il server logico per Azure SQL si trovano nello stesso tenant di Microsoft Entra per questa guida, ma possono trovarsi in tenant diversi.
Nota
Microsoft Entra ID era noto in precedenza come Azure Active Directory (Azure AD).
Dopo aver creato o ripristinato il database, il menu Transparent Data Encryption nel portale di Azure mostrerà il nuovo database con le stesse impostazioni del database di origine, ma potrebbe non avere chiavi. In tutti i casi in cui viene creato un nuovo database da un database di origine, il numero di chiavi visualizzate per un database di destinazione nell'elenco portale di Azure Chiavi di database aggiuntive potrebbe essere inferiore al numero di chiavi visualizzate per un database di origine. Questo perché il numero di chiavi visualizzate dipende dai singoli requisiti di funzionalità usati per creare un database di destinazione. Per elencare tutte le chiavi disponibili per un database appena creato, usare le API disponibili in Visualizzare le impostazioni della chiave gestita dal cliente a livello di database in un database SQL di Azure.
Creare un database SQL di Azure con chiavi gestite dal cliente a livello di database come secondario o copia
Usare le istruzioni o i comandi seguenti per creare una replica secondaria o copiare una destinazione di una database SQL di Azure configurata con chiavi gestite dal cliente a livello di database. È necessaria un'identità gestita assegnata dall'utente per configurare una chiave gestita dal cliente per Transparent Data Encryption durante la fase di creazione del database.
Creare una copia del database con chiavi gestite dal cliente a livello di database
Per creare un database in database SQL di Azure come copia con chiavi gestite dal cliente a livello di database, seguire questa procedura:
Passare al portale di Azure e passare alla database SQL di Azure configurata con chiavi gestite dal cliente a livello di database. Accedere alla scheda Transparent Data Encryption del menu Crittografia dei dati e selezionare l'elenco delle chiavi correnti in uso dal database.
Creare una copia del database selezionando Copia dal menu Panoramica del database.
Viene visualizzato il menu Crea database SQL - Copia database. Usare un server diverso per questo database, ma le stesse impostazioni del database che si sta tentando di copiare. Nella sezione Gestione chiavi Transparent Data Encryption selezionare Configura Transparent Data Encryption.
Quando viene visualizzato il menu Transparent Data Encryption, esaminare le impostazioni chiave gestita dal cliente per questo database di copia. Le impostazioni e le chiavi devono essere popolate con la stessa identità e le stesse chiavi usate nel database di origine.
Selezionare Applica per continuare, quindi selezionare Rivedi e crea e Crea per creare il database di copia.
Creare una replica secondaria con chiavi gestite dal cliente a livello di database
Passare al portale di Azure e passare alla database SQL di Azure configurata con chiavi gestite dal cliente a livello di database. Accedere al menu Transparent Data Encryption e controllare l'elenco delle chiavi correnti in uso dal database.
Nelle impostazioni Gestione dei dati per il database, selezionare Repliche. Selezionare Crea replica per creare una replica secondaria del database.
Viene visualizzato il menu Crea database SQL - Replica geografica. Usare un server secondario per questo database, ma con le stesse impostazioni del database che si sta tentando di replicare. Nella sezione Gestione chiavi Transparent Data Encryption selezionare Configura Transparent Data Encryption.
Quando viene visualizzato il menu Transparent Data Encryption, esaminare le impostazioni chiave gestita dal cliente per questa replica di database. Le impostazioni e le chiavi devono essere popolate con la stessa identità e le stesse chiavi usate nel database primario.
Selezionare Applica per continuare, quindi selezionare Rivedi e crea e Crea per creare il database di copia.
Prepopolare l'elenco delle chiavi correnti in uso dal database primario usando il parametro expand-keys con current come keys-filter.
az sql db show --name $databaseName --resource-group $resourceGroup --server $serverName --expand-keys --keys-filter current
Selezionare l'identità gestita assegnata dall'utente (e l'ID client federato se si configura l'accesso tra tenant).
Creare un nuovo database come secondario e fornire l'elenco prepopolato di chiavi ottenute dal database di origine e l'identità precedente (e l'ID client federato se si configura l'accesso tra tenant).
# 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 è un elenco separato da spazi che include le chiavi recuperate dal database di origine.
Per creare una copia del database, è possibile usare az sql db copy con gli stessi parametri.
# 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
Prepopolare l'elenco delle chiavi correnti in uso dal database primario usando il comando Get-AzSqlDatabase e i parametri -ExpandKeyList e -KeysFilter "current". Escludere -KeysFilter se si desidera recuperare tutte le chiavi.
Selezionare l'identità gestita assegnata dall'utente (e l'ID client federato se si configura l'accesso tra tenant).
Creare un nuovo database come secondario usando il comando New-AzSqlDatabaseSecondary e fornire l'elenco prepopolato di chiavi ottenute dal database di origine e l'identità precedente (e l'ID client federato se si configura l'accesso tra tenant) nella chiamata API usando i parametri -KeyList, -AssignIdentity, -UserAssignedIdentityId e -EncryptionProtector(e, se necessario, -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
Per creare una copia del database, è possibile usare New-AzSqlDatabaseCopy con gli stessi parametri.
Ecco un esempio di modello di ARM che crea una replica secondaria e una copia di un database SQL di Azure configurato con un'identità gestita assegnata dall'utente e TDE gestito dal cliente a livello di database.
Prepopolare l'elenco delle chiavi correnti in uso dal database primario usando la richiesta dell'API REST seguente:
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'))
Selezionare l'identità gestita assegnata dall'utente (e l'ID client federato se si configura l'accesso tra tenant).
Creare un nuovo database come secondario e fornire l'elenco prepopolato di chiavi ottenute dal database di origine e l'identità precedente (e l'ID client federato se si configura l'accesso tra tenant) nel modello di ARM come il parametro keys_to_add.
Ripristinare un database SQL di Azure con chiavi gestite dal cliente a livello di database
Questa sezione illustra i passaggi per ripristinare un database SQL di Azure configurato con chiavi gestite dal cliente a livello di database. È necessaria un'identità gestita assegnata dall'utente per configurare una chiave gestita dal cliente per Transparent Data Encryption durante la fase di creazione del database.
Ripristino temporizzato
La sezione seguente descrive come ripristinare un database configurato con chiavi gestite dal cliente a livello di database a un determinato punto nel tempo. Per altre informazioni sul ripristino dei backup per il database SQL, vedere Recuperare un database nel database SQL.
Passare al portale di Azure e aprire il database SQL di Azure configurato con le chiavi gestite dal cliente a livello di database che si desidera ripristinare.
Per ripristinare il database a un punto nel tempo, selezionare Ripristina dal menu Panoramica del database.
Viene visualizzato il menu Crea database SQL - Ripristina database. Immettere i dettagli dell'origine e del database necessari. Nella sezione Gestione chiavi Transparent Data Encryption selezionare Configura Transparent Data Encryption.
Quando viene visualizzato il menu Transparent Data Encryption, esaminare le impostazioni chiave gestita dal cliente per il database. Le impostazioni e le chiavi devono essere popolate con la stessa identità e le stesse chiavi usate nel database che si sta tentando di ripristinare.
Selezionare Applica per continuare, quindi selezionare Rivedi e crea e Crea per creare il database di copia.
Prepopolare l'elenco di chiavi usate dal database primario usando il parametro expand-keys con keys-filter come il punto di ripristino nel tempo.
az sql db show --name $databaseName --resource-group $resourceGroup --server $serverName --expand-keys --keys-filter $timestamp
Selezionare l'identità gestita assegnata dall'utente (e l'ID client federato se si configura l'accesso tra tenant).
Creare un nuovo database come destinazione di ripristino e fornire l'elenco prepopolato di chiavi ottenute dal database di origine e l'identità precedente (e l'ID client federato se si configura l'accesso tra tenant).
# 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 è un elenco separato da spazi che include le chiavi recuperate dal database di origine.
Prepopolare l'elenco di chiavi usate dal database primario usando il comando Get-AzSqlDatabase e i -ExpandKeyList e -KeysFilter "2023-01-01" parametri (2023-01-01 è un esempio del momento in cui si vuole ripristinare il database). Escludere -KeysFilter se si desidera recuperare tutte le chiavi.
Selezionare l'identità gestita assegnata dall'utente (e l'ID client federato se si configura l'accesso tra tenant).
Usare il comando Restore-AzSqlDatabase con il parametro -FromPointInTimeBackup e specificare l'elenco prepopolato di chiavi ottenute dai passaggi precedenti e l'identità precedente (e l'ID client federato se si configura l'accesso tra tenant) nella chiamata API usando i parametri -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (e, se necessario, -FederatedClientId).
La sezione seguente descrive come ripristinare un database eliminato configurato con chiavi gestite dal cliente a livello di database. Per altre informazioni sul ripristino dei backup per il database SQL, vedere Recuperare un database nel database SQL.
Passare al portale di Azure e quindi al server logico per il database eliminato da ripristinare. In Gestione dati, selezionare Database eliminati.
Selezionare il database eliminato che si vuole ripristinare.
Viene visualizzato il menu Crea database SQL - Ripristina database. Immettere i dettagli dell'origine e del database necessari. Nella sezione Gestione chiavi Transparent Data Encryption selezionare Configura Transparent Data Encryption.
Quando viene visualizzato il menu Transparent Data Encryption, configurare la sezione Identità gestita assegnata dall'utente, Chiave gestita dal cliente e Chiavi database aggiuntive per il database.
Selezionare Applica per continuare, quindi selezionare Rivedi e crea e Crea per creare il database di copia.
Prepopolare l'elenco di chiavi usate dal database eliminato usando il parametro expand-keys. È consigliabile passare tutte le chiavi in uso nel database di origine. È anche possibile tentare un ripristino con le chiavi fornite in fase di eliminazione usando il parametro keys-filter.
az sql db show-deleted --name $databaseName --resource-group $resourceGroup --server $serverName --restorable-dropped-database-id "databaseName,133201549661600000" --expand-keys
Importante
È possibile recuperare restorable-dropped-database-id elencando tutti i database eliminati ripristinabili nel server e nel formato databaseName,deletedTimestamp.
Selezionare l'identità gestita assegnata dall'utente (e l'ID client federato se si configura l'accesso tra tenant).
Creare un nuovo database come destinazione di ripristino e fornire l'elenco prepopolato di chiavi ottenute dal database di origine cancellato e dall'identità precedente (e l'ID client federato se si configura l'accesso tra tenant).
# 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 è un elenco separato di spazi di chiavi recuperate dal database di origine.
Prepopolare l'elenco di chiavi usate dal database primario usando il comando Get-AzSqlDeletedDatabaseBackup e il -ExpandKeyList parametro. È consigliabile passare tutte le chiavi in uso nel database di origine. È anche possibile tentare un ripristino con le chiavi fornite in fase di eliminazione usando il parametro -KeysFilter.
È possibile recuperare DatabaseId elencando tutti i database eliminati ripristinabili nel server e nel formato databaseName,deletedTimestamp.
Selezionare l'identità gestita assegnata dall'utente (e l'ID client federato se si configura l'accesso tra tenant).
Usare il comando Restore-AzSqlDatabase con il parametro -FromDeletedDatabaseBackup e specificare l'elenco prepopolato di chiavi ottenute dai passaggi precedenti e l'identità precedente (e l'ID client federato se si configura l'accesso tra tenant) nella chiamata API usando i parametri -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (e, se necessario, -FederatedClientId).
La sezione seguente descrive come ripristinare un backup con replica geografica del database configurato con chiavi gestite dal cliente a livello di database. Per altre informazioni sul ripristino dei backup per il database SQL, vedere Recuperare un database nel database SQL.
Passare al portale di Azure e passare al server logico in cui si vuole ripristinare il database.
Nel menu Panoramica, selezionare Crea database.
Viene visualizzato il menu Crea database SQL. Compilare le schede Basic e Networking per il nuovo database. In Impostazioni aggiuntive selezionare Backup per la sezione Usa dati esistenti e selezionare un backup con replica geografica.
Passare alla scheda Sicurezza. Nella sezione Gestione chiavi Transparent Data Encryption selezionare Configura Transparent Data Encryption.
Quando viene visualizzato il menu Transparent Data Encryption, selezionare Chiave gestita dal cliente a livello di database. L'identità gestita assegnata dall'utente, la chiave gestita dal cliente e le chiavi di database aggiuntive devono corrispondere al database di origine da ripristinare. Assicurarsi che l'identità gestita assegnata dall'utente abbia accesso all'insieme di credenziali delle chiavi contenente la chiave gestita dal cliente usata nel backup.
Selezionare Applica per continuare e quindi selezionare Rivedi e crea e Crea per creare il database di backup.
Prepopolare l'elenco di chiavi usate dal backup geografico del database configurato con chiavi gestite dal cliente a livello di database usando il parametro expand-keys.
az sql db geo-backup --database-name $databaseName --g $resourceGroup --server $serverName --expand-keys
Selezionare l'identità gestita assegnata dall'utente (e l'ID client federato se si configura l'accesso tra tenant).
Creare un nuovo database come destinazione di ripristino geografico e fornire l'elenco prepopolato di chiavi ottenute dal database di origine eliminato e l'identità precedente (e l'ID client federato se si configura l'accesso tra tenant).
# 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 è un elenco separato di spazi di chiavi recuperate dal database di origine.
Prepopolare l'elenco di chiavi usate dal database primario usando il comando Get-AzSqlDatabaseGeoBackup e -ExpandKeyList per recuperare tutte le chiavi.
È possibile recuperare DatabaseId elencando tutti i database eliminati ripristinabili nel server e nel formato databaseName,deletedTimestamp.
Selezionare l'identità gestita assegnata dall'utente (e l'ID client federato se si configura l'accesso tra tenant).
Usare il comando Restore-AzSqlDatabase con il parametro -FromGeoBackup e specificare l'elenco prepopolato di chiavi ottenute dai passaggi precedenti e l'identità precedente (e l'ID client federato se si configura l'accesso tra tenant) nella chiamata API usando i parametri -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (e, se necessario, -FederatedClientId).
I backup con conservazione a lungo termine (LTR) non forniscono l'elenco delle chiavi usate dal backup. Per ripristinare un backup con conservazione a lungo termine, tutte le chiavi usate dal database di origine devono essere passate alla destinazione di ripristino con conservazione a lungo termine.
Opzione di rotazione automatica delle chiavi per i database copiati o ripristinati
I database appena copiati o ripristinati possono essere configurati per ruotare automaticamente la chiave gestita dal cliente usata per Transparent Data Encryption. Per informazioni su come abilitare la rotazione automatica delle chiavi nel portale di Azure o sull'uso delle API, vedere Rotazione automatica delle chiavi a livello di database.
Passaggi successivi
Vedere la documentazione seguente su varie operazioni della chiave gestita dal cliente a livello di database: