Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Gängige SQL Server-Verschlüsselungsaktivitäten, die einen asymmetrischen Schlüssel verwenden, der durch Azure Key Vault geschützt ist, fallen in die folgenden drei Bereiche:
- Transparente Datenverschlüsselung (TDE) unter Verwendung eines asymmetrischen Schlüssels aus Azure Key Vault.
- Verschlüsselung von Backups mit einem asymmetrischen Schlüssel aus dem Schlüsseltresor.
- Spaltenebenen-Verschlüsselung durch Verwendung eines asymmetrischen Schlüssels aus dem Schlüsseltresor.
Schließen Sie die Schritte 1 bis 4 der Einrichtung von Transparent Data Encryption mit Azure Key Vault für SQL Server ab, bevor Sie die Schritte in diesem Artikel befolgen.
Hinweis
Die Versionen 1.0.0.440 und früher wurden ersetzt und werden in Produktionsumgebungen nicht mehr unterstützt. Aktualisieren Sie auf Version 1.0.1.0 oder höher. Laden Sie die aktuelle Version aus dem Microsoft Download Center herunter und folgen Sie den Anweisungen im Abschnitt „Upgrade des SQL Server Connector“ in SQL Server Connector – Wartung und Problembehandlung.
Hinweis
Microsoft Entra ID war bisher unter Azure Active Directory (Azure AD) bekannt.
Transparente Datenverschlüsselung durch Verwendung eines asymmetrischen Schlüssels aus Azure Key Vault
Nachdem Sie die Schritte 1 bis 4 von Set up Transparent Data Encryption with Azure Key Vault for SQL Server abgeschlossen haben, verwenden Sie den Azure Key Vault-Schlüssel, um den Datenbankverschlüsselungsschlüssel für TDE zu verschlüsseln. Weitere Informationen zum Rotieren von Schlüsseln mittels PowerShell finden Sie unter Den Transparent Data Encryption (TDE)-Schutz mittels PowerShell rotieren.
Wichtig
Löschen Sie keine vorherigen Versionen des Schlüssels nach einem Rollover. Wenn Schlüssel rotiert werden, bleiben einige Daten weiterhin mit den vorherigen Schlüsseln verschlüsselt, wie ältere Datenbank-Backups, gesicherte Logdateien und Transaktionsprotokolle.
Du musst eine Anmeldeinformation und einen Login erstellen und einen Datenbankverschlüsselungsschlüssel erstellen, der die Daten und Protokolle in der Datenbank verschlüsselt. Die Verschlüsselung einer Datenbank erfordert die CONTROL-Berechtigung für die Datenbank. Die folgende Grafik zeigt die Hierarchie des Verschlüsselungsschlüssels, wenn Sie Azure Key Vault verwenden.
Erstellen von SQL Server-Anmeldeinformationen für die Datenbank-Engine für die Nutzung von TDE
Die Datenbank-Engine verwendet die Microsoft Entra-Anwendungszugangsdaten, um während des Datenlades auf den Key Vault zuzugreifen. Um die von Ihnen erteilten Schlüsseltresor-Berechtigungen einzuschränken, erstellen Sie eine weitere Client-ID und ein Secret, wie in Schritt 1: Authentifizierungsmodell einrichten beschrieben, für die Datenbank-Engine.
Ändern Sie das Transact-SQL-Skript unten in der folgenden Weise:
Bearbeiten Sie das
IDENTITY-Argument (ContosoDevKeyVault), damit es auf Ihren Azure Key Vault verweist.- Wenn Sie eine globale Azure-Cloud verwenden, ersetzen Sie das
IDENTITY-Argument durch den Namen Ihres Azure Key Vault aus Schritt 2: Erstellen eines Schlüsseltresors. - Wenn Sie eine private Azure-Cloud verwenden, zum Beispiel Azure Government, Azure, betrieben von 21Vianet, oder Azure Deutschland, ersetzen Sie das
IDENTITYArgument durch die Vault-URI, die in "Create a key vault and key by using PowerShell" zurückgegeben wird. Schließen Siehttps://nicht in der Key Vault-URI ein.
- Wenn Sie eine globale Azure-Cloud verwenden, ersetzen Sie das
Ersetzen Sie den ersten Teil des Arguments
SECRETdurch die Client-ID der Microsoft Entra-Anwendung aus Schritt 1: Einrichtung des Authentifizierungsmodells. In diesem Beispiel lautet die Client-IDEF5C8E094D2A4A769998D93440D8115D.Wichtig
Bindestriche müssen aus der Client-IDentfernt werden.
Schließen Sie den zweiten Teil des Arguments
SECRETmit dem Client Secret aus Schritt 1 ab. In diesem Beispiel ist das Client SecretReplaceWithAADClientSecret.Die letzte Zeichenkette des Arguments
SECRETist eine lange Abfolge von Buchstaben und Zahlen ohne Bindestriche.
USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplaceWithAADClientSecret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;Erstellen einer SQL Server-Anmeldung für die Datenbank-Engine für TDE
Erstellen Sie eine SQL Server-Anmeldung und fügen Sie ihr die Anmeldeinformationen aus Schritt 1 hinzu. In diesem Transact-SQL-Beispiel wird der gleiche Schlüssel verwendet, der zuvor importiert wurde.
USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it loads a database -- encrypted by TDE. CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the TDE Login to add the credential for use by the -- Database Engine to access the key vault ALTER LOGIN TDE_Login ADD CREDENTIAL Azure_EKM_TDE_cred ; GOErstellen Sie den Datenbank-Verschlüsselungsschlüssel (DEK)
Das DEK verschlüsselt Ihre Daten und Logdateien in der Datenbankinstanz und wird wiederum durch den asymmetrischen Schlüssel von Azure Key Vault verschlüsselt. Du kannst das DEK erstellen, indem du jeden Algorithmus oder jede Schlüssellänge verwendest, die SQL Server unterstützt.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GOTDE aktivieren
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GOÜberprüfen Sie mit Management Studio, ob TDE aktiviert ist, indem Sie sich mit Ihrer Datenbank über den Objekt-Explorer verbinden. Klicken Sie mit der rechten Maustaste auf Ihre Datenbank, zeigen Sie auf Aufgaben und wählen Sie dann Datenbankverschlüsselung verwalten.
Prüfen Sie im Dialogfeld Datenbankverschlüsselung verwalten , nach, ob TDE aktiviert ist und welcher Schlüssel für die Verschlüsselung des DEKs verwendet wird.
Alternativ können Sie das folgende Transact-SQL-Skript ausführen. Der Verschlüsselungsstatus 3 gibt eine verschlüsselte Datenbank an.
USE MASTER SELECT * FROM sys.asymmetric_keys -- Check which databases are encrypted using TDE SELECT d.name, dek.encryption_state FROM sys.dm_database_encryption_keys AS dek JOIN sys.databases AS d ON dek.database_id = d.database_id;Hinweis
Die
tempdb-Datenbank wird automatisch verschlüsselt, wenn für eine beliebige Datenbank TDE aktiviert wird.
Verschlüsselung von Backups mit einem asymmetrischen Schlüssel aus dem Schlüsseltresor
Verschlüsselte Sicherungen werden ab SQL Server 2014 (12.x) unterstützt. Das folgende Beispiel erstellt und stellt ein mit einem Datenverschlüsselungsschlüssel verschlüsseltes Backup wieder her, das durch den asymmetrischen Schlüssel im Schlüsseltresor geschützt wird.
Die Datenbank-Engine verwendet die Microsoft Entra-Anwendungszugangsdaten, um während des Datenlades auf den Key Vault zuzugreifen. Um die von Ihnen erteilten Schlüsseltresor-Berechtigungen einzuschränken, erstellen Sie eine weitere Client-ID und ein Secret, wie in Schritt 1 beschrieben: Richten Sie das Authentifizierungsmodell für die Datenbank-Engine ein.
Erstelle SQL Server-Anmeldeinformationen, die die Datenbank-Engine für die Sicherungsverschlüsselung verwendet
Ändern Sie das Transact-SQL-Skript unten in der folgenden Weise:
Bearbeiten Sie das
IDENTITY-Argument (ContosoDevKeyVault), damit es auf Ihren Azure Key Vault verweist.- Wenn Sie eine globale Azure-Cloud verwenden, ersetzen Sie das
IDENTITY-Argument durch den Namen Ihres Azure Key Vault aus Schritt 2: Erstellen eines Schlüsseltresors. - Wenn Sie eine private Azure-Cloud verwenden, zum Beispiel Azure Government, Microsoft Azure betrieben von 21Vianet oder Azure Deutschland, ersetzen Sie das
IDENTITY-Argument durch die Vault-URI, die unter Erstellen eines Schlüsseltresors und eines Schlüssels mithilfe von PowerShell zurückgegeben wird. Schließen Siehttps://nicht in der Key Vault-URI ein.
- Wenn Sie eine globale Azure-Cloud verwenden, ersetzen Sie das
Ersetzen Sie den ersten Teil des Arguments
SECRETdurch die Client-ID der Microsoft Entra-Anwendung aus Schritt 1: Einrichtung des Authentifizierungsmodells. In diesem Beispiel lautet die Client-IDEF5C8E094D2A4A769998D93440D8115D.Wichtig
Bindestriche müssen aus der Client-IDentfernt werden.
Schließen Sie den zweiten Teil des Arguments
SECRETmit dem Client Secret aus Schritt 1 ab. In diesem Beispiel ist das Client SecretReplace-With-AAD-Client-Secret. Die letzte Zeichenkette des ArgumentsSECRETist eine lange Abfolge von Buchstaben und Zahlen ohne Bindestriche.USE master; CREATE CREDENTIAL Azure_EKM_Backup_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
Erstellen Sie einen SQL Server-Login für die Datenbank-Engine zur Backup-Verschlüsselung
Erstellen Sie eine SQL Server-Anmeldung, die vom Datenbankmodul für Verschlüsselungssicherungen verwendet werden soll, und fügen Sie die Anmeldeinformationen aus Schritt 1 hinzu. In diesem Transact-SQL-Beispiel wird der gleiche Schlüssel verwendet, der zuvor importiert wurde.
Wichtig
Du kannst denselben asymmetrischen Schlüssel nicht für die Backup-Verschlüsselung verwenden, wenn du diesen Schlüssel bereits für TDE (das vorherige Beispiel) oder die Verschlüsselung auf Spaltenebene (im folgenden Beispiel) verwendet hast.
Dieses Beispiel verwendet den
CONTOSO_KEY_BACKUPasymmetrischen Schlüssel, der im Schlüsseltresor gespeichert ist und den Sie importieren oder früher für diemasterDatenbank anlegen können, wie in Schritt 2 beschrieben: Erstellen eines Schlüsseltresors.USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it is encrypting the backup. CREATE LOGIN Backup_Login FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP; GO -- Alter the Encrypted Backup Login to add the credential for use by -- the Database Engine to access the key vault ALTER LOGIN Backup_Login ADD CREDENTIAL Azure_EKM_Backup_cred ; GOSichern Sie die Datenbank
Sichern Sie die Datenbank und spezifizieren Sie die Verschlüsselung mit dem asymmetrischen Schlüssel, der im Schlüsseltresor gespeichert ist.
Im folgenden Beispiel ist zu beachten, dass, wenn die Datenbank bereits mit TDE verschlüsselt war und der asymmetrische Schlüssel
CONTOSO_KEY_BACKUPsich vom TDE-asymmetrischen Schlüssel unterscheidet, das Backup sowohl durch den TDE-asymmetrischen Schlüssel als auch durchCONTOSO_KEY_BACKUPverschlüsselt wird. Die Zielinstanz SQL Server benötigt beide Schlüssel, um das Backup zu entschlüsseln.USE master; BACKUP DATABASE [DATABASE_TO_BACKUP] TO DISK = N'[PATH TO BACKUP FILE]' WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, ENCRYPTION(ALGORITHM = AES_256, SERVER ASYMMETRIC KEY = [CONTOSO_KEY_BACKUP]); GODatenbank wiederherstellen
Um ein Datenbank-Backup wiederherzustellen, das mit TDE verschlüsselt ist, muss die Ziel-SQL Server-Instanz zunächst eine Kopie des asymmetrischen Schlüsseltresorschlüssels besitzen, der für die Verschlüsselung verwendet wird. Um dieses Exemplar bereitzustellen:
Wenn der ursprüngliche asymmetrische Schlüssel, der für TDE verwendet wurde, nicht mehr im Key Vault ist, stellen Sie die Sicherung des Key-Vault-Schlüssels wieder her oder importieren Sie den Schlüssel erneut aus einem lokalen HSM. Damit der Daumenabdruck des Schlüssels mit dem im Datenbank-Backup erfassten Abdruck übereinstimmt, muss der Schlüssel denselben Schlüsseltresor-Schlüsselnamen verwenden, den er ursprünglich hatte.
Wenden Sie die Schritte 1 und 2 auf der Zielinstanz SQL Server an.
Nachdem die Ziel-SQL Server-Instanz Zugriff auf die asymmetrischen Schlüssel zur Verschlüsselung des Backups hat, stellen Sie die Datenbank auf dem Server wieder her.
Codebeispiel für die Wiederherstellung:
RESTORE DATABASE [DATABASE_TO_BACKUP] FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE; GOWeitere Informationen zu Sicherungsoptionen finden Sie unter BACKUP (Transact-SQL).
Spaltenebenen-Verschlüsselung durch Verwendung eines asymmetrischen Schlüssels aus dem Schlüsseltresor
Das folgende Beispiel erstellt einen symmetrischen Schlüssel, der durch den asymmetrischen Schlüssel im Schlüsseltresor geschützt wird. Der symmetrische Schlüssel verschlüsselt dann die Daten in der Datenbank.
Wichtig
Du kannst denselben asymmetrischen Schlüssel nicht für die Spaltenverschlüsselung verwenden, wenn du diesen Schlüssel bereits für die Backup-Verschlüsselung verwendet hast.
Dieses Beispiel verwendet den CONTOSO_KEY_COLUMNS asymmetrischen Schlüssel, der im Schlüsseltresor gespeichert ist und den Sie importieren oder anlegen können, wie in Schritt 2 beschrieben: Erstellen eines Schlüsseltresors. Um diesen asymmetrischen Schlüssel in der ContosoDatabase Datenbank zu verwenden, führt man die CREATE ASYMMETRIC KEY Anweisung erneut aus, um der ContosoDatabase Datenbank eine Referenz auf den Schlüssel zu geben.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',
CREATION_DISPOSITION = OPEN_EXISTING;
-- Create the data encryption key.
-- The data encryption key can be created using any SQL Server
-- supported algorithm or key length.
-- The DEK will be protected by the asymmetric key in the key vault
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;
DECLARE @DATA VARBINARY(MAX);
--Open the symmetric key for use in this session
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;
--Encrypt syntax
SELECT @DATA = ENCRYPTBYKEY
(
KEY_GUID('DATA_ENCRYPTION_KEY'),
CONVERT(VARBINARY,'Plain text data to encrypt')
);
-- Decrypt syntax
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));
--Close the symmetric key
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;