TDE CMK op databaseniveau is beschikbaar voor Azure SQL Database (alle SQL Database-edities). Het is niet beschikbaar voor Azure SQL Managed Instance, on-premises SQL Server, Azure-VM's en Azure Synapse Analytics (toegewezen SQL-pools (voorheen SQL DW)).
In deze handleiding wordt ervan uitgegaan dat u twee Microsoft Entra-tenants hebt.
De eerste bestaat uit de Azure SQL Database-resource, een Microsoft Entra-toepassing met meerdere tenants en een door de gebruiker toegewezen beheerde identiteit.
De tweede tenant bevat de Azure Key Vault.
Raadpleeg een van de volgende handleidingen voor uitgebreide instructies over het instellen van CMK voor meerdere tenants en de RBAC-machtigingen die nodig zijn voor het configureren van Microsoft Entra-toepassingen en Azure Key Vault:
De RBAC-machtigingen die nodig zijn voor CMK op databaseniveau zijn dezelfde machtigingen die vereist zijn voor CMK op serverniveau. Met name zijn dezelfde RBAC-machtigingen die van toepassing zijn bij het gebruik van Azure Key Vault, beheerde identiteiten en CMK voor meerdere tenants voor TDE op serverniveau, van toepassing op databaseniveau. Zie Sleutelbeheer voor meer informatie over sleutelbeheer en toegangsbeleid.
Voordat we TDE kunnen configureren voor Azure SQL Database met een CMK voor meerdere tenants, moeten we een Microsoft Entra-toepassing met meerdere tenants hebben die is geconfigureerd met een door de gebruiker toegewezen beheerde identiteit die is toegewezen als federatieve identiteitsreferentie voor de toepassing. Volg een van de handleidingen in de vereisten.
Noteer de naam van de toepassing en de toepassings-id. Deze vindt u in Azure Portal>Microsoft Entra ID>Enterprise-toepassingen en zoekt naar de gemaakte toepassing.
Vereiste resources voor de tweede tenant
Maak in de tweede tenant waarin de Azure Key Vault zich bevindt een service-principal (toepassing) met behulp van de toepassings-id van de geregistreerde toepassing van de eerste tenant. Hier volgen enkele voorbeelden van het registreren van de toepassing voor meerdere tenants. Vervang en vervang <TenantID> de <ApplicationID> clienttenant-id van Microsoft Entra ID en toepassings-id uit respectievelijk de toepassing met meerdere tenants:
Een nieuwe Azure SQL Database maken met door de klant beheerde sleutels op databaseniveau
Hier volgen voorbeelden voor het maken van een database in Azure SQL Database met een door de gebruiker toegewezen beheerde identiteit en het instellen van een door de gebruiker beheerde sleutel voor meerdere tenants op databaseniveau. De door de gebruiker toegewezen beheerde identiteit is vereist voor het instellen van een door de klant beheerde sleutel voor transparante gegevensversleuteling tijdens de fase voor het maken van de database.
Als u nog niet bent aangemeld bij Azure Portal, meldt u zich aan wanneer u hierom wordt gevraagd.
Laat onder SQL-databases de optie Resourcetype ingesteld op Eén database en selecteer Maken.
Selecteer op het tabblad Basisbeginselen van het formulier SQL Database maken onder Projectdetails het gewenste Azure-abonnement, de resourcegroep en de server voor uw database. Gebruik vervolgens een unieke naam voor uw databasenaam. Als u geen logische server voor Azure SQL Database hebt gemaakt, raadpleegt u De server maken die is geconfigureerd met TDE met door de klant beheerde sleutel (CMK) voor meerdere tenants voor naslaginformatie.
Wanneer u bij het tabblad Beveiliging bent, selecteert u Transparante gegevensversleuteling configureren.
Selecteer in het menu Transparante gegevensversleuteling de door de klant beheerde sleutel (CMK) op databaseniveau.
Voor door de gebruiker toegewezen beheerde identiteit selecteert u Configureren om een database-identiteit in te schakelen en voegt u een door de gebruiker toegewezen beheerde identiteit toe aan de resource als een gewenste identiteit niet wordt weergegeven in het menu Identiteit. Selecteer vervolgens Toepassen.
Notitie
U kunt hier de federatieve clientidentiteit configureren als u CMK voor meerdere tenants configureert voor TDE.
Selecteer In het menu Transparante gegevensversleuteling de optie Sleutel wijzigen. Selecteer het gewenste abonnement, de sleutelkluis, de sleutel en de versie voor de door de klant beheerde sleutel die moet worden gebruikt voor TDE. Selecteer de knop Selecteren. Nadat u een sleutel hebt geselecteerd, kunt u indien nodig extra databasesleutels toevoegen met behulp van de Azure Key Vault-URI (object-id) in het menu Transparante gegevensversleuteling .
Automatische sleutelrotatie kan ook worden ingeschakeld op databaseniveau met behulp van het selectievakje Voor automatisch draaien van sleutels in het menu Transparante gegevensversleuteling.
Selecteer Toepassen om door te gaan met het maken van de database.
Selecteer Beoordelen en maken onder aan de pagina
Selecteer op de pagina Controleren en maken na het controleren de optie Maken.
Notitie
Het maken van de database mislukt als de door de gebruiker toegewezen beheerde identiteit niet over de juiste machtigingen beschikt voor de sleutelkluis. De door de gebruiker toegewezen beheerde identiteit heeft de machtigingen Get, WrapKey en UnwrapKey nodig voor de sleutelkluis. Zie Beheerde identiteiten voor transparante gegevensversleuteling met door de klant beheerde sleutel voor meer informatie.
Zie het artikel Azure CLI installeren voor meer informatie over het installeren van de huidige versie van Azure CLI.
Maak een database die is geconfigureerd met door de gebruiker toegewezen beheerde identiteit en door de klant beheerde TDE voor meerdere tenants met behulp van de opdracht az sql db create . De sleutel-id van de tweede tenant kan in het encryption-protector veld worden gebruikt. De toepassings-id van de toepassing met meerdere tenants kan in het federated-client-id veld worden gebruikt. De --encryption-protector-auto-rotation parameter kan worden gebruikt om automatische sleutelrotatie op databaseniveau in te schakelen.
Als u de resource-id van uw door de gebruiker toegewezen beheerde identiteit wilt ophalen, zoekt u in Azure Portal naar beheerde identiteiten. Zoek uw beheerde identiteit en ga naar Eigenschappen. Een voorbeeld van uw UMI-resource-id ziet er als volgt uit/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
Maak een database die is geconfigureerd met door de gebruiker toegewezen beheerde identiteit en door de klant beheerde TDE voor meerdere tenants op databaseniveau met behulp van PowerShell.
<ResourceGroupName>: Naam van de resourcegroep voor uw logische Azure SQL-server
<DatabaseName>: Een unieke Azure SQL-databasenaam gebruiken
<ServerName>: Een unieke naam voor een logische Azure SQL-server gebruiken
<UserAssignedIdentityId>: De lijst met door de gebruiker toegewezen beheerde identiteiten die aan de server moeten worden toegewezen (kan een of meerdere zijn)
<CustomerManagedKeyId>: De sleutel-id uit de tweede tenantsleutelkluis
<FederatedClientId>: De toepassings-id van de toepassing met meerdere tenants
Als u de resource-id van uw door de gebruiker toegewezen beheerde identiteit wilt ophalen, zoekt u in Azure Portal naar beheerde identiteiten. Zoek uw beheerde identiteit en ga naar Eigenschappen. Een voorbeeld van uw UMI-resource-id ziet er als volgt uit/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
Hier volgt een voorbeeld van een ARM-sjabloon waarmee een Azure SQL Database wordt gemaakt met een door de gebruiker toegewezen beheerde identiteit en door de klant beheerde TDE op databaseniveau. Voor een CMK voor meerdere tenants gebruikt u de sleutel-id uit de tweede tenantsleutelkluis en de toepassings-id van de toepassing met meerdere tenants.
Gebruik een aangepaste implementatie in Azure Portal en bouw uw eigen sjabloon in de editor. Sla vervolgens de configuratie op nadat u in het voorbeeld hebt geplakt.
Als u de resource-id van uw door de gebruiker toegewezen beheerde identiteit wilt ophalen, zoekt u in Azure Portal naar beheerde identiteiten. Zoek uw beheerde identiteit en ga naar Eigenschappen. Een voorbeeld van uw UMI-resource-id ziet er als volgt uit/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Een bestaande Azure SQL Database bijwerken met door de klant beheerde sleutels op databaseniveau
Hier volgen voorbeelden van het bijwerken van een bestaande database in Azure SQL Database met een door de gebruiker toegewezen beheerde identiteit en het instellen van een door de gebruiker beheerde sleutel voor meerdere tenants op databaseniveau. De door de gebruiker toegewezen beheerde identiteit is vereist voor het instellen van een door de klant beheerde sleutel voor transparante gegevensversleuteling tijdens de fase voor het maken van de database.
Navigeer in Azure Portal naar de SQL-databaseresource die u wilt bijwerken met een door de klant beheerde sleutel op databaseniveau.
Selecteer Identiteit onder Beveiliging. Een door de gebruiker toegewezen beheerde identiteit voor deze database toevoegen en vervolgens Opslaan selecteren
Ga nu naar het menu Gegevensversleuteling onder Beveiliging voor uw database. Selecteer Door de klant beheerde sleutel (CMK) op databaseniveau. De database-identiteit voor de database moet al zijn ingeschakeld omdat u de identiteit in de laatste stap hebt geconfigureerd.
Selecteer Sleutel wijzigen. Selecteer het gewenste abonnement, de sleutelkluis, de sleutel en de versie voor de door de klant beheerde sleutel die moet worden gebruikt voor TDE. Selecteer de knop Selecteren. Nadat u een sleutel hebt geselecteerd, kunt u indien nodig extra databasesleutels toevoegen met behulp van de Azure Key Vault-URI (object-id) in het menu Gegevensversleuteling .
Zie het artikel Azure CLI installeren voor meer informatie over het installeren van de huidige versie van Azure CLI.
Werk een database bij die is geconfigureerd met door de gebruiker toegewezen beheerde identiteit en door de klant beheerde TDE voor meerdere tenants met behulp van de opdracht az sql db create . De sleutel-id van de tweede tenant kan in het encryption-protector veld worden gebruikt. De toepassings-id van de toepassing met meerdere tenants kan in het federated-client-id veld worden gebruikt.
Als u de resource-id van uw door de gebruiker toegewezen beheerde identiteit wilt ophalen, zoekt u in Azure Portal naar beheerde identiteiten. Zoek uw beheerde identiteit en ga naar Eigenschappen. Een voorbeeld van uw UMI-resource-id ziet er als volgt uit/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>. De --encryption-protector-auto-rotation parameter kan worden gebruikt om automatische sleutelrotatie op databaseniveau in te schakelen.
De lijst $keys is een door spaties gescheiden lijst met sleutels die moeten worden toegevoegd aan de database en $keysToRemove is een door spatie gescheiden lijst met sleutels die uit de database moeten worden verwijderd
Werk een database bij die is geconfigureerd met door de gebruiker toegewezen beheerde identiteit en door de klant beheerde TDE voor meerdere tenants op databaseniveau met behulp van PowerShell.
<ResourceGroupName>: Naam van de resourcegroep voor uw logische Azure SQL-server
<DatabaseName>: Een unieke Azure SQL-databasenaam gebruiken
<ServerName>: Een unieke naam voor een logische Azure SQL-server gebruiken
<UserAssignedIdentityId>: De lijst met door de gebruiker toegewezen beheerde identiteiten die aan de server moeten worden toegewezen (kan een of meerdere zijn)
<CustomerManagedKeyId>: De sleutel-id uit de tweede tenantsleutelkluis
<FederatedClientId>: De toepassings-id van de toepassing met meerdere tenants
<ListOfKeys>: De door komma's gescheiden lijst met door de klant beheerde sleutels op databaseniveau die moeten worden toegevoegd aan de database
<ListOfKeysToRemove>: De door komma's gescheiden lijst met door de klant beheerde sleutels op databaseniveau die uit de database moeten worden verwijderd
Als u de resource-id van uw door de gebruiker toegewezen beheerde identiteit wilt ophalen, zoekt u in Azure Portal naar beheerde identiteiten. Zoek uw beheerde identiteit en ga naar Eigenschappen. Een voorbeeld van uw UMI-resource-id ziet er als volgt uit/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Hier volgt een voorbeeld van een ARM-sjabloon waarmee een Azure SQL Database wordt bijgewerkt met een door de gebruiker toegewezen beheerde identiteit en door de klant beheerde TDE op databaseniveau. Voor een CMK voor meerdere tenants gebruikt u de sleutel-id uit de tweede tenantsleutelkluis en de toepassings-id van de toepassing met meerdere tenants.
Gebruik een aangepaste implementatie in Azure Portal en bouw uw eigen sjabloon in de editor. Sla vervolgens de configuratie op nadat u in het voorbeeld hebt geplakt.
Als u de resource-id van uw door de gebruiker toegewezen beheerde identiteit wilt ophalen, zoekt u in Azure Portal naar beheerde identiteiten. Zoek uw beheerde identiteit en ga naar Eigenschappen. Een voorbeeld van uw UMI-resource-id ziet er als volgt uit/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Als u een sleutel uit de database wilt verwijderen, moet de waarde van de sleutelwoordenlijst van een bepaalde sleutel worden doorgegeven als null. Bijvoorbeeld: "https://yourvault.vault.azure.net/keys/yourkey1/fd021f84a0d94d43b8ef33154bca0000": null.
De door de klant beheerde sleutelinstellingen op databaseniveau weergeven in een Azure SQL Database
Hieronder ziet u voorbeelden van het ophalen van door de klant beheerde sleutels op databaseniveau voor een database. De ARM-resource Microsoft.Sql/servers/databases toont standaard alleen de TDE-beveiliging en beheerde identiteit die in de database zijn geconfigureerd. Als u de volledige lijst met sleutels wilt uitbreiden, gebruikt u de parameter. -ExpandKeyList Daarnaast kunnen filters zoals -KeysFilter "current" en een bepaald tijdstip (bijvoorbeeld 2023-01-01) worden gebruikt om de huidige gebruikte sleutels en sleutels op een bepaald tijdstip op te halen. Deze filters worden alleen ondersteund voor afzonderlijke databasequery's en niet voor query's op serverniveau.
Als u de door de klant beheerde sleutels op databaseniveau in Azure Portal wilt weergeven, gaat u naar het menu Gegevensversleuteling van de SQL-databaseresource.
Zie het artikel Azure CLI installeren voor meer informatie over het installeren van de huidige versie van Azure CLI.
# 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
# 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
Gebruik de REST API 2022-08-01-preview voor Azure SQL Database.
Haal de basisinstellingen voor door de klant beheerde sleutel op databaseniveau op uit een database.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview
De door de klant beheerde sleutelinstellingen op databaseniveau ophalen uit een database en alle sleutels die ooit zijn toegevoegd
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys
De door de klant beheerde sleutelinstellingen op databaseniveau ophalen uit een database en de huidige sleutels die worden gebruikt
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'))
De door de klant beheerde sleutelinstellingen op databaseniveau ophalen uit een database en de sleutels die op een bepaald tijdstip worden gebruikt
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'))
Alle sleutels op een logische server weergeven
Als u de lijst met alle sleutels (en niet alleen de primaire beveiliging) wilt ophalen die door elke database onder de server worden gebruikt, moet er afzonderlijk een query worden uitgevoerd met de sleutelfilters. Hier volgt een voorbeeld van een PowerShell-query om elke sleutel onder de logische server weer te geven.
De door de klant beheerde sleutel op databaseniveau opnieuwvalideren in een Azure SQL Database
In het geval van een niet-toegankelijke TDE-beveiliging zoals beschreven in Transparent Data Encryption (TDE) met CMK, kan een hervalidatiesleutelbewerking worden gebruikt om de database toegankelijk te maken. Zie de volgende instructies of opdrachten voor voorbeelden.
Zoek uw SQL-databaseresource met behulp van Azure Portal. Nadat u uw SQL Database-resource hebt geselecteerd, gaat u naar het tabblad Transparent Data Encryption van het menu Gegevensversleuteling onder de beveiligingsinstellingen . Als de database geen toegang meer heeft tot De Azure Key Vault, wordt er een knop Opnieuwvalidate-sleutel weergegeven en kunt u de bestaande sleutel opnieuwvalideren door bestaande sleutel opnieuw proberen of een andere sleutel te selecteren door back-upsleutel selecteren te selecteren.
Zie het artikel Azure CLI installeren voor meer informatie over het installeren van de huidige versie van Azure CLI.
az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase
Gebruik de REST API 2022-08-01-preview voor 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
De door de klant beheerde sleutel op databaseniveau herstellen in een Azure SQL Database
Een database die is geconfigureerd met CMK op databaseniveau, kan worden teruggezet naar versleuteling op serverniveau als de server is geconfigureerd met een door de service beheerde sleutel met behulp van de volgende opdrachten.
Als u de door de klant beheerde sleutelinstelling op databaseniveau wilt terugzetten op versleutelingssleutel op serverniveau in Azure Portal, gaat u naar het tabblad Transparent Data Encryption van het menu Gegevensversleuteling van de SQL-databaseresource. Selecteer de versleutelingssleutel op serverniveau en selecteer Opslaan om de instellingen op te slaan.
Notitie
Als u de instelling voor versleutelingssleutel op serverniveau voor afzonderlijke databases wilt gebruiken, moet de logische server voor de Azure SQL Database worden geconfigureerd voor het gebruik van door de service beheerde sleutel voor TDE.
Zie het artikel Azure CLI installeren voor meer informatie over het installeren van de huidige versie van Azure CLI.
az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
Gebruik de REST API 2022-08-01-preview voor 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
Volgende stappen
Raadpleeg de volgende documentatie over verschillende CMK-bewerkingen op databaseniveau: