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.
U kunt verschillende voorzorgsmaatregelen nemen om de database te beveiligen, zoals het ontwerpen van een beveiligd systeem, het versleutelen van vertrouwelijke assets en het bouwen van een firewall rond de databaseservers. Voor een scenario waarin de fysieke media (zoals stations of back-uptapes) worden gestolen, kan een kwaadwillende partij de database gewoon terugzetten of aan de database koppelen en de gegevens bekijken. Een oplossing is het versleutelen van gevoelige gegevens in de database en het beveiligen van de sleutels die worden gebruikt voor het versleutelen van de gegevens met een certificaat. Dit voorkomt dat iemand zonder de sleutels de gegevens gebruikt, maar dit soort beveiliging moet vooraf worden gepland.
Transparent Data Encryption (TDE) voert realtime I/O-versleuteling en ontsleuteling uit van de gegevens- en transactielogboekbestanden en de speciale PDW-logboekbestanden. De versleuteling maakt gebruik van een databaseversleutelingssleutel (DEK), die in de opstartrecord van de database wordt opgeslagen voor beschikbaarheid tijdens herstel. De DEK is een symmetrische sleutel die wordt beveiligd met behulp van een certificaat dat is opgeslagen in de hoofddatabase van de SQL Server PDW. TDE beschermt gegevens 'in rusttoestand', wat betekent dat het de gegevens- en logboekbestanden beschermt. Het biedt de mogelijkheid om te voldoen aan veel wetten, voorschriften en richtlijnen die in verschillende branches zijn vastgesteld. Met deze functie kunnen softwareontwikkelaars gegevens versleutelen met behulp van AES- en 3DES-versleutelingsalgoritmen zonder bestaande toepassingen te wijzigen.
Belangrijk
TDE biedt geen versleuteling voor gegevens die tussen de client en de PDW reizen. Zie Een certificaat inrichten voor meer informatie over het versleutelen van gegevens tussen de client en SQL Server PDW.
TDE versleutelt geen gegevens terwijl deze worden verplaatst of gebruikt. Intern verkeer tussen PDW-onderdelen in de SQL Server PDW is niet versleuteld. Gegevens die tijdelijk zijn opgeslagen in geheugenbuffers, worden niet versleuteld. Om dit risico te beperken, beheert u fysieke toegang en verbindingen met de SQL Server PDW.
Nadat de database is beveiligd, kan de database worden hersteld met behulp van het juiste certificaat.
Opmerking
Wanneer u een certificaat voor TDE maakt, moet u er onmiddellijk een back-up van maken, samen met de bijbehorende persoonlijke sleutel. Als het certificaat ooit niet 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. Het versleutelingscertificaat moet worden bewaard, zelfs als TDE niet meer is ingeschakeld voor de database. Hoewel de database niet is versleuteld, blijven delen van het transactielogboek mogelijk nog steeds beveiligd en is het certificaat mogelijk nodig voor bepaalde bewerkingen totdat de volledige back-up van de database wordt uitgevoerd. Een certificaat dat de vervaldatum heeft overschreden, kan nog steeds worden gebruikt voor het versleutelen en ontsleutelen van gegevens met TDE.
Versleuteling van het databasebestand wordt uitgevoerd op paginaniveau. De pagina's in een versleutelde database worden versleuteld voordat ze naar de schijf worden geschreven en ontsleuteld wanneer ze in het geheugen worden gelezen. TDE vergroot niet de grootte van de versleutelde database.
In de volgende afbeelding ziet u de hiërarchie van sleutels voor TDE-versleuteling:
Transparent Data Encryption gebruiken
Volg deze stappen om TDE te gebruiken. De eerste drie stappen worden slechts eenmaal uitgevoerd bij het voorbereiden van SQL Server PDW ter ondersteuning van TDE.
Maak een hoofdsleutel in de hoofddatabase.
Gebruik sp_pdw_database_encryption om TDE in te schakelen op de SQL Server PDW. Deze bewerking wijzigt de tijdelijke databases om de beveiliging van toekomstige tijdelijke gegevens te waarborgen en mislukt als er een poging wordt gedaan wanneer er actieve sessies met tijdelijke tabellen zijn. sp_pdw_database_encryption schakelt het maskeren van gebruikersgegevens in PDW-systeemlogboeken in. (Zie sp_pdw_log_user_data_masking voor meer informatie over het maskeren van gebruikersgegevens in PDW-systeemlogboeken.)
Gebruik sp_pdw_add_network_credentials om een referentie te maken die kan worden geverifieerd en geschreven naar de share waar de back-up van het certificaat wordt opgeslagen. Als er al een referentie bestaat voor de beoogde opslagserver, kunt u de bestaande referentie gebruiken.
Maak in de hoofddatabase een certificaat dat wordt beveiligd door de hoofdsleutel.
Maak een back-up van het certificaat naar de opslaglocatie.
Maak in de gebruikersdatabase een databaseversleutelingssleutel en beveilig deze door het certificaat dat is opgeslagen in de hoofddatabase.
Gebruik de
ALTER DATABASEinstructie om de database te versleutelen met behulp van TDE.
In het volgende voorbeeld ziet u hoe u de database versleutelt met behulp van een certificaat met de AdventureWorksPDW2012 naam MyServerCert, gemaakt in SQL Server PDW.
Eerst: TDE inschakelen op de SQL Server PDW. Deze actie is slechts eenmaal nodig.
USE master;
GO
-- Create a database master key in the master database
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
GO
-- Enable encryption for PDW
EXEC sp_pdw_database_encryption 1;
GO
-- Add a credential that can write to the share
-- A credential created for a backup can be used if you wish
EXEC sp_pdw_add_network_credentials 'SECURE_SERVER', '<domain>\<Windows_user>', '<password>';
Ten tweede: Maak en maak een back-up van een certificaat in de hoofddatabase. Deze actie is slechts eenmaal vereist. U kunt een afzonderlijk certificaat hebben voor elke database (aanbevolen), of u kunt meerdere databases beveiligen met één certificaat.
-- Create certificate in master
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
GO
-- Back up the certificate with private key
BACKUP CERTIFICATE MyServerCert
TO FILE = '\\SECURE_SERVER\cert\MyServerCert.cer'
WITH PRIVATE KEY
(
FILE = '\\SECURE_SERVER\cert\MyServerCert.key',
ENCRYPTION BY PASSWORD = '<password>'
)
GO
Laatste: Maak de DEK en gebruik ALTER DATABASE om een gebruikersdatabase te versleutelen. Deze actie wordt herhaald voor elke database die wordt beveiligd door TDE.
USE AdventureWorksPDW2012;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorksPDW2012 SET ENCRYPTION ON;
GO
De versleutelings- en ontsleutelingsbewerkingen worden gepland op achtergrondthreads door SQL Server. U kunt de status van deze bewerkingen bekijken met behulp van de catalogusweergaven en dynamische beheerweergaven in de lijst die verderop in dit artikel wordt weergegeven.
Waarschuwing
Back-upbestanden van databases waarvoor TDE is ingeschakeld, worden ook versleuteld met behulp van de databaseversleutelingssleutel. Als u deze back-ups herstelt, moet het certificaat dat de databaseversleutelingssleutel beveiligt, beschikbaar zijn. Dit betekent dat u, naast het maken van een back-up van de database, ervoor moet zorgen dat u back-ups van de servercertificaten onderhoudt om gegevensverlies te voorkomen. Gegevensverlies resulteert als het certificaat niet meer beschikbaar is.
Opdrachten en functies
De TDE-certificaten moeten door de hoofdsleutel van de database worden versleuteld om door de volgende instructies te kunnen worden geaccepteerd.
De volgende tabel bevat koppelingen en uitleg over TDE-opdrachten en -functies.
| Opdracht of functie | Purpose |
|---|---|
| DATABASEVERSLEUTELINGSSLEUTEL MAKEN | Hiermee maakt u een sleutel die wordt gebruikt voor het versleutelen van een database. |
| DATABASEVERSLEUTELINGSSLEUTEL WIJZIGEN | Hiermee wijzigt u de sleutel die wordt gebruikt voor het versleutelen van een database. |
| DATABASEVERSLEUTELINGSSLEUTEL VERWIJDEREN | Hiermee verwijdert u de sleutel die is gebruikt voor het versleutelen van een database. |
| ALTER DATABASE | Hierin wordt de optie ALTER DATABASE uitgelegd die wordt gebruikt om TDE in te schakelen. |
Catalogusweergaven en dynamische beheerweergaven
De volgende tabel bevat TDE-catalogusweergaven en dynamische beheerweergaven.
| Catalogusweergave of dynamische beheerweergave | Purpose |
|---|---|
| sys.databases | Catalogusweergave waarin databasegegevens worden weergegeven. |
| sys.certificates | Catalogusweergave met de certificaten in een database. |
| sys.dm_pdw_nodes_database_encryption_keys | Dynamische beheerweergave die informatie biedt voor elk knooppunt, over de versleutelingssleutels die worden gebruikt in een database en de 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 CONTROL SERVER machtiging vereist.
Overwegingen
Hoewel er een scan voor herversleuteling voor een databaseversleutelingsbewerking wordt uitgevoerd, worden onderhoudsbewerkingen voor de database uitgeschakeld.
U kunt de status van de databaseversleuteling vinden met behulp van de sys.dm_pdw_nodes_database_encryption_keys dynamische beheerweergave. Zie de sectie Catalogusweergaven en dynamische beheerweergaven eerder in dit artikel voor meer informatie.
Beperkingen
De volgende bewerkingen zijn niet toegestaan tijdens de CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEYof DROP DATABASE ENCRYPTION KEYALTER DATABASE...SET ENCRYPTIONinstructies.
De database verwijderen.
Met behulp van een
ALTER DATABASEopdracht.Een databaseback-up starten.
Een database herstellen starten.
De volgende bewerkingen of voorwaarden zullen de CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY of ALTER DATABASE...SET ENCRYPTION instructies verhinderen.
Er wordt een
ALTER DATABASEopdracht uitgevoerd.Elke back-up van gegevens wordt uitgevoerd.
Bij het maken van databasebestanden is directe initialisatie van bestanden niet beschikbaar wanneer TDE is ingeschakeld.
Gebieden die niet worden beveiligd door TDE
TDE beveiligt geen externe tabellen.
TDE beveiligt diagnostische sessies niet. Gebruikers moeten ervoor zorgen dat ze geen query's uitvoeren met gevoelige parameters terwijl diagnostische sessies worden gebruikt. Diagnostische sessies die gevoelige informatie onthullen, moeten worden verwijderd zodra ze niet meer nodig zijn.
Gegevens die door TDE worden beveiligd, worden ontsleuteld wanneer ze in het PDW-geheugen van SQL Server worden geplaatst. Geheugendumps worden gemaakt wanneer bepaalde problemen optreden op het apparaat. Dumpbestanden vertegenwoordigen de inhoud van het geheugen op het moment van het uiterlijk van het probleem en kunnen gevoelige gegevens bevatten in een niet-versleutelde vorm. De inhoud van geheugendumps moet worden gecontroleerd voordat ze met anderen worden gedeeld.
De hoofddatabase wordt niet beveiligd door TDE. Hoewel de hoofddatabase geen gebruikersgegevens bevat, bevat deze wel informatie zoals aanmeldingsnamen.
Transparante gegevensversleuteling en transactielogboeken
Het inschakelen van een database voor het gebruik van TDE heeft het effect dat het resterende deel van het virtuele transactielogboek wordt uitgeschakeld om het volgende virtuele transactielogboek af te dwingen. Dit garandeert dat er geen duidelijke tekst in de transactielogboeken wordt achtergelaten nadat de database is ingesteld voor versleuteling. U vindt de status van de versleuteling van logboekbestanden op elk PDW-knooppunt door de encryption_state kolom in de sys.dm_pdw_nodes_database_encryption_keys weergave weer te geven, zoals in dit voorbeeld:
WITH dek_encryption_state AS
(
SELECT ISNULL(db_map.database_id, dek.database_id) AS database_id, encryption_state
FROM sys.dm_pdw_nodes_database_encryption_keys AS dek
INNER JOIN sys.pdw_nodes_pdw_physical_databases AS node_db_map
ON dek.database_id = node_db_map.database_id AND dek.pdw_node_id = node_db_map.pdw_node_id
LEFT JOIN sys.pdw_database_mappings AS db_map
ON node_db_map .physical_name = db_map.physical_name
INNER JOIN sys.dm_pdw_nodes AS nodes
ON nodes.pdw_node_id = dek.pdw_node_id
WHERE dek.encryptor_thumbprint <> 0x
)
SELECT TOP 1 encryption_state
FROM dek_encryption_state
WHERE dek_encryption_state.database_id = DB_ID('AdventureWorksPDW2012 ')
ORDER BY (CASE encryption_state WHEN 3 THEN -1 ELSE encryption_state END) DESC;
Alle gegevens die naar het transactielogboek worden geschreven voordat een wijziging in de databaseversleutelingssleutel wordt versleuteld met behulp van de vorige databaseversleutelingssleutel.
PDW-activiteitenlogboeken
SQL Server PDW onderhoudt een set logboeken die zijn bedoeld voor probleemoplossing. (Opmerking: dit is niet het transactielogboek, het SQL Server-foutenlogboek of het Windows-gebeurtenislogboek.) Deze PDW-activiteitenlogboeken kunnen volledige instructies bevatten in duidelijke tekst, waarvan sommige gebruikersgegevens kunnen bevatten. Typische voorbeelden zijn INSERT - en UPDATE-instructies . Maskering van gebruikersgegevens kan expliciet worden ingeschakeld of uitgeschakeld met behulp van sp_pdw_log_user_data_masking. Als u versleuteling inschakelt op SQL Server PDW, wordt het maskeren van gebruikersgegevens in PDW-activiteitenlogboeken automatisch ingeschakeld om ze te beveiligen. sp_pdw_log_user_data_masking kan ook worden gebruikt om instructies te maskeren wanneer u geen TDE gebruikt, maar dat wordt niet aanbevolen, omdat het de mogelijkheid van het Microsoft-ondersteuningsteam aanzienlijk vermindert om problemen te analyseren.
Transparante gegevensversleuteling en de tempdb-systeemdatabase
De tempdb-systeemdatabase wordt versleuteld wanneer versleuteling is ingeschakeld met behulp van sp_pdw_database_encryption. Dit is vereist voordat een database TDE kan gebruiken. Dit kan een prestatie-effect hebben voor niet-versleutelde databases op hetzelfde exemplaar van SQL Server PDW.
Sleutelbeheer
De databaseversleutelingssleutel (DEK) wordt beveiligd door de certificaten die zijn opgeslagen in de hoofddatabase. Deze certificaten worden beveiligd door de databasehoofdsleutel (DMK) van de hoofddatabase. De DMK moet worden beveiligd door de servicehoofdsleutel (SMK) om te kunnen worden gebruikt voor TDE.
Het systeem heeft toegang tot de sleutels zonder menselijke tussenkomst (zoals het opgeven van een wachtwoord). Als het certificaat niet beschikbaar is, wordt er een fout weergegeven waarin wordt uitgelegd dat de DEK niet kan worden ontsleuteld totdat het juiste certificaat beschikbaar is.
Wanneer u een database van het ene apparaat naar het andere verplaatst, moet het certificaat dat wordt gebruikt om de DEK te beveiligen, eerst op de doelserver worden hersteld. Vervolgens kan de database zoals gebruikelijk worden hersteld. Zie de standaarddocumentatie van SQL Server voor meer informatie op Move a TDE Protected Database to Another SQL Server.
Certificaten die worden gebruikt om DEK's te versleutelen, moeten worden bewaard zolang er databaseback-ups zijn die deze gebruiken. Certificaatback-ups moeten de persoonlijke sleutel van het certificaat bevatten, omdat zonder de persoonlijke sleutel een certificaat niet kan worden gebruikt voor het herstellen van de database. Deze persoonlijke sleutelback-ups van certificaten worden opgeslagen in een afzonderlijk bestand, beveiligd met een wachtwoord dat moet worden opgegeven voor het terugzetten van certificaten.
De hoofddatabase herstellen
De hoofddatabase kan worden hersteld met behulp van DWConfig, als onderdeel van het herstel na noodgevallen.
Als het besturingsknooppunt niet is gewijzigd, is dat als de hoofddatabase wordt hersteld op hetzelfde en ongewijzigde apparaat waarvan de back-up van de hoofddatabase is gemaakt, de DMK en alle certificaten zonder extra actie kunnen worden gelezen.
Als de hoofddatabase op een ander apparaat wordt hersteld of als het besturingsknooppunt is gewijzigd sinds de back-up van de hoofddatabase, zijn er extra stappen vereist om de DMK opnieuw te genereren.
Open de DMK:
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';Voeg de versleuteling toe door SMK:
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;Start het apparaat opnieuw op.
Virtuele machines upgraden en vervangen
Als er een DMK bestaat op het apparaat waarop de VM upgraden of vervangen is uitgevoerd, moet het DMK-wachtwoord worden opgegeven als parameter.
Voorbeeld van de upgradeactie. Vervang <password> door uw DMK-wachtwoord.
setup.exe /Action=ProvisionUpgrade ... DMKPassword='<password>'
Voorbeeld van de actie om een virtuele machine te vervangen.
setup.exe /Action=ReplaceVM ... DMKPassword='<password>'
Als een gebruikersdatabase tijdens de upgrade is versleuteld en het DMK-wachtwoord niet is opgegeven, mislukt de upgradeactie. Als tijdens het vervangen het juiste wachtwoord niet is opgegeven wanneer er een DMK bestaat, slaat de bewerking de DMK-herstelstap over. Alle andere stappen worden voltooid aan het einde van de vervang-VM-actie, maar de actie rapporteert een fout aan het einde om aan te geven dat er aanvullende stappen vereist zijn. In de installatielogboeken (in \ProgramData\Microsoft\Microsoft SQL Server Parallel Data Warehouse\100\Logs\\Setup\\<time-stamp>\Detail-Setup) wordt de volgende waarschuwing aan het einde weergegeven.
*** WARNING \*\*\* DMK is detected in master database, but could not be recovered automatically! The DMK password was either not provided or is incorrect!
Voer deze instructie handmatig uit in PDW en start het apparaat daarna opnieuw op om DMK te herstellen:
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;
Gebruik de stappen in de alinea Hoofddatabase herstellen om de database te herstellen en start het apparaat opnieuw op.
Als de DMK al eerder bestond, maar niet is hersteld na de actie, wordt het volgende foutbericht weergegeven wanneer een query wordt uitgevoerd op een database.
Msg 110806;
A distributed query failed: Database '<db_name>' cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details.
Invloed op de prestaties
De invloed van de prestaties van TDE is afhankelijk van het type gegevens dat u hebt, hoe deze worden opgeslagen en het type workloadactiviteit op de SQL Server PDW. Wanneer deze worden beveiligd door TDE, is de I/O van het lezen en ontsleutelen van gegevens of het versleutelen en vervolgens schrijven van gegevens een CPU-intensieve activiteit en heeft dit meer invloed wanneer andere CPU-intensieve activiteiten tegelijkertijd plaatsvinden. Omdat TDE tempdb versleutelt, kan TDE van invloed zijn op de prestaties van databases die niet zijn versleuteld. Als u een nauwkeurig beeld wilt krijgen van de prestaties, moet u het hele systeem testen met uw gegevens en queryactiviteit.
Verwante inhoud
De volgende koppelingen bevatten algemene informatie over hoe SQL Server versleuteling beheert. Deze artikelen kunnen u helpen inzicht te krijgen in SQL Server-versleuteling, maar deze artikelen hebben geen informatie die specifiek is voor SQL Server PDW en ze bespreken functies die niet aanwezig zijn in SQL Server PDW.
Zie ook
ALTER DATABASE
HOOFDSLEUTEL MAKEN
DATABASEVERSLEUTELINGSSLEUTEL MAKEN
BACK-UPCERTIFICAAT
sp_pdw_database_encryption
sp_pdw_database_encryption_regenerate_system_keys
sp_pdw_log_user_data_masking
sys.certificates
sys.dm_pdw_nodes_database_encryption_keys