Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Transparent Data Encryption (TDE) versleutelt SQL Server-, Azure SQL Database- en Azure Synapse Analytics-gegevensbestanden. Deze versleuteling staat bekend als het versleutelen van data-at-rest.
Om een gebruikersdatabase te beveiligen, kunt u voorzorgsmaatregelen nemen, zoals:
- Een beveiligd systeem ontwerpen.
- Vertrouwelijke assets versleutelen.
- Een firewall bouwen rond de databaseservers.
Een kwaadwillende partij die echter fysieke media steelt, zoals stations of back-uptapes, kan de database herstellen of koppelen en door de gegevens bladeren.
Een oplossing is het versleutelen van gevoelige gegevens in een database en het gebruik van een certificaat om de sleutels te beveiligen die de gegevens versleutelen. Met deze oplossing voorkomt u dat iedereen zonder de sleutels de gegevens gebruikt. Maar u moet dit soort bescherming van tevoren plannen.
TDE voert realtime I/O-versleuteling en ontsleuteling van gegevens en logboekbestanden uit. De versleuteling maakt gebruik van een databaseversleutelingssleutel (DEK). De database-opstartrecord slaat de sleutel op voor beschikbaarheid tijdens het herstel. De DEK is een symmetrische sleutel en wordt beveiligd door een certificaat dat de database van master de server opslaat of door een asymmetrische sleutel die door een EKM-module wordt beveiligd.
TDE beveiligt data-at-rest, de gegevens en logboekbestanden. Hiermee kunt u veel wetten, voorschriften en richtlijnen volgen die in verschillende branches zijn vastgesteld. Met deze mogelijkheid kunnen softwareontwikkelaars gegevens versleutelen met behulp van AES- en 3DES-versleutelingsalgoritmen zonder bestaande toepassingen te wijzigen.
Opmerking
TDE is niet beschikbaar voor systeemdatabases. Het kan niet worden gebruikt om te versleutelen master, modelof msdb.
tempdb wordt automatisch versleuteld wanneer een gebruikersdatabase TDE heeft ingeschakeld, maar niet rechtstreeks kan worden versleuteld.
TDE biedt geen versleuteling tussen communicatiekanalen. Zie Verbindingen met SQL Server versleutelen door een certificaat te importeren voor meer informatie over het versleutelen van gegevens in communicatiekanalen.
Verwante onderwerpen:
- Transparante gegevensversleuteling voor SQL Database, SQL Managed Instance en Azure Synapse Analytics
- Aan de slag met TDE (Transparent Data Encryption) in Azure Synapse Analytics
- Een met TDE beveiligde database verplaatsen naar een andere SQL Server
- TDE inschakelen op SQL Server met behulp van EKM
- SQL Server-connector gebruiken met SQL-versleutelingsfuncties
- De SQL Server-beveiligingsblog op TDE met veelgestelde vragen
Over TDE
Versleuteling van een databasebestand wordt uitgevoerd op paginaniveau. De pagina's in een versleutelde database worden versleuteld voordat ze naar de schijf worden geschreven en worden ontsleuteld wanneer ze in het geheugen worden gelezen. TDE verhoogt de grootte van de versleutelde database niet.
Informatie die van toepassing is op SQL Database
Wanneer u TDE gebruikt met Azure SQL Database, maakt SQL Database automatisch het certificaat op serverniveau dat is opgeslagen in de master database. Als u een TDE-database in SQL Database wilt verplaatsen, hoeft u de database niet te ontsleutelen voor de verplaatsingsbewerking. Zie transparante gegevensversleuteling met Azure SQL Database voor meer informatie over het gebruik van TDE met SQL Database.
Informatie die van toepassing is op SQL Server
Nadat u een database hebt beveiligd, kunt u deze herstellen met behulp van het juiste certificaat. Zie SQL Server-certificaten en asymmetrische sleutels voor meer informatie over certificaten.
Nadat u TDE hebt ingeschakeld, maakt u onmiddellijk een back-up van het certificaat en de bijbehorende persoonlijke sleutel. Als het certificaat niet meer beschikbaar is of als u de database op een andere server herstelt of koppelt, hebt u back-ups van het certificaat en de persoonlijke sleutel nodig. Anders kunt u de database niet openen. Er moet ook een back-up worden gemaakt van certificaten die zijn opgeslagen in een ingesloten systeemdatabase .
Behoud het versleutelingscertificaat, zelfs als u TDE in de database hebt uitgeschakeld. Hoewel de database niet is versleuteld, blijven delen van het transactielogboek mogelijk beveiligd. Mogelijk hebt u het certificaat ook nodig voor bepaalde bewerkingen totdat u een volledige databaseback-up uitvoert.
U kunt nog steeds een certificaat gebruiken dat de vervaldatum overschrijdt om gegevens te versleutelen en ontsleutelen met TDE.
Versleutelingshiërarchie
De Windows Data Protection-API (DPAPI) bevindt zich in de hoofdmap van de versleutelingsstructuur, beveiligt de sleutelhiërarchie op computerniveau en wordt gebruikt om de servicehoofdsleutel (SMK) voor het databaseserverexemplaren te beveiligen. De SMK beveiligt de databasehoofdsleutel (DMK), die wordt opgeslagen op gebruikersdatabaseniveau en beveiligt certificaten en asymmetrische sleutels. Deze sleutels beschermen op hun beurt symmetrische sleutels, waardoor de gegevens worden beschermd. TDE maakt gebruik van een vergelijkbare hiërarchie tot aan het certificaat. Wanneer u TDE gebruikt, moeten de DMK en het certificaat worden opgeslagen in de master database. Er wordt een nieuwe sleutel gemaakt en opgeslagen in de gebruikersdatabase die alleen wordt gebruikt voor TDE en ook wel de databaseversleutelingssleutel (DEK) genoemd.
In de volgende afbeelding ziet u de architectuur van TDE-versleuteling. Alleen de items op databaseniveau (de databaseversleutelingssleutel en ALTER DATABASE -delen) kunnen door de gebruiker worden geconfigureerd wanneer u TDE in SQL Database gebruikt.
TDE inschakelen
Volg deze stappen om TDE te gebruiken.
Van toepassing op: SQL Server.
- Maak een hoofdsleutel.
- Maak of haal een certificaat op dat wordt beveiligd door de hoofdsleutel.
- Maak een databaseversleutelingssleutel en beveilig deze met behulp van het certificaat.
- Stel de database in om versleuteling te gebruiken.
In het volgende voorbeeld ziet u de versleuteling en ontsleuteling van de AdventureWorks2022 database met behulp van een certificaat dat MyServerCert op de server is geïnstalleerd.
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
GO
CREATE CERTIFICATE MyServerCert
WITH SUBJECT = 'My DEK Certificate';
GO
USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2022
SET ENCRYPTION ON;
GO
De versleutelings- en ontsleutelingsbewerkingen worden gepland op achtergrondthreads door SQL Server. Als u de status van deze bewerkingen wilt weergeven, gebruikt u de catalogusweergaven en dynamische beheerweergaven in de tabel die verderop in dit artikel wordt weergegeven.
Waarschuwing
Back-upbestanden voor databases waarvoor TDE is ingeschakeld, worden ook versleuteld met de DEK. Als u deze back-ups herstelt, moet het certificaat dat de DEK beveiligt, beschikbaar zijn. Zorg er daarom voor dat u, naast het maken van een back-up van de database, back-ups van de servercertificaten onderhoudt. Resultaten van gegevensverlies als de certificaten niet meer beschikbaar zijn.
Zie SQL Server-certificaten en asymmetrische sleutels voor meer informatie.
Opdrachten en functies
Voor de volgende instructies om TDE-certificaten te accepteren, gebruikt u een databasehoofdsleutel om ze te versleutelen. Als u ze alleen met een wachtwoord versleutelt, worden ze door de instructies geweigerd als versleutelers.
Belangrijk
Als u de certificaten met een wachtwoord beveiligt nadat TDE deze gebruikt, is de database na het opnieuw opstarten ontoegankelijk.
De volgende tabel bevat koppelingen en uitleg over TDE-opdrachten en -functies:
| Opdracht of functie | Purpose |
|---|---|
| DATABASEVERSLEUTELINGSSLEUTEL MAKEN | Hiermee maakt u een sleutel waarmee een database wordt versleuteld |
| DATABASEVERSLEUTELINGSSLEUTEL WIJZIGEN | Hiermee wijzigt u de sleutel waarmee een database wordt versleuteld |
| DATABASEVERSLEUTELINGSSLEUTEL VERWIJDEREN | Hiermee verwijdert u de sleutel waarmee een database wordt versleuteld |
| OPTIES VOOR ALTER DATABASE SET | Hier wordt uitgelegd welke ALTER DATABASE optie wordt gebruikt om TDE in te schakelen |
Catalogusweergaven en dynamische beheerweergaven
De volgende tabel bevat TDE-catalogusweergaven en dynamische beheerweergaven (DMV).
| Catalogusweergave of dynamische beheerweergave | Purpose |
|---|---|
| sys.databases | Catalogusweergave waarin databasegegevens worden weergegeven |
| sys.certificates | Catalogusweergave met de certificaten in een database |
| sys.dm_database_encryption_keys | Dynamische beheerweergave die informatie biedt over de versleutelingssleutels en status van versleuteling van een database |
Permissions
Elke TDE-functie en -opdracht heeft afzonderlijke machtigingsvereisten, zoals beschreven in de tabellen die eerder zijn weergegeven.
Voor het weergeven van de metagegevens die zijn betrokken bij TDE, is de VIEW DEFINITION machtiging voor een certificaat vereist.
Overwegingen
Hoewel er een scan voor herversleuteling voor een databaseversleutelingsbewerking wordt uitgevoerd, worden onderhoudsbewerkingen voor de database uitgeschakeld. U kunt de instelling voor de modus voor één gebruiker voor de database gebruiken om onderhoudsbewerkingen uit te voeren. Zie Een database instellen op de modus voor één gebruiker voor meer informatie.
Gebruik de sys.dm_database_encryption_keys dynamische beheerweergave om de status van databaseversleuteling te vinden. Zie de sectie Catalogusweergaven en dynamische beheerweergaven eerder in dit artikel voor meer informatie.
In TDE worden alle bestanden en bestandsgroepen in een database versleuteld. Als een bestandsgroep in een database is gemarkeerd READ ONLY, mislukt de versleutelingsbewerking van de database.
Als u een database gebruikt in databasespiegeling of logboekverzending, worden beide databases versleuteld. De logboektransacties worden versleuteld wanneer ze ertussen worden verzonden.
Belangrijk
Indexen voor volledige tekst worden versleuteld wanneer een database is ingesteld voor versleuteling. Dergelijke indexen die zijn gemaakt in SQL Server 2005 (9.x) en eerdere versies, worden geïmporteerd in de database door SQL Server 2008 (10.0.x) en latere versies en worden versleuteld door TDE.
Aanbeveling
Als u wijzigingen in de TDE-status van een database wilt controleren, gebruikt u SQL Server Audit of Azure SQL Database-controle. Voor SQL Server wordt TDE bijgehouden onder de auditactiegroep DATABASE_OBJECT_CHANGE_GROUP, die u kunt vinden in SQL Server-actiegroepen en -acties.
Beperkingen
De volgende bewerkingen zijn niet toegestaan tijdens de eerste databaseversleuteling, sleutelwijziging of databaseontsleuteling:
- Een bestand verwijderen uit een bestandsgroep in een database
- Een database verwijderen
- Een database offline halen
- Een database loskoppelen
- Een database of bestandsgroep omzetten in een
READ ONLYstatus
De volgende bewerkingen zijn niet toegestaan tijdens de CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEYen DROP DATABASE ENCRYPTION KEYALTER DATABASE...SET ENCRYPTION instructies:
- Een bestand verwijderen uit een bestandsgroep in een database
- Een database verwijderen
- Een database offline halen
- Een database loskoppelen
- Een database of bestandsgroep omzetten in een
READ ONLYstatus -
ALTER DATABASEEen opdracht gebruiken - Een back-up van een database of databasebestand starten
- Een database of databasebestand herstellen starten
- Een momentopname maken
De volgende bewerkingen of voorwaarden verhinderen de , ALTER DATABASE ENCRYPTION KEYen ALTER DATABASE...SET ENCRYPTIONDROP DATABASE ENCRYPTION KEYinstructiesCREATE DATABASE ENCRYPTION KEY:
- Een database heeft het kenmerk Alleen-lezen of heeft alleen-lezen bestandsgroepen.
- Er wordt een
ALTER DATABASEopdracht uitgevoerd. - Er wordt een gegevensback-up uitgevoerd.
- Een database bevindt zich in een offline- of herstelvoorwaarde.
- Er wordt een momentopname uitgevoerd.
- Databaseonderhoudstaken worden uitgevoerd.
Wanneer databasebestanden worden gemaakt, is direct initialiseren van bestanden niet beschikbaar wanneer TDE is ingeschakeld.
Als u een DEK wilt versleutelen met een asymmetrische sleutel, moet de asymmetrische sleutel zich op een uitbreidbare provider voor sleutelbeheer hebben.
TDE-scan
Als u TDE wilt inschakelen voor een database, moet SQL Server een versleutelingsscan uitvoeren. De scan leest elke pagina van de gegevensbestanden naar de buffergroep en schrijft vervolgens de versleutelde pagina's terug naar schijf.
Als u meer controle wilt over de versleutelingsscan, introduceert SQL Server 2019 (15.x) TDE-scan, die een syntaxis voor onderbreken en hervatten heeft. U kunt de scan onderbreken terwijl de werkbelasting op het systeem zwaar is of tijdens bedrijfskritieke uren en de scan later hervat.
Gebruik de volgende syntaxis om de TDE-versleutelingsscan te onderbreken:
ALTER DATABASE <db_name> SET ENCRYPTION SUSPEND;
Gebruik ook de volgende syntaxis om de TDE-versleutelingsscan te hervatten:
ALTER DATABASE <db_name> SET ENCRYPTION RESUME;
De kolom encryption_scan_state is toegevoegd aan de sys.dm_database_encryption_keys dynamische beheerweergave. De huidige status van de versleutelingsscan wordt weergegeven. Er is ook een nieuwe kolom met de naam encryption_scan_modify_date, die de datum en tijd bevat van de laatste wijziging van de status versleutelingsscan.
Als het SQL Server-exemplaar opnieuw wordt opgestart terwijl de versleutelingsscan is onderbroken, wordt er een bericht in het foutenlogboek geregistreerd tijdens het opstarten. Het bericht geeft aan dat een bestaande scan is onderbroken.
Belangrijk
De TDE-scanfunctie onderbreken en hervatten is momenteel niet beschikbaar in Azure SQL Database, Azure SQL Managed Instance en Azure Synapse Analytics.
TDE- en transactielogboeken
TDE beveiligt gegevensbestanden en logboekbestanden in rust. Het versleutelen van de hele database na het inschakelen van TDE op een niet-versleutelde database is een aanzienlijke gegevensbewerking en de tijd die nodig is, is afhankelijk van de systeemresources waarop deze database wordt uitgevoerd. De sys.dm_database_encryption_keys DMV kan worden gebruikt om de versleutelingsstatus van een database te bepalen.
Wanneer TDE is ingeschakeld, dwingt de database-engine het maken van een nieuw transactielogboek af, dat wordt versleuteld door de versleutelingssleutel van de database. Elk logboek dat wordt gegenereerd door eerdere transacties of huidige langlopende transacties die zijn interleaved tussen de wijziging van de TDE-status, wordt niet versleuteld.
De transactielogboeken kunnen worden bewaakt met behulp van de sys.dm_db_log_info DMV, die ook laat zien of het logboekbestand is versleuteld of niet met behulp van de vlf_encryptor_thumbprint kolom die beschikbaar is in Azure SQL, en SQL Server 2019 (15.x) en latere versies. Hier volgt een voorbeeldquery om de versleutelingsstatus van het logboekbestand te vinden met behulp van de encryption_state kolom in de sys.dm_database_encryption_keys weergave:
USE AdventureWorks2022;
GO
/* The value 3 represents an encrypted state
on the database and transaction logs. */
SELECT *
FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
GO
Zie het transactielogboek voor meer informatie over de architectuur van het SQL Server-logboekbestand.
Voordat een DEK wordt gewijzigd, versleutelt de vorige DEK alle gegevens die naar het transactielogboek worden geschreven.
Als u een DEK twee keer wijzigt, moet u een logboekback-up uitvoeren voordat u de DEK opnieuw kunt wijzigen.
TDE en de tempdb-systeemdatabase
De tempdb systeemdatabase wordt versleuteld als een andere database op het SQL Server-exemplaar wordt versleuteld met behulp van TDE. Deze versleuteling kan een prestatie-effect hebben voor niet-versleutelde databases op hetzelfde SQL Server-exemplaar. Zie tempdb-database voor meer informatie over de tempdb systeemdatabase.
TDE en replicatie
Met replicatie worden gegevens niet automatisch gerepliceerd uit een database met TDE-functionaliteit in een versleuteld formulier. Schakel TDE afzonderlijk in als u distributie- en abonneedatabases wilt beveiligen.
Met momentopnamereplicatie kunnen gegevens worden opgeslagen in niet-versleutelde tussenliggende bestanden, zoals BCP-bestanden. De initiële gegevensdistributie voor transactionele replicatie en samenvoeging kan ook. Tijdens deze replicatie kunt u versleuteling inschakelen om het communicatiekanaal te beveiligen.
Zie Verbindingen met SQL Server versleutelen door een certificaat te importeren voor meer informatie.
TDE en beschikbaarheidsgroepen
U kunt een versleutelde database toevoegen aan een AlwaysOn-beschikbaarheidsgroep.
Als u databases wilt versleutelen die deel uitmaken van een beschikbaarheidsgroep, maakt u de hoofdsleutel en certificaten of asymmetrische sleutel (EKM) op alle secundaire replica's voordat u de databaseversleutelingssleutel op de primaire replica maakt.
Als een certificaat wordt gebruikt om de DEK te beveiligen, maakt u een back-up van het certificaat dat is gemaakt op de primaire replica en maakt u vervolgens het certificaat op basis van een bestand op alle secundaire replica's voordat u de DEK op de primaire replica maakt.
TDE- en FILESTREAM-gegevens
FILESTREAM-gegevens worden niet versleuteld, zelfs niet wanneer u TDE inschakelt.
TDE en back-ups
Certificaten worden vaak gebruikt in Transparent Data Encryption om de DEK te beveiligen. Het certificaat moet worden gemaakt in de master database. Back-upbestanden van databases waarvoor TDE is ingeschakeld, worden ook versleuteld met behulp van de DEK. Als u deze back-ups herstelt, moet het certificaat dat de DEK beveiligt, beschikbaar zijn. Dit betekent dat u, naast het maken van een back-up van de database, back-ups van de servercertificaten moet onderhouden om gegevensverlies te voorkomen. Gegevensverlies treedt op als het certificaat niet meer beschikbaar is.
TDE verwijderen
Verwijder versleuteling uit de database met behulp van de ALTER DATABASE instructie.
ALTER DATABASE <db_name> SET ENCRYPTION OFF;
Als u de status van de database wilt weergeven, gebruikt u de sys.dm_database_encryption_keys dynamische beheerweergave.
Opmerking
Hoewel het versleutelingsproces wordt uitgevoerd, ALTER DATABASE zijn instructies niet toegestaan in de database. Totdat het versleutelingsproces is voltooid, kunt u niet beginnen met het ontsleutelen van de database.
Wacht tot de ontsleuteling is voltooid voordat u de DEK verwijdert met behulp van DROP DATABASE ENCRYPTION KEY.
Belangrijk
Maak een back-up van de hoofdsleutel en het certificaat dat wordt gebruikt voor TDE naar een veilige locatie. De hoofdsleutel en het certificaat zijn vereist om back-ups te herstellen die zijn gemaakt toen de database is versleuteld met TDE. Nadat u de DEK hebt verwijderd, moet u een logboekback-up maken, gevolgd door een nieuwe volledige back-up van de ontsleutelde database.
TDE en de buffergroepextensie
Wanneer u een database versleutelt met behulp van TDE, worden bestanden met betrekking tot de buffergroepextensie (BPE) niet versleuteld. Gebruik voor deze bestanden versleutelingshulpprogramma's zoals BitLocker of EFS op bestandssysteemniveau.
TDE en In-Memory OLTP
U kunt TDE inschakelen voor een database met In-Memory OLTP-objecten. In SQL Server 2016 (13.x) en Azure SQL Database worden In-Memory OLTP-logboekrecords en -gegevens versleuteld als u TDE inschakelt. In SQL Server 2014 (12.x) worden In-Memory OLTP-logboekrecords versleuteld als u TDE inschakelt, maar bestanden in de MEMORY_OPTIMIZED_DATA bestandsgroep zijn niet versleuteld.
Richtlijnen voor het beheren van certificaten die worden gebruikt in TDE
U moet een back-up maken van het certificaat en de hoofdsleutel van de database wanneer de database is ingeschakeld voor TDE en wordt gebruikt in logboekverzending of databasespiegeling. Er moet ook een back-up worden gemaakt van certificaten die zijn opgeslagen in een ingesloten systeemdatabase.
Het certificaat dat wordt gebruikt om de DEK te beveiligen, mag nooit uit de master database worden verwijderd. Hierdoor wordt de versleutelde database ontoegankelijk.
Er wordt een bericht weergegeven zoals de volgende (fout 33091) nadat CREATE DATABASE ENCRYPTION KEY er een back-up is gemaakt van het certificaat dat in de opdracht is gebruikt.
Waarschuwing
Er is geen back-up gemaakt van het certificaat dat wordt gebruikt voor het versleutelen van de databaseversleutelingssleutel. U moet onmiddellijk een back-up maken van het certificaat en de persoonlijke sleutel die aan het certificaat is gekoppeld. Als het certificaat ooit niet meer beschikbaar is of als u de database op een andere server moet herstellen of koppelen, moet u back-ups van zowel het certificaat als de persoonlijke sleutel hebben of kunt u de database niet openen.
De volgende query kan worden gebruikt om de certificaten te identificeren die worden gebruikt in TDE waarvan nog geen back-up is gemaakt vanaf het moment dat deze is gemaakt.
SELECT pvt_key_last_backup_date,
Db_name(dek.database_id) AS encrypteddatabase,
c.name AS Certificate_Name
FROM sys.certificates AS c
INNER JOIN sys.dm_database_encryption_keys AS dek
ON c.thumbprint = dek.encryptor_thumbprint;
Als de kolom pvt_key_last_backup_date is, is NULLde database die overeenkomt met die rij ingeschakeld voor TDE, maar er is geen back-up gemaakt van het certificaat dat wordt gebruikt om de DEK te beveiligen. Zie BACKUP CERTIFICATE voor meer informatie over het maken van back-ups van een certificaat.