Konfigurieren der Azure Key Vault-Integration für SQL Server auf Azure-VMs (Resource Manager)

Gilt für:SQL Server auf Azure-VM

Es gibt mehrere SQL Server-Verschlüsselungsfeatures, z.B. Transparent Data Encryption (TDE), Column Level Encryption (CLE) und Sicherungsverschlüsselung. Bei diesen Arten der Verschlüsselung müssen Sie die kryptografischen Schlüssel verwalten und speichern, die Sie für die Verschlüsselung verwenden. Der Azure Key Vault-Dienst ist darauf ausgelegt, die Sicherheit und Verwaltung dieser Schlüssel an einem sicheren und hoch verfügbaren Speicherort zu verbessern. Mit dem SQL Server-Connector kann SQL Server diese Schlüssel aus Azure Key Vault verwenden.

Wenn Sie SQL Server lokal ausführen, können Sie Schritte zum Zugriff auf Azure Key Vault von Ihrer lokalen SQL Server-Instanz ausführen. Für SQL Server auf Azure-VMs können Sie aber Zeit sparen, indem Sie das Feature für die Azure Key Vault-Integration nutzen.

Hinweis

Die Azure Key Vault-Integration ist nur für die Enterprise-, Developer- und Evaluation-Edition von SQL Server verfügbar. Ab SQL Server 2019 wird auch die Standard-Edition unterstützt.

Wenn diese Funktion aktiviert ist, wird der SQL Server-Connector automatisch aktiviert und der Anbieter für erweiterbare Schlüsselverwaltung für den Zugriff auf den Azure-Schlüsseltresor konfiguriert. Außerdem werden die Anmeldeinformationen erstellt, um den Zugriff auf Ihren Tresor zu ermöglichen. Wenn Sie sich die Schritte in der oben erwähnten Dokumentation für die Ausführung auf lokalen Computern angesehen haben, haben Sie erfahren, dass die Schritte 2 und 3 mit dieser Funktion automatisiert werden. Der einzige Schritt, den Sie noch manuell ausführen müssen, ist die Erstellung des Schlüsseltresors und der Schlüssel. Ab diesem Punkt ist das gesamte Setup Ihrer SQL Server-VM automatisiert. Nachdem das Setup über das Feature abgeschlossen wurde, können Sie Transact-SQL-Anweisungen ausführen, um wie gewohnt mit der Verschlüsselung Ihrer Datenbanken oder Sicherungen zu beginnen.

Hinweis

Sie können die Key Vault-Integration auch mithilfe einer Vorlage konfigurieren. Weitere Informationen finden Sie in der Azure-Schnellstartvorlage für die Azure Key Vault-Integration.

Vorbereiten auf die Integration des Azure-Schlüsseltresors

Es müssen mehrere Voraussetzungen erfüllt sein, damit Sie die Azure-Schlüsseltresor-Integration zum Konfigurieren Ihres virtuellen SQL Server-Computers verwenden können:

  1. Installieren von Azure PowerShell
  2. Erstellen eines Microsoft Entra-Mandanten
  3. Erstellen eines Schlüsseltresors

In den folgenden Abschnitten werden diese erforderlichen Komponenten und die Informationen beschrieben, die Sie ermitteln müssen, um die PowerShell-Cmdlets später ausführen zu können.

Hinweis

In diesem Artikel wird das Azure Az PowerShell-Modul verwendet. Dieses PowerShell-Modul wird für die Interaktion mit Azure empfohlen. Informationen zu den ersten Schritten mit dem Az PowerShell-Modul finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Installieren von Azure Powershell

Stellen Sie sicher, dass Sie das aktuelle Azure PowerShell-Modul installiert haben. Weitere Informationen finden Sie unter Installieren und Konfigurieren von Azure PowerShell.

Registrieren einer Anwendung in Ihrem Microsoft Entra ID

Zunächst müssen Sie über einen Microsoft Entra-Mandanten in Ihrem Abonnement verfügen. Neben vielen weiteren Vorteilen erhalten Sie hiermit die Möglichkeit, für bestimmte Benutzer und Anwendungen die Berechtigung für Ihren Schlüsseltresor zu vergeben.

