Konfigurieren der Azure Key Vault-Integration für SQL Server auf virtuellen Azure-Computern (Resource Manager)Configure Azure Key Vault Integration for SQL Server on Azure Virtual Machines (Resource Manager)

ÜbersichtOverview

Es gibt mehrere SQL Server-Verschlüsselungsfeatures, z.B. Transparent Data Encryption (TDE), Column Level Encryption (CLE) und Sicherungsverschlüsselung.There are multiple SQL Server encryption features, such as transparent data encryption (TDE), column level encryption (CLE), and backup encryption. Bei diesen Arten der Verschlüsselung müssen Sie die kryptografischen Schlüssel verwalten und speichern, die Sie für die Verschlüsselung verwenden.These forms of encryption require you to manage and store the cryptographic keys you use for encryption. Der Azure-Schlüsseltresor-Dienst (Azure Key Vault, AKV) ist dafür ausgelegt, die Sicherheit und Verwaltung dieser Schlüssel an einem sicheren und hoch verfügbaren Speicherort zu verbessern.The Azure Key Vault (AKV) service is designed to improve the security and management of these keys in a secure and highly available location. Mit dem SQL Server-Connector kann SQL Server diese Schlüssel aus Azure Key Vault verwenden.The SQL Server Connector enables SQL Server to use these keys from Azure Key Vault.

Wenn Sie SQL Server mit lokalen Computern ausführen, können Sie die Schritte zum Zugreifen auf den Azure-Schlüsseltresor von Ihrem lokalen SQL Server-Computer ausführen.If you are running SQL Server with on-premises machines, there are steps you can follow to access Azure Key Vault from your on-premises SQL Server machine. Sie können für SQL Server auf virtuellen Azure-Computern aber Zeit sparen, indem Sie die Funktion für die Azure-Schlüsseltresor-Integration verwenden.But for SQL Server in Azure VMs, you can save time by using the Azure Key Vault Integration feature.

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.When this feature is enabled, it automatically installs the SQL Server Connector, configures the EKM provider to access Azure Key Vault, and creates the credential to allow you to access your vault. 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.If you looked at the steps in the previously mentioned on-premises documentation, you can see that this feature automates steps 2 and 3. Der einzige Schritt, den Sie noch manuell ausführen müssen, ist die Erstellung des Schlüsseltresors und der Schlüssel.The only thing you would still need to do manually is to create the key vault and keys. Ab diesem Punkt ist das gesamte Setup des virtuellen SQL-Computers automatisiert.From there, the entire setup of your SQL VM is automated. Nachdem die Funktion dieses Setup abgeschlossen hat, können Sie die T-SQL-Anweisungen ausführen, um mit der Verschlüsselung Ihrer Datenbanken oder Backups zu beginnen, wie Sie dies normalerweise auch tun.Once this feature has completed this setup, you can execute T-SQL statements to begin encrypting your databases or backups as you normally would.

Vorbereiten auf die Integration des Azure-SchlüsseltresorsPrepare for AKV Integration

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:To use Azure Key Vault Integration to configure your SQL Server VM, there are several prerequisites:

  1. Installieren von Azure PowershellInstall Azure Powershell
  2. Erstellen von Azure Active DirectoryCreate an Azure Active Directory
  3. Erstellen eines SchlüsseltresorsCreate a key vault

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.The following sections describe these prerequisites and the information you need to collect to later run the PowerShell cmdlets.

Hinweis

