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:Azure SQL-Datenbank
In diesem Tutorial finden Sie die ersten Schritte mit Always Encrypted mit Secure Enclaves in Azure SQL-Datenbank unter Verwendung von VBS-Enclaves (virtualisierungsbasierte Sicherheit). Es wird Folgendes gezeigt:
- Erstellen einer Umgebung zum Testen und Auswerten von Always Encrypted mit VBS-Enclaves
- Direktes Verschlüsseln von Daten und Ausgeben umfangreicher vertraulicher Abfragen für verschlüsselte Spalten mithilfe von SQL Server Management Studio (SSMS)
Voraussetzungen
- Ein aktives Azure-Abonnement. Falls Sie nicht über ein Abonnement verfügen, können Sie ein kostenloses Konto erstellen. Sie müssen Mitglied der Rolle „Mitwirkender“ oder „Besitzer“ sein, damit das Abonnement Ressourcen erstellen kann.
- Optional, aber zum Speichern Ihres Spaltenhauptschlüssels für Always Encrypted empfohlen: ein Schlüsseltresor in Azure Key Vault. Informationen zum Erstellen eines Schlüsseltresors finden Sie unter Schnellstart: Erstellen eines Schlüsseltresors über das Azure-Portal.
- Wenn für Ihren Schlüsseltresor das Berechtigungsmodell mit Zugriffsrichtlinien gilt, stellen Sie sicher, dass Sie im Schlüsseltresor über die folgenden Berechtigungen verfügen:
get,list,create,unwrap key,wrap key,verify,sign. Weitere Informationen finden Sie unter Zuweisen einer Key Vault-Zugriffsrichtlinie. - Wenn Sie das Berechtigungsmodell mit rollenbasierter Zugriffssteuerung (Role-Based Access Control, RBAC) von Azure verwenden, stellen Sie sicher, dass Sie Mitglied der Rolle Key Vault-Kryptografiebeauftragter für Ihren Schlüsseltresor sind. Weitere Informationen finden Sie unter Gewähren des Zugriffs auf Key Vault-Schlüssel, -Zertifikate und -Geheimnisse mit der rollenbasierten Zugriffssteuerung in Azure.
- Wenn für Ihren Schlüsseltresor das Berechtigungsmodell mit Zugriffsrichtlinien gilt, stellen Sie sicher, dass Sie im Schlüsseltresor über die folgenden Berechtigungen verfügen:
Toolanforderungen
Für dieses Tutorial ist SQL Server Management Studio (SSMS) erforderlich. Sie können entweder PowerShell oder die Azure-Befehlszeilenschnittstelle verwenden, um VBS-Enclaves zu aktivieren.
Laden Sie die neueste Version von SQL Server Management Studio (SSMS) herunter.
Schritt 1: Erstellen und Konfigurieren eines Servers und einer Datenbank
In diesem Schritt erstellen Sie einen neuen logischen Azure SQL-Datenbank-Server und eine neue Datenbank.
Befolgen Sie im Schnellstart: Erstellen eines Singletons – Azure SQL-Datenbank die Anweisungen im Abschnitt Erstellen eines Singletons zum Erstellen eines neuen logischen Azure SQL-Datenbank-Servers und einer Datenbank.
Wichtig
Stellen Sie sicher, dass Sie eine leere Datenbank mit dem Namen ContosoHR (und keine Beispieldatenbank) erstellen.
Schritt 2: Aktivieren einer VBS-Enclave
In diesem Schritt aktivieren Sie eine VBS-Enclave in der Datenbank, die für Always Encrypted mit Secure Enclaves erforderlich ist. Um VBS-Enclaves in Ihrer Datenbank zu aktivieren, müssen Sie die DatenbankeigenschaftpreferredEnclaveType auf VBS festlegen.
Öffnen Sie das Azure-Portal und suchen Sie die Datenbank, für die Sie Secure Enclaves aktivieren möchten.
Wählen Sie in den Sicherheitseinstellungen die Option Datenverschlüsselung aus.
Wählen Sie im Menü Datenverschlüsselung die Registerkarte Immer verschlüsselt aus.
Legen Sie Sichere Enklaven aktivieren auf EIN fest. Wenn sie bereits auf EIN festgelegt ist, fahren Sie mit dem nächsten Schritt fort.
Wählen Sie zum Speichern der Firewallkonfiguration Speichern aus.
Schritt 3: Auffüllen Ihrer Datenbank
In diesem Schritt erstellen Sie eine Tabelle und füllen sie mit einigen Daten auf, die Sie später verschlüsseln und abfragen.
Öffnen Sie SSMS, und stellen Sie eine Verbindung mit der Datenbank ContosoHR auf dem von Ihnen erstellten logischen Azure SQL-Server her, ohne Always Encrypted in der Datenbankverbindung zu aktivieren.
Geben Sie im Dialogfeld Verbindung mit dem Server herstellen den vollqualifizierten Namen Ihres Servers (z. B. myserver135.database.windows.net) sowie den Benutzernamen und das Kennwort des Administrators ein, den bzw. das Sie beim Erstellen des Servers festgelegt haben.
Wählen Sie Optionen>> und dann die Registerkarte Verbindungseigenschaften aus. Achten Sie darauf, dass Sie die Datenbank ContosoHR (und nicht die Standarddatenbank
master) auswählen.Wählen Sie die Registerkarte Always Encrypted aus.
Stellen Sie sicher, dass das Kontrollkästchen Always Encrypted aktivieren (Spaltenverschlüsselung)nicht ausgewählt ist.
Wählen Sie Verbinden.
Erstellen Sie eine neue Tabelle mit dem Namen
Employees.CREATE SCHEMA [HR]; GO CREATE TABLE [HR].[Employees] ( [EmployeeID] [int] IDENTITY(1,1) NOT NULL, [SSN] [char](11) NOT NULL, [FirstName] [nvarchar](50) NOT NULL, [LastName] [nvarchar](50) NOT NULL, [Salary] [money] NOT NULL ) ON [PRIMARY]; GOFügen Sie der Tabelle einige Mitarbeiterdatensätze hinzu
Employees.INSERT INTO [HR].[Employees] ([SSN] ,[FirstName] ,[LastName] ,[Salary]) VALUES ('795-73-9838' , N'Catherine' , N'Abel' , $31692); INSERT INTO [HR].[Employees] ([SSN] ,[FirstName] ,[LastName] ,[Salary]) VALUES ('990-00-6818' , N'Kim' , N'Abercrombie' , $55415);
Schritt 4: Bereitstellen Enclave-fähiger Schlüssel
In diesem Schritt erstellen Sie einen Spaltenhauptschlüssel und einen Spaltenverschlüsselungsschlüssel, die Enclave-Berechnungen zulassen.
Erweitern Sie Ihre Datenbank im Objekt-Explorer mit der SSMS-Instanz aus dem vorherigen Schritt, und navigieren Sie zu Sicherheit>Always Encrypted-Schlüssel.
Stellen Sie einen neuen Enclave-fähigen Spaltenhauptschlüssel bereit:
Klicken Sie mit der rechten Maustaste auf Always Encrypted-Schlüssel, und wählen Sie Neuer Spaltenhauptschlüssel aus.
Geben Sie einen Namen für den neuen Spaltenmasterschlüssel ein:
CMK1.Vergewissern Sie sich, dass die Option Enclave-Berechnungen zulassen ausgewählt ist. (Sie ist standardmäßig ausgewählt, wenn eine Secure Enclave für die Datenbank aktiviert ist. Sie muss aktiviert sein, da Ihre Datenbank die Hardwarekonfiguration der DC-Serie verwendet.)
Stellen Sie sicher, dass Sie entweder Azure Key Vault (empfohlen) oder Windows-Zertifikatspeicher (Aktueller Benutzer oder Lokaler Computer) auswählen.
- Wenn Sie „Azure Key Vault“ auswählen, melden Sie sich bei Azure an. Wählen Sie ein Azure-Abonnement mit dem gewünschten Schlüsseltresor und dann Ihren Schlüsseltresor aus. Wählen Sie Schlüssel generieren aus, um einen neuen Schlüssel zu erstellen.
- Wenn Sie „Windows-Zertifikatspeicher“ auswählen, wählen Sie die Schaltfläche Zertifikat generieren aus, um ein neues Zertifikat zu erstellen.
Klicken Sie auf OK.
Erstellen Sie einen neuen Enclave-fähigen Spaltenverschlüsselungsschlüssel:
- Klicken Sie mit der rechten Maustaste auf Always Encrypted-Schlüssel, und wählen Sie Neuer Spaltenverschlüsselungsschlüssel.
- Geben Sie einen Namen für den neuen Spaltenverschlüsselungsschlüssel ein:
CEK1. - Wählen Sie in der Dropdownliste " Spaltenmasterschlüssel " den Spaltenmasterschlüssel aus, den Sie in den vorherigen Schritten erstellt haben.
- Klicken Sie auf OK.
Schritt 5: Direktes Verschlüsseln einiger Spalten
In diesem Schritt verschlüsseln Sie die in den SSN- und Salary-Spalten gespeicherten Daten innerhalb der serverseitigen Enklave und testen anschließend eine SELECT-Abfrage auf die Daten.
Öffnen Sie eine neue SSMS-Instanz, und stellen Sie eine Verbindung mit Ihrer Datenbank her. Always Encrypted muss dabei für die Datenbankverbindung aktiviert sein.
Starten Sie eine neue SSMS-Instanz.
Geben Sie im Dialogfeld Verbindung mit dem Server herstellen den vollqualifizierten Namen Ihres Servers (z. B. myserver135.database.windows.net) sowie den Benutzernamen und das Kennwort des Administrators ein, den bzw. das Sie beim Erstellen des Servers festgelegt haben.
Wählen Sie Optionen>> und dann die Registerkarte Verbindungseigenschaften aus. Achten Sie darauf, dass Sie die Datenbank ContosoHR (und nicht die Standarddatenbank
master) auswählen.Wählen Sie die Registerkarte Always Encrypted aus.
Aktivieren Sie das Kontrollkästchen Always Encrypted aktivieren (Spaltenverschlüsselung).
Wählen Sie Secure Enclaves aktivieren aus.
Legen Sie das Protokoll auf Kein fest.
Wählen Sie Verbinden.
Wenn Sie aufgefordert werden, die Parametrisierung für Always Encrypted zu aktivieren, wählen Sie Aktivieren aus.
Öffnen Sie mithilfe derselben SSMS-Instanz (mit aktivierter Always Encrypted-Funktion) ein neues Abfragefenster, und verschlüsseln Sie die
SSNSpalten undSalarySpalten, indem Sie die folgenden Anweisungen ausführen.ALTER TABLE [HR].[Employees] ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER TABLE [HR].[Employees] ALTER COLUMN [Salary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;Hinweis
Die
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHEAnweisung löscht den Abfrageplancache für die Datenbank im obigen Skript. Nachdem Sie die Tabelle bearbeitet haben, müssen Sie die Pläne für alle Batches und gespeicherten Prozeduren leeren, die Zugriff auf die Tabelle haben, um die Informationen für die Parameterverschlüsselung zu aktualisieren.Um zu überprüfen, ob die
SSNSpaltenSalaryjetzt verschlüsselt sind, öffnen Sie ein neues Abfragefenster in der SSMS-Instanz , ohne Always Encrypted für die Datenbankverbindung aktiviert und führen Sie die folgende Anweisung aus. Das Abfragefenster sollte verschlüsselte Werte in denSSNUndSalarySpalten zurückgeben. Wenn Sie die gleiche Abfrage mit der SSMS-Instanz ausführen, bei der Always Encrypted aktiviert ist, sollten die Daten entschlüsselt angezeigt werden.SELECT * FROM [HR].[Employees];
Schritt 6: Ausführen umfangreicher Abfragen für verschlüsselte Spalten
Sie können umfangreiche Abfragen für verschlüsselte Spalten ausführen. Ein Teil der Abfrageverarbeitung wird in der serverseitigen Enclave ausgeführt.
Stellen Sie in der SSMS-Instanz mit aktiviertem Always Encrypted sicher, dass auch die Parametrisierung für Always Encrypted aktiviert ist.
- Wählen Sie im Hauptmenü von SSMS Tools aus.
- Wählen Sie Optionen... aus.
- Navigieren Sie zu Abfrageausführung>SQL Server>Erweitert.
- Stellen Sie sicher, dass Parametrisierung für Always Encrypted aktivieren aktiviert ist.
- Klicken Sie auf OK.
Öffnen Sie ein neues Abfragefenster, fügen Sie die folgende Abfrage ein, und führen Sie es aus. Die Abfrage sollte Klartextwerte und Zeilen zurückgeben, die den angegebenen Suchkriterien entsprechen.
DECLARE @SSNPattern [char](11) = '%6818'; DECLARE @MinSalary [money] = $1000; SELECT * FROM [HR].[Employees] WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;Probieren Sie dieselbe Abfrage erneut in der SSMS-Instanz aus, in der Always Encrypted nicht aktiviert ist. Ein Fehler sollte auftreten.
Anleitungen
Nachdem Sie dieses Tutorial abgeschlossen haben, können Sie mit einem der folgenden Tutorials fortfahren:
- Tutorial: Entwickeln einer .NET-Anwendung mithilfe von Always Encrypted mit Secure Enclaves
- Tutorial: Entwickeln einer .NET Framework-Anwendung mithilfe von Always Encrypted mit Secure Enclaves
- Tutorial: Erstellen und Verwenden von Indizes für Enclave-fähige Spalten mit zufälliger Verschlüsselung