Registrieren Sie als Nächstes eine Anwendung mit Microsoft Entra ID. So erhalten Sie ein Dienstprinzipalkonto, das über Zugriff auf Ihren Schlüsseltresor verfügt, was für Ihre VM erforderlich ist. Im Artikel zu Azure Key Vault finden Sie diese Schritte im Abschnitt Registrieren einer Anwendung bei Microsoft Entra ID. Alternativ können Sie sich in diesem Blogbeitrag die Schritte mit Screenshots im Abschnitt Abrufen einer Identität für die Anwendung ansehen. Vor dem Ausführen der Schritte müssen Sie während der Registrierung die folgenden Informationen ermitteln, da sie diese später beim Aktivieren der Azure Key Vault-Integration auf Ihrem virtuellen SQL-Computer benötigen.

  • Suchen Sie nach dem Hinzufügen der Anwendung im Bereich Registrierte App nach der Anwendungs-ID (die auch ClientID oder AppID genannt wird). Die Anwendungs-ID wird später dem Parameter $spName (Dienstprinzipalname) im PowerShell-Skript zugewiesen, um die Azure Key Vault-Integration zu ermöglichen.

    Application ID

  • Kopieren Sie bei der Schlüsselerstellung das Geheimnis für Ihren Schlüssel, wie im folgenden Screenshot zu sehen. Dieser geheime Schlüssel des Schlüssels wird später dem Parameter $spSecret (geheimer Schlüssel des Dienstprinzipals) im PowerShell-Skript zugewiesen.

    AAD secret

  • Die Anwendungs-ID und das Geheimnis werden auch zum Erstellen von Anmeldeinformationen in SQL Server verwendet.

  • Sie müssen diese neue Anwendungs-ID (oder Client-ID) so autorisieren, dass sie über die folgenden Zugriffsberechtigungen verfügt: get, wrapKey, unwrapKey. Hierfür wird das Cmdlet Set-AzKeyVaultAccessPolicy verwendet. Weitere Informationen finden Sie unter Azure Key Vault – Übersicht.

Erstellen eines Schlüsseltresors

Um den Azure Key Vault zum Speichern der Schlüssel zu verwenden, die Sie für die Verschlüsselung auf Ihrem virtuellen Computer nutzen, benötigen Sie Zugriff auf den Schlüsseltresor. Wenn Sie den Schlüsseltresor noch nicht eingerichtet haben, können Sie die Schritte im Artikel Erste Schritte mit Azure Key Vault ausführen. Vor dem Ausführen der Schritte müssen Sie während dieses Setups einige Informationen ermitteln, da sie diese später beim Aktivieren der Azure Key Vault-Integration auf Ihrem SQL-VM benötigen.

New-AzKeyVault -VaultName 'ContosoKeyVault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East Asia'

Achten Sie beim Schritt zum „Erstellen eines Schlüsseltresors“ auf die zurückgegebene vaultUri-Eigenschaft. Hierbei handelt es sich um die Schlüsseltresor-URL. Im Beispiel dieses Schritts (siehe unten) lautet der Name des Schlüsseltresors „ContosoKeyVault“, sodass sich für den Schlüsseltresor die URL https://contosokeyvault.vault.azure.net/ ergibt.

Die Schlüsseltresor-URL wird später dem Parameter $akvURL im PowerShell-Skript zugewiesen, um die Azure-Schlüsseltresor-Integration zu ermöglichen.

Nach Erstellung des Schlüsseltresors muss diesem ein Schlüssel hinzugefügt werden. Dieser wird später bei der Erstellung eines asymmetrischen Schlüssels in SQL Server verwendet.

Hinweis

Version 1.0.4.0 des Anbieters für die erweiterte Schlüsselverwaltung wird auf der SQL Server-VM über die SQL- IaaS-Erweiterung installiert. Ein Upgrade der Erweiterung für den SQL-IaaS-Agent bewirkt nicht, dass die Anbieterversion aktualisiert wird. Dies bedeutet, dass Sie bei Bedarf ein manuelles Upgrade der Anbieterversion für die erweiterbare Schlüsselverwaltung durchführen sollten (z. B. bei der Migration zu SQL Managed Instance).

Aktivieren und Konfigurieren der Key Vault-Integration

Sie können die Azure Key Vault-Integration während der Bereitstellung aktivieren oder für vorhandene VMs konfigurieren.

Neue VMs

Wenn Sie mithilfe von Resource Manager eine neuen SQL-VM bereitstellen, bietet das Azure-Portal eine Möglichkeit zum Aktivieren der Azure Key Vault-Integration.

SQL Azure Key Vault Integration

Eine ausführliche exemplarische Vorgehensweise zur Bereitstellung finden Sie im Artikel zum Bereitstellen einer SQL-VM im Azure-Portal.

Vorhandene VMs

Für vorhandene SQL-VMs öffnen Sie die Ihre SQL-VM-Ressource und wählen dann in den Einstellungen die Option Sicherheit aus. Wählen Sie Aktivieren aus, um die Azure Key Vault-Integration zu ermöglichen.

Der folgende Screenshot zeigt, wie Sie Azure Key Vault im Portal für eine vorhandene SQL Server-VM aktivieren (diese SQL Server-Instanz verwendet keinen Standardport, sondern Port 1401):

SQL Key Vault integration for existing VMs

Wenn Sie fertig sind, klicken Sie unten auf der Seite Sicherheit auf die Schaltfläche Übernehmen, um Ihre Änderungen zu speichern.