Dieser Artikel wurde aktualisiert und beinhaltet jetzt das neue Az-Modul von Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Sie können das AzureRM-Modul weiterhin verwenden, das bis mindestens Dezember 2020 weiterhin Fehlerbehebungen erhält.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Weitere Informationen zum neuen Az-Modul und zur Kompatibilität mit AzureRM finden Sie unter Introducing the new Azure PowerShell Az module (Einführung in das neue Az-Modul von Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Anweisungen zur Installation des Az-Moduls finden Sie unter Install Azure PowerShell (Installieren von Azure PowerShell).For Az module installation instructions, see Install Azure PowerShell.

Installieren von Azure PowerShellInstall Azure PowerShell

Stellen Sie sicher, dass Sie das aktuelle Azure PowerShell-Modul installiert haben.Make sure you have installed the latest Azure PowerShell module. Weitere Informationen finden Sie unter Installieren und Konfigurieren von Azure PowerShell.For more information, see How to install and configure Azure PowerShell.

Registrieren einer Anwendung in Ihrer Azure Active Directory-InstanzRegister an application in your Azure Active Directory

Zunächst benötigen Sie für Ihr Abonnement Azure Active Directory (AAD).First, you need to have an Azure Active Directory (AAD) in your subscription. 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.Among many benefits, this allows you to grant permission to your key vault for certain users and applications.

Registrieren Sie als Nächstes eine Anwendung für AAD.Next, register an application with AAD. So erhalten Sie ein Dienstprinzipalkonto, das über Zugriff auf Ihren Schlüsseltresor verfügt, was für Ihre VM erforderlich ist.This will give you a Service Principal account that has access to your key vault, which your VM will need. Im Artikel zu Azure Key Vault finden Sie diese Schritte im Abschnitt Registrieren einer Anwendung bei Azure Active Directory. Alternativ können Sie sich in diesem Blogbeitrag die Schritte mit Screenshots im Abschnitt Get an identity for the application (Abrufen einer Identität für die Anwendung) ansehen.In the Azure Key Vault article, you can find these steps in the Register an application with Azure Active Directory section, or you can see the steps with screenshots in the Get an identity for the application section of this blog post. 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.Before completing these steps, you need to collect the following information during this registration that is needed later when you enable Azure Key Vault Integration on your SQL VM.

  • Suchen Sie nach dem Hinzufügen der Anwendung auf dem Blatt Registrierte App nach der Anwendungs-ID.After the application is added, find the Application ID on the Registered app blade. Die Anwendungs-ID wird später dem Parameter $spName (Dienstprinzipalname) im PowerShell-Skript zugewiesen, um die Azure Key Vault-Integration zu ermöglichen.The application ID is assigned later to the $spName (Service Principal name) parameter in the PowerShell script to enable Azure Key Vault Integration.

    Anwendungs-ID

  • Kopieren Sie bei der Schlüsselerstellung das Geheimnis für Ihren Schlüssel, wie im folgenden Screenshot zu sehen.During these steps when you create your key, copy the secret for your key as is shown in the following screenshot. Dieser geheime Schlüssel des Schlüssels wird später dem Parameter $spSecret (geheimer Schlüssel des Dienstprinzipals) im PowerShell-Skript zugewiesen.This key secret is assigned later to the $spSecret (Service Principal secret) parameter in the PowerShell script.

    AAD-Geheimnis

  • Die Anwendungs-ID und das Geheimnis werden auch zum Erstellen von Anmeldeinformationen in SQL Server verwendet.The application ID and the secret will also be used to create a credential in SQL Server.

  • Sie müssen diese neue Client-ID autorisieren, sodass sie über die folgenden Zugriffsberechtigungen verfügt: get, wrapKey, unwrapKey.You must authorize this new client ID to have the following access permissions: get, wrapKey, unwrapKey. Hierfür wird das Cmdlet Set-AzKeyVaultAccessPolicy verwendet.This is done with the Set-AzKeyVaultAccessPolicy cmdlet. Weitere Informationen finden Sie unter Azure Key Vault – Übersicht.For more information, see Azure Key Vault overview.

Erstellen einer Key Vault-InstanzCreate a key vault

Um den Azure-Schlüsseltresor 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.In order to use Azure Key Vault to store the keys you will use for encryption in your VM, you need access to a key vault. Wenn Sie den Schlüsseltresor noch nicht eingerichtet haben, können Sie die Schritte im Artikel Erste Schritte mit Azure Key Vault ausführen.If you have not already set up your key vault, create one by following the steps in the Getting Started with Azure Key Vault article. 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 virtuellen SQL-Computer benötigen.Before completing these steps, there is some information you need to collect during this set up that is needed later when you enable Azure Key Vault Integration on your SQL VM.

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.When you get to the Create a key vault step, note the returned vaultUri property, which is the key vault 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.In the example provided in that step, shown below, the key vault name is ContosoKeyVault, therefore the key vault URL would be https://contosokeyvault.vault.azure.net/.

Die Schlüsseltresor-URL wird später dem Parameter $akvURL im PowerShell-Skript zugewiesen, um die Azure-Schlüsseltresor-Integration zu ermöglichen.The key vault URL is assigned later to the $akvURL parameter in the PowerShell script to enable Azure Key Vault Integration.

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.After the key vault is created, we need to add a key to the key vault, this key will be referred when we create an asymmetric key create in SQL Server later.

Hinweis

Anbieter für erweiterbare Schlüsselverwaltung Version 1.0.4.0 ist auf der SQL Server-VM über die SQL-IaaS-Erweiterung installiert.EKM Provider version 1.0.4.0 is installed on the SQL Server VM through the SQL IaaS extension. Ein Upgraden der SQL-IaaS-Erweiterung bewirkt nicht, dass die Version des Anbieters aktualisiert wird.Upgrading the SQL IaaS Extension will not update the provider version. Daraus ergibt sich, dass Sie bei Bedarf ein manuelles Upgrade der Version des Anbieters für erweiterbare Schlüsselverwaltung durchführen sollten (z. B. beim Migrieren zu einer verwalteten SQL-Instanz).Please considering manually upgrading the EKM provider version if needed (for example, when migrating to a SQL Managed Instance).

Aktivieren und Konfigurieren der AKV-IntegrationEnabling and configuring AKV integration

Sie können die AKV-Integration während der Bereitstellung aktivieren oder für vorhandene virtuelle Computer konfigurieren.You can enable AKV integration during provisioning or configure it for existing VMs.

Neue virtuelle ComputerNew VMs

Wenn Sie mithilfe von Resource Manager einen neuen virtuellen SQL Server-Computer bereitstellen, bietet das Azure-Portal einen Weg zum Aktivieren der Azure Key Vault-Integration.If you are provisioning a new SQL Server virtual machine with Resource Manager, the Azure portal provides a way to enable Azure Key Vault integration. Das Azure Key Vault-Feature ist nur für die Enterprise-, Developer- und Evaluation-Edition von SQL Server verfügbar.The Azure Key Vault feature is available only for the Enterprise, Developer, and Evaluation Editions of SQL Server.

SQL – Azure-Schlüsseltresor-Integration

Eine ausführliche exemplarische Vorgehensweise zur Bereitstellung finden Sie unter Bereitstellen eines virtuellen Computers mit SQL Server im Azure-Portal.For a detailed walkthrough of provisioning, see Provision a SQL Server virtual machine in the Azure portal.

Vorhandene virtuelle ComputerExisting VMs

Hinweis

Die folgenden Screenshots stammen aus der Ressource Virtuelle SQL-Computer im Azure-Portal.The following screenshots are from the SQL virtual machines resource within the Azure portal. Für virtuelle SQL Server-Computer mit Ende des Supports (EOS) und virtuelle SQL Server-Computer, die nicht mit dem SQL-VM-Ressourcenanbieter registriert wurden, verwenden Sie die Registerkarte „SQL Server-Konfiguration“, um Ihre virtuellen SQL Server-Computer zu verwalten.For end-of-support (EOS) SQL server VMs, and SQL Server VMs that have not been registered with the SQL VM resource provider, use the SQL Server configuration tab to manage your SQL Server VM instead.

Für vorhandene virtuelle SQL Server-Computer öffnen Sie die Ressource Virtueller SQL-Computer und wählen dann Sicherungen unter Einstellungen aus.For existing SQL Server virtual machines, open your SQL virtual machines resource and select Security under Settings. Wählen Sie Aktivieren aus, um die Azure Key Vault-Integration zu ermöglichen.Select Enable to enable Azure Key Vault integration.

SQL-AKV-Integration für vorhandene virtuelle Computer

Wählen Sie abschließend die Schaltfläche Übernehmen am unteren Rand der Seite Sicherheit aus, um Ihre Änderungen zu speichern.When finished, select the Apply button on the bottom of the Security page to save your changes.

Hinweis

Der hier erstellte Anmeldeinformationsname wird später einem SQL-Anmeldenamen zugeordnet.The credential name we created here will be mapped to a SQL login later. Dadurch wird dem SQL-Anmeldenamen der Zugriff auf den Schlüsseltresor ermöglicht.This allows the SQL login to access the key vault.

Hinweis

Sie können die AKV-Integration auch mithilfe einer Vorlage konfigurieren.You can also configure AKV integration using a template. Weitere Informationen finden Sie unter Azure quickstart template for Azure Key Vault integration(Azure-Schnellstartvorlage für die Azure Key Vault-Integration).For more information, see Azure quickstart template for Azure Key Vault integration.

Nächste SchritteNext steps

Nach dem Aktivieren der Azure-Schlüsseltresor-Integration können Sie die SQL Server-Verschlüsselung auf Ihrem virtuellen SQL-Computer aktivieren.After enabling Azure Key Vault Integration, you can enable SQL Server encryption on your SQL VM. 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.First, you will need to create an asymmetric key inside your key vault and a symmetric key within SQL Server on your VM. Sie können dann T-SQL-Anweisungen ausführen, um die Verschlüsselung für Ihre Datenbanken und Backups zu aktivieren.Then, you will be able to execute T-SQL statements to enable encryption for your databases and backups.

Es gibt verschiedene Arten der Verschlüsselung, die Sie nutzen können:There are several forms of encryption you can take advantage of:

Die folgenden Transact-SQL-Skripts enthalten Beispiele für jeden dieser Bereiche.The following Transact-SQL scripts provide examples for each of these areas.

Erforderliche Komponenten für BeispielePrerequisites for examples

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_TDE_cred haben.Each example is based on the two prerequisites: an asymmetric key from your key vault called CONTOSO_KEY and a credential created by the AKV Integration feature called Azure_EKM_TDE_cred. Die folgenden Transact-SQL-Befehle richten diese erforderlichen Komponenten für die Ausführung der Beispiele ein:The following Transact-SQL commands setup these prerequisites for running the examples.

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

Transparent Data Encryption (TDE)Transparent Data Encryption (TDE)

  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.Create a SQL Server login to be used by the Database Engine for TDE, then add the credential to it.

    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.Create the database encryption key that will be used for TDE.

    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 SicherungenEncrypted backups

  1. Erstellen Sie eine SQL Server-Anmeldung, die von der Datenbank-Engine für die Verschlüsselung von Sicherungen verwendet werden kann, und fügen Sie die Anmeldeinformationen hinzu.Create a SQL Server login to be used by the Database Engine for encrypting backups, and add the credential to it.

    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.Backup the database specifying encryption with the asymmetric key stored in the key vault.

    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)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.This script creates a symmetric key protected by the asymmetric key in the key vault, and then uses the symmetric key to encrypt data in the database.

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 RessourcenAdditional resources

Weitere Informationen zur Verwendung dieser Verschlüsselungsfunktionen finden Sie unter Verwenden der erweiterbaren Schlüsselverwaltung mit SQL Server-Verschlüsselungsfunktionen.For more information on how to use these encryption features, see Using EKM with SQL Server Encryption Features.

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.Note that the steps in this article assume that you already have SQL Server running on an Azure virtual machine. Ist dies nicht der Fall, helfen Ihnen die Informationen unter Bereitstellen eines virtuellen Computers mit SQL Server in Azure weiter.If not, see Provision a SQL Server virtual machine in Azure. Weitere Informationen zum Ausführen von SQL Server auf virtuellen Azure-Computern finden Sie in der Übersicht zu SQL Server auf virtuellen Azure-Computern.For other guidance on running SQL Server on Azure VMs, see SQL Server on Azure Virtual Machines overview.