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.
Der SQL Server Connector für Microsoft Azure Key Vault ermöglicht die SQL Server-Verschlüsselung, den Azure Key Vault-Dienst als Extensible Key Management (EKM) Anbieter zum Schutz seiner Verschlüsselungsschlüssel zu nutzen.
In diesem Thema enthalten:
Schritt 1: Einrichten des Key Vault für die Verwendung durch SQL Server
Schritt 3: Konfigurieren von SQL Server für die Verwendung eines EKM-Anbieters für den Key Vault-
Verwendungen von EKM
Eine Organisation kann die SQL Server-Verschlüsselung verwenden, um vertrauliche Daten zu schützen. DIE SQL Server-Verschlüsselung umfasst transparenten Datenverschlüsselung (Transparent Data Encryption, TDE), Verschlüsselung auf Spaltenebene (CLE) und Sicherungsverschlüsselung. In all diesen Fällen werden die Daten mit einem symmetrischen Datenverschlüsselungsschlüssel verschlüsselt. Der symmetrische Datenverschlüsselungsschlüssel wird weiter geschützt, indem er mit einer Hierarchie von Schlüsseln verschlüsselt wird, die in SQL Server gespeichert sind. Alternativ ermöglicht die EKM-Anbieterarchitektur SQL Server, die Datenverschlüsselungsschlüssel mithilfe eines asymmetrischen Schlüssels zu schützen, der außerhalb von SQL Server in einem externen Kryptografieanbieter gespeichert ist. Durch die Verwendung der EKM-Anbieterarchitektur wird eine zusätzliche Sicherheitsebene hinzugefügt, und Organisationen können die Verwaltung von Schlüsseln und Daten trennen.
Der SQL Server Connector für Azure Key Vault ermöglicht SQL Server die Nutzung des skalierbaren, leistungsstarken und hoch verfügbaren Schlüsseltresordiensts als EKM-Anbieter zum Schutz von Verschlüsselungsschlüsseln. Der Schlüsseltresordienst kann mit SQL Server-Installationen auf virtuellen Microsoft Azure-Computern und lokalen Servern verwendet werden. Der Key Vault-Dienst bietet auch die Möglichkeit, streng kontrollierte und überwachte Hardwaresicherheitsmodule (Hardware Security Modules, HSMs) für eine höhere Schutzebene für asymmetrische Verschlüsselungsschlüssel zu verwenden. Weitere Informationen zu Azure Key Vault finden Sie unter Azure Key Vault.
Die folgende Abbildung fasst den Prozessfluss von EKM mithilfe des Key Vault zusammen. Die Prozessschrittnummern im Bild sollten nicht mit den Setupschrittnummern übereinstimmen, die dem Bild folgen.
Schritt 1: Einrichten des Key Vault für die Verwendung durch SQL Server
Führen Sie die folgenden Schritte aus, um einen Schlüsseltresor für die Verwendung mit dem SQL Server-Datenbankmodul zum Schutz von Verschlüsselungsschlüsseln einzurichten. Ein Tresor könnte bereits für die Organisation in Gebrauch sein. Wenn kein Tresor vorhanden ist, kann der Azure-Administrator in Ihrer Organisation, der zum Verwalten von Verschlüsselungsschlüsseln bestimmt ist, einen Tresor erstellen, einen asymmetrischen Schlüssel im Tresor generieren und dann SQL Server für die Verwendung des Schlüssels autorisieren. Um sich mit dem Key Vault-Dienst vertraut zu machen, lesen Sie Erste Schritte mit Azure Key Vaultsowie die PowerShell Azure Key Vault Cmdlets Referenz.
Wichtig
Wenn Sie über mehrere Azure-Abonnements verfügen, müssen Sie das Abonnement verwenden, das SQL Server enthält.
Erstellen eines Tresors: Erstellen Sie einen Tresor mithilfe der Anweisungen im Abschnitt Erstellen eines Schlüsseltresors von Erste Schritte mit Azure Key Vault. Notieren Sie den Namen des Tresors. In diesem Thema wird ContosoKeyVault als Name des Schlüsseltresors verwendet.
Generieren eines asymmetrischen Schlüssels im Tresor: Der asymmetrische Schlüssel im Schlüsseltresor wird verwendet, um SQL Server-Verschlüsselungsschlüssel zu schützen. Nur der öffentliche Teil des asymmetrischen Schlüssels verlässt den Tresor, der private Teil wird nie vom Tresor exportiert. Alle kryptografischen Vorgänge, die den asymmetrischen Schlüssel verwenden, werden an den Azure Key Vault delegiert und durch die Sicherheit des Schlüsseltresors geschützt.
Es gibt mehrere Möglichkeiten, wie Sie einen asymmetrischen Schlüssel generieren und im Tresor speichern können. Sie können einen Schlüssel extern generieren und den Schlüssel als PFX-Datei in den Tresor importieren. Oder erstellen Sie den Schlüssel direkt im Tresor mithilfe der Schlüsseltresor-APIs.
Der SQL Server Connector erfordert, dass die asymmetrischen Schlüssel 2048-Bit-RSA sein, und der Schlüsselname kann nur die Zeichen "a-z", "A-Z", "0-9" und "-" verwenden. In diesem Dokument wird der Name des asymmetrischen Schlüssels als ContosoMasterKeybezeichnet. Ersetzen Sie dies durch den eindeutigen Namen, den Sie für den Schlüssel verwenden.
Wichtig
Das Importieren des asymmetrischen Schlüssels wird für Produktionsszenarien dringend empfohlen, da der Administrator den Schlüssel in einem Schlüssel-Escrow-System hinterlegen kann. Wenn der asymmetrische Schlüssel im Tresor erstellt wird, kann er nicht hinterlegt werden, da der private Schlüssel den Tresor niemals verlassen kann. Schlüssel, die zum Schutz kritischer Daten verwendet werden, sollten hinterlegt werden. Der Verlust eines asymmetrischen Schlüssels führt zu dauerhaft nicht behebbaren Daten.
Wichtig
Der Schlüsseltresor unterstützt mehrere Versionen des gleichnamigen Schlüssels. Schlüssel, die vom SQL Server Connector verwendet werden sollen, sollten nicht versioniert oder rotiert werden. Wenn der Administrator den für die SQL Server-Verschlüsselung verwendeten Schlüssel rollieren möchte, sollte ein neuer Schlüssel mit einem anderen Namen im Tresor erstellt und zum Verschlüsseln der DEK verwendet werden.
Weitere Informationen zum Importieren eines Schlüssels in den Schlüsseltresor oder zum Erstellen eines Schlüssels im Schlüsseltresor (nicht für eine Produktionsumgebung empfohlen) finden Sie im Abschnitt Hinzufügen eines Schlüssels oder eines Geheimschlüssels zum Key Vault Abschnitt in Erste Schritte mit Azure Key Vault.
Azure Active Directory-Dienstprinzipale für die Verwendung für SQL Server abrufen: Wenn sich die Organisation für einen Microsoft-Clouddienst anmeldet, wird ein Azure Active Directory abgerufen. Erstellen Sie Serviceprinzipale in Azure Active Directory für SQL Server, um sich bei Azure Active Directory zu authentifizieren, während Sie auf den Schlüsseltresor zugreifen.
Ein Service Principal wird von einem SQL Server-Administrator benötigt, um auf den Vault zuzugreifen, während SQL Server für die Verwendung der Verschlüsselung konfiguriert wird.
Ein weiteres -Dienstprinzipal wird vom SQL Server-Datenbankmodul benötigt, um auf den Tresor zuzugreifen und die für die SQL Server-Verschlüsselung verwendeten Schlüssel zu entschlüsseln.
Weitere Informationen zum Registrieren einer Anwendung und Generieren eines Dienstprinzipals finden Sie im Abschnitt Registrieren einer Anwendung mit Azure Active Directory in Erste Schritte mit Azure Key Vault. Der Registrierungsprozess gibt eine Anwendungs-ID (auch als CLIENT-IDbezeichnet) und einen Authentifizierungsschlüssel (auch bekannt als Geheime) für jedes Azure Active Directory Dienstprinzipalzurück. Bei Verwendung in der
CREATE CREDENTIAL-Anweisung muss der Bindestrich aus der CLIENT-IDentfernt werden. Notieren Sie diese für die Verwendung in den folgenden Skripts:Dienstprinzipal- für einen sysadmin Anmeldung: CLIENTID_sysadmin_login und SECRET_sysadmin_login
Dienstprinzipal- für das SQL Server-Datenbankmodul: CLIENTID_DBEngine und SECRET_DBEngine.
Erteilen der Berechtigung für den Zugriff auf den Schlüsseltresor: Sowohl die CLIENTID_sysadmin_login als auch CLIENTID_DBEngineService Prinzipale erfordern, dass die abrufen, Liste, wrapKey-und die Berechtigungen "unwrapKey" im Schlüsseltresor entwrapKey. Wenn Sie Schlüssel über SQL Server erstellen möchten, müssen Sie auch die erstellen Berechtigung im Schlüsseltresor erteilen.
Wichtig
Benutzer müssen für den Schlüsseltresor mindestens die Vorgänge wrapKey- und unwrapKey- haben.
Weitere Informationen zum Erteilen von Berechtigungen für den Tresor finden Sie im Abschnitt Autorisieren der Anwendung zur Verwendung des Schlüssels oder Geheimnisses in Erste Schritte mit Azure Key Vault.
Links zur Dokumentation zu Azure Key Vault
PowerShell Azure Key Vault Cmdlets Referenz
Schritt 2: Installieren des SQL Server-Connectors
Der SQL Server Connector wird vom Administrator des SQL Server-Computers heruntergeladen und installiert. Der SQL Server Connector steht als Download aus dem Microsoft Download Centerzur Verfügung. Suchen Sie nach SQL Server Connector für Microsoft Azure Key Vault, lesen Sie die Details, Systemanforderungen und Installationsanweisungen, und wählen Sie aus, den Connector herunterzuladen und die Installation mit Ausführenzu starten. Überprüfen Sie die Lizenz, und akzeptieren Sie die Lizenz, und fahren Sie fort.
Standardmäßig wird der Connector unter C:\Programme\SQL Server Connector für Microsoft Azure Key Vaultinstalliert. Dieser Speicherort kann während des Setups geändert werden. (Wenn geändert, passen Sie die folgenden Skripts an.)
Nach Abschluss der Installation werden die folgenden Elemente auf dem Computer installiert.
Microsoft.AzureKeyVaultService.EKM.dll: Dies ist die kryptografische EKM-Anbieter-DLL, die mit SQL Server mithilfe der CREATE CRYPTOGRAPHIC PROVIDER-Anweisung registriert werden muss.
Azure Key Vault SQL Server Connector: Dies ist ein Windows-Dienst, der es dem kryptografischen EKM-Anbieter ermöglicht, mit dem Schlüsseltresor zu kommunizieren.
Mit der INSTALLATION von SQL Server Connector können Sie optional Beispielskripts für die SQL Server-Verschlüsselung herunterladen.
Schritt 3: Konfigurieren von SQL Server für die Verwendung eines EKM-Anbieters für den Key Vault
Erlaubnisse
Um diesen gesamten Prozess abzuschließen, müssen Sie über die CONTROL SERVER-Berechtigung verfügen oder Mitglied der sysadmin festgelegten Serverrolle sein. Für bestimmte Aktionen sind die folgenden Berechtigungen erforderlich:
Zum Erstellen eines kryptografischen Anbieters ist die Berechtigung "CONTROL SERVER" oder die Mitgliedschaft in der festen Serverrolle sysadmin erforderlich.
Um eine Konfigurationsoption zu ändern und die RECONFIGURE-Anweisung auszuführen, müssen Sie die Berechtigung auf Serverebene ALTER SETTINGS erhalten. Die Berechtigung ALTER SETTINGS wird implizit von den festgelegten Serverrollen sysadmin und serveradmin gehalten.
Zum Erstellen von Anmeldeinformationen ist die Berechtigung ALTER ANY CREDENTIAL erforderlich.
Zum Hinzufügen eines Berechtigungsnachweises zu einem Login ist die ALTER ANY LOGIN-Berechtigung erforderlich.
Zum Erstellen eines asymmetrischen Schlüssels ist die Berechtigung CREATE ASYMMETRIC KEY erforderlich.
So konfigurieren Sie SQL Server für die Verwendung eines kryptografischen Anbieters
Konfigurieren Sie das Datenbankmodul für die Verwendung von EKM, und registrieren (erstellen) Sie den kryptografischen Anbieter mit SQL Server.
-- Enable advanced options. USE master; GO sp_configure 'show advanced options', 1 ; GO RECONFIGURE ; GO -- Enable EKM provider sp_configure 'EKM provider enabled', 1 ; GO RECONFIGURE ; GO -- Create a cryptographic provider, using the SQL Server Connector -- which is an EKM provider for the Azure Key Vault. This example uses -- the name AzureKeyVault_EKM_Prov. CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll'; GORichten Sie eine SQL Server-Anmeldeinformation für eine SQL Server-Administratoranmeldung ein, um den Schlüsseltresor zu verwenden, damit SQL Server-Verschlüsselungsszenarien eingerichtet und verwaltet werden können.
Wichtig
Das argument IDENTITY von
CREATE CREDENTIALerfordert den Schlüsseltresornamen. Das SECRET--ArgumentCREATE CREDENTIALerfordert, dass die <Client-ID> (ohne Bindestriche) und das <Secret> zusammen ohne Leerzeichen übergeben werden.Im folgenden Beispiel wird die Client-ID (
00001111-aaaa-2222-bbbb-3333cccc4444) von den Bindestrichen entfernt und als Zeichenfolge00001111AAAA2222BBBB3333CCCC4444eingegeben, und das Geheimnis wird durch die Zeichenfolge SECRET_sysadmin_logindargestellt.USE master; CREATE CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'ContosoKeyVault', SECRET = '00001111AAAA2222BBBB3333CCCC4444SECRET_sysadmin_login' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ; -- Add the credential to the SQL Server administrators domain login ALTER LOGIN [<domain>/<login>] ADD CREDENTIAL sysadmin_ekm_cred;Ein Beispiel für die Verwendung von Variablen für die
CREATE CREDENTIALArgumente und das programmgesteuerte Entfernen der Bindestriche aus der Client-ID finden Sie unter CREATE CREDENTIAL (Transact-SQL).Wenn Sie einen asymmetrischen Schlüssel importiert haben, wie weiter oben in Schritt 1, Abschnitt 3 beschrieben, öffnen Sie den Schlüssel, indem Sie den Schlüsselnamen im folgenden Beispiel angeben.
CREATE ASYMMETRIC KEY CONTOSO_KEY FROM PROVIDER [AzureKeyVault_EKM_Prov] WITH PROVIDER_KEY_NAME = 'ContosoMasterKey', CREATION_DISPOSITION = OPEN_EXISTING;Für die Produktion nicht empfohlen (da der Schlüssel nicht exportiert werden kann), ist es möglich, einen asymmetrischen Schlüssel direkt im Tresor von SQL Server zu erstellen. Wenn Sie zuvor keinen Schlüssel importiert haben, erstellen Sie einen asymmetrischen Schlüssel im Schlüsseltresor zum Testen mithilfe des folgenden Skripts. Führen Sie das Skript mithilfe einer anmeldung aus, die mit den sysadmin_ekm_cred Anmeldeinformationen bereitgestellt wurde.
CREATE ASYMMETRIC KEY CONTOSO_KEY FROM PROVIDER [AzureKeyVault_EKM_Prov] WITH ALGORITHM = RSA_2048, PROVIDER_KEY_NAME = 'ContosoMasterKey';
Trinkgeld
Benutzer, die die Fehlermeldung Der öffentliche Schlüssel kann nicht vom Anbieter exportiert werden. Anbieterfehlercode: 2053. erhalten, sollten ihre Berechtigungen im Schlüsseltresor überprüfen, insbesondere für get, list, wrapKeyund unwrapKey.
Weitere Informationen finden Sie in den folgenden Themen:
Beispiele
Beispiel A: Transparente Datenverschlüsselung mithilfe eines asymmetrischen Schlüssels aus dem Schlüsseltresor
Erstellen Sie nach Abschluss der vorstehenden Schritte eine Anmeldeinformation und ein Login, erstellen Sie einen Datenbankverschlüsselungsschlüssel, der durch den asymmetrischen Schlüssel im Schlüsseltresor geschützt ist. Verwenden Sie den Datenbankverschlüsselungsschlüssel, um eine Datenbank mit TDE zu verschlüsseln.
Zum Verschlüsseln einer Datenbank ist DIE CONTROL-Berechtigung für die Datenbank erforderlich.
So aktivieren Sie TDE mit EKM und dem Key Vault
Erstellen Sie eine SQL Server-Anmeldeinformation für das Datenbankmodul, die beim Zugriff auf den Schlüsseltresor EKM während des Datenbankladevorgangs verwendet werden soll.
Wichtig
Das argument IDENTITY von
CREATE CREDENTIALerfordert den Schlüsseltresornamen. Das SECRET--ArgumentCREATE CREDENTIALerfordert, dass die <Client-ID> (ohne Bindestriche) und das <Secret> zusammen ohne Leerzeichen übergeben werden.Im folgenden Beispiel wird die Client-ID (
00001111-aaaa-2222-bbbb-3333cccc4444) von den Bindestrichen entfernt und als Zeichenfolge00001111AAAA2222BBBB3333CCCC4444eingegeben, und das Secret wird durch die Zeichenfolge SECRET_DBEnginedargestellt.USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoKeyVault', SECRET = '00001111AAAA2222BBBB3333CCCC4444SECRET_DBEngine' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;Erstellen Sie eine SQL Server-Anmeldung, die vom Datenbankmodul für TDE verwendet werden soll, und fügen Sie die Anmeldeinformationen hinzu. In diesem Beispiel wird der im Schlüsseltresor gespeicherte CONTOSO_KEY asymmetrischer Schlüssel verwendet, der für die Masterdatenbank importiert oder zuvor erstellt wurde, wie in Schritt 3, Abschnitt 3 oben beschrieben.
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 Datenbankverschlüsselungsschlüssel (DEK), der für TDE verwendet wird. Die DEK kann mit jedem unterstützten SQL Server-Algorithmus oder einer Schlüssellänge erstellt werden. Die DEK wird durch den asymmetrischen Schlüssel im Schlüsseltresor geschützt.
In diesem Beispiel wird der im Schlüsseltresor gespeicherte CONTOSO_KEY asymmetrischer Schlüssel verwendet, der zuvor importiert oder erstellt wurde, wie in Schritt 3, Abschnitt 3 oben beschrieben.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON ; GOWeitere Informationen finden Sie in den folgenden Themen:
Beispiel B: Verschlüsseln von Sicherungen mithilfe eines asymmetrischen Schlüssels aus dem Schlüsseltresor
Verschlüsselte Sicherungen werden ab SQL Server 2014 unterstützt. Im folgenden Beispiel wird eine Sicherung erstellt und wiederhergestellt, die einen durch den asymmetrischen Schlüssel im Schlüsseltresor geschützten Datenverschlüsselungsschlüssel verschlüsselt hat.
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]);
GO
Beispielcode für die Wiederherstellung.
RESTORE DATABASE [DATABASE_TO_BACKUP]
FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE;
GO
Weitere Informationen zu Sicherungsoptionen finden Sie unter BACKUP (Transact-SQL).
Beispiel C: Verschlüsselung auf Spaltenebene mithilfe eines asymmetrischen Schlüssels aus dem Schlüsseltresor
Im folgenden Beispiel wird ein symmetrischer Schlüssel erstellt, der durch den asymmetrischen Schlüssel im Schlüsseltresor geschützt ist. Anschließend wird der symmetrische Schlüssel zum Verschlüsseln von Daten in der Datenbank verwendet.
In diesem Beispiel wird der im Schlüsseltresor gespeicherte CONTOSO_KEY asymmetrischer Schlüssel verwendet, der zuvor importiert oder erstellt wurde, wie in Schritt 3, Abschnitt 3 oben beschrieben. Um diesen asymmetrischen Schlüssel in der ContosoDatabase-Datenbank zu verwenden, müssen Sie die CREATE ASYMMETRIC KEY-Anweisung erneut ausführen, um die ContosoDatabase Datenbank mit einem Verweis auf den Schlüssel bereitzustellen.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoMasterKey',
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;
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;
--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;
Siehe auch
ERSTELLEN VON KRYPTOGRAFISCHEM ANBIETER (Transact-SQL)ERSTELLEN VON ANMELDEINFORMATIONEN (Transact-SQL)ERSTELLEN VON ASYMMETRISCHER SCHLÜSSEL (Transact-SQL)ERSTELLEN VON SYMMETRISCHER SCHLÜSSEL (Transact-SQL)Extensible Key Management (EKM) aktivierenTDE mit EKM aktivierenSicherungsverschlüsselungErstellen einer verschlüsselten Sicherung