Hinweis

Der hier erstellte Anmeldeinformationsname wird später einem SQL-Anmeldenamen zugeordnet. Dadurch wird dem SQL-Anmeldenamen der Zugriff auf den Schlüsseltresor ermöglicht.

Nach dem Aktivieren der Azure-Schlüsseltresor-Integration können Sie die SQL Server-Verschlüsselung auf Ihrem virtuellen SQL-Computer aktivieren. Zuerst müssen Sie in Ihrem Schlüsseltresor einen asymmetrischen Schlüssel und in SQL Server auf Ihrem virtuellen Computer einen symmetrischen Schlüssel erstellen. Sie können dann T-SQL-Anweisungen ausführen, um die Verschlüsselung für Ihre Datenbanken und Backups zu aktivieren.

Es gibt verschiedene Arten der Verschlüsselung, die Sie nutzen können:

Die folgenden Transact-SQL-Skripts enthalten Beispiele für jeden dieser Bereiche.

Erforderliche Komponenten für Beispiele

Jedes Beispiel basiert auf diesen beiden erforderlichen Komponenten: einem asymmetrischen Schlüssel aus Ihrem Schlüsseltresor mit dem Namen CONTOSO_KEY und Anmeldeinformationen, die mit der Funktion für die Azure-Schlüsseltresor-Integration erstellt wurden und den Namen Azure_EKM_cred haben. Die folgenden Transact-SQL-Befehle richten diese erforderlichen Komponenten für die Ausführung der Beispiele ein:

USE master;
GO

--create credential
--The <<SECRET>> here requires the <Application ID> (without hyphens) and <Secret> to be passed together without a space between them.
CREATE CREDENTIAL Azure_EKM_cred
    WITH IDENTITY = 'keytestvault', --keyvault
    SECRET = '<<SECRET>>'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;


--Map the credential to a SQL login that has sysadmin permissions. This allows the SQL login to access the key vault when creating the asymmetric key in the next step.
ALTER LOGIN [SQL_Login]
ADD CREDENTIAL Azure_EKM_cred;


CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'KeyName_in_KeyVault',  --The key name here requires the key we created in the key vault
CREATION_DISPOSITION = OPEN_EXISTING;

TDE (Transparent Data Encryption)

  1. Erstellen Sie eine SQL Server-Anmeldung, die von der Datenbank-Engine für TDE verwendet werden kann, und fügen Sie die Anmeldeinformationen hinzu.

    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 EKM_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 EKM_Login
    ADD CREDENTIAL Azure_EKM_cred;
    GO
    
  2. Erstellen Sie den Datenbankverschlüsselungsschlüssel, der für TDE verwendet werden soll.

    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;
    GO
    

Verschlüsselte Sicherungen

  1. Erstellen Sie eine SQL Server-Anmeldung, die von der Datenbank-Engine zum Verschlüsseln von Sicherungen verwendet wird, und fügen Sie die Anmeldeinformationen hinzu.

    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 EKM_Login
    FROM ASYMMETRIC KEY CONTOSO_KEY;
    GO
    
    -- Alter the Encrypted Backup Login to add the credential for use by
    -- the Database Engine to access the key vault
    ALTER LOGIN EKM_Login
    ADD CREDENTIAL Azure_EKM_cred ;
    GO
    
  2. Sichern Sie die Datenbank, indem Sie die Verschlüsselung mit dem asymmetrischen Schlüssel angeben, der im Schlüsseltresor gespeichert ist.

    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
    

Column Level Encryption (CLE)

Mit diesem Skript wird ein symmetrischer Schlüssel erstellt, der durch den asymmetrischen Schlüssel im Schlüsseltresor geschützt ist, und anschließend wird der symmetrische Schlüssel zum Verschlüsseln der Daten in der Datenbank verwendet.

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;

Zusätzliche Ressourcen

Weitere Informationen zur Verwendung dieser Verschlüsselungsfunktionen finden Sie unter Verwenden der erweiterbaren Schlüsselverwaltung mit SQL Server-Verschlüsselungsfunktionen.

Beachten Sie, dass bei den Schritten in diesem Artikel davon ausgegangen wird, dass bei Ihnen SQL Server bereits auf einem virtuellen Azure-Computer ausgeführt wird. Ist dies nicht der Fall, helfen Ihnen die Informationen unter Bereitstellen eines virtuellen Computers mit SQL Server in Azure weiter. Weitere Informationen zum Ausführen von SQL Server auf virtuellen Azure-Computern finden Sie in der Übersicht zu SQL Server auf virtuellen Azure Windows-Computern.

Nächste Schritte

Weitere Informationen zur Sicherheit finden Sie unter Wichtige Aspekte zur Sicherheit für SQL Server auf Azure-VMs.