Identitäts- und Schlüsselverwaltung für TDE mit kundenseitig verwalteten Schlüsseln auf Datenbankebene

Gilt für:Azure SQL-Datenbank

Hinweis

  • TDE CMK auf Datenbankebene ist für Azure SQL-Datenbank (alle SQL-Datenbank-Editionen) verfügbar. Es ist nicht für Azure SQL Managed Instance, lokal installierten SQL Server, Azure VMs und Azure Synapse Analytics (dedizierte SQL-Pools (ehemals SQL DW)) verfügbar.
  • Derselbe Leitfaden kann angewendet werden, um kundenseitig verwaltete Schlüssel auf Datenbankebene im gleichen Mandanten zu konfigurieren, indem der Verbundclient-ID-Parameter ausgeschlossen wird. Weitere Informationen zu kundenseitig verwalteten Schlüsseln auf Datenbankebene finden Sie unter Transparente Datenverschlüsselung (TDE) mit kundenseitig verwalteten Schlüsseln auf Datenbankebene.

In diesem Leitfaden werden die Schritte zum Erstellen, Aktualisieren und Abrufen einer Azure SQL-Datenbank-Instanz mit transparenter Datenverschlüsselung (Transparent Data Encryption, TDE) und kundenseitig verwalteten Schlüsseln (CMK) auf Datenbankebene unter Verwendung einer benutzerseitig zugewiesenen verwalteten Identität für den Zugriff auf Azure Key Vault beschrieben. Der Azure Key Vault befindet sich in einem anderen Microsoft Entra-Mandanten als der Azure SQL-Datenbank. Weitere Informationen finden Sie unter Mandantenübergreifende kundenseitig verwaltete Schlüssel mit Transparent Data Encryption.

Hinweis

Microsoft Entra ID war zuvor als Azure Active Directory (Azure AD) bekannt.

Voraussetzungen

Erforderliche Ressourcen im ersten Mandanten

In diesem Tutorial wird davon ausgegangen, dass der erste Mandant einem unabhängigen Softwareanbieter (Independent Software Vendor, ISV) und der zweite Mandant der Kundschaft gehört. Weitere Informationen zu diesem Szenario finden Sie unter Mandantenübergreifende kundenseitig verwaltete Schlüssel mit Transparent Data Encryption.

Damit Sie TDE für Azure SQL-Datenbank mit einem mandantenübergreifenden CMK konfigurieren können, benötigen Sie eine Microsoft Entra-Anwendung mit mehreren Mandanten, die mit einer benutzerseitig zugewiesenen verwalteten Identität mit Anmeldeinformationen für eine Verbundidentität für die Anwendung konfiguriert ist. Befolgen Sie dazu einen der Leitfäden unter „Voraussetzungen“.

  1. Erstellen und konfigurieren Sie im ersten Mandanten, in dem Sie die Azure SQL-Datenbank-Instanz erstellen möchten, eine mehrinstanzenfähige Microsoft Entra-Anwendung.

  2. Erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität.

  3. Konfigurieren Sie die vom Benutzer zugewiesene verwaltete Identität als Verbundidentitätsnachweis für die mehrmandantenfähige Anwendung.

  4. Notieren Sie sich den Namen und die ID der Anwendung. Finden Sie diese Informationen im Azure-Portal>. Microsoft Entra ID>Unternehmensanwendungen und suchen Sie nach der erstellten Anwendung.

Erforderliche Ressourcen im zweiten Mandanten

Hinweis

Azure AD- und MSOnline PowerShell-Module sind ab dem 30. März 2024 veraltet. Weitere Informationen finden Sie im Update zur Einstellung. Nach diesem Datum wird die Unterstützung für diese Module auf die Migrationsunterstützung für das Microsoft Graph PowerShell-SDK und Sicherheitskorrekturen beschränkt. Die veralteten Module funktionieren weiterhin bis zum 30. März 2025.

Es wird empfohlen, für die Interaktion mit Microsoft Entra ID (früher Azure AD) zu Microsoft Graph PowerShell zu migrieren. Informationen zu allgemeinen Migrationsfragen finden Sie in den häufig gestellten Fragen zur Migration. Hinweis: Bei der Version 1.0.x von MSOnline können nach dem 30. Juni 2024 Unterbrechungen auftreten.

  1. Beim zweiten Tenant, in dem sich der Azure Key Vault befindet, erstellen Sie einen Service Principal (eine Anwendung), indem Sie die Anwendungs-ID der registrierten Anwendung im ersten Tenant verwenden. Hier sind einige Beispiele, wie man die Multitenant-Anwendung registriert. Ersetzen Sie <TenantID> und <ApplicationID> durch die Kundenmandanten-ID aus Microsoft Entra ID bzw. der Anwendungs-ID der mehrinstanzenfähigen Anwendung:

    • PowerShell:

      Connect-Entra -TenantID <TenantID>
      New-EntraServicePrincipal  -AppId <ApplicationID>
      
    • Die Azure CLI:

      az login --tenant <TenantID>
      az ad sp create --id <ApplicationID>
      
  2. Navigieren Sie zu Azure-Portal>Microsoft Entra ID>Unternehmensanwendungen, und suchen Sie nach der erstellten Anwendung.

  3. Erstellen Sie bei Bedarf eine Azure Key Vault-Instanz und einen Schlüssel.

  4. Erstellen Sie die Zugriffsrichtlinie, oder legen Sie sie fest.

    1. Wählen Sie beim Erstellen der Zugriffsrichtlinie unter Schlüsselberechtigungen die Berechtigungen „Abrufen“, „Schlüssel packen“ und „Schlüssel entpacken“ aus.
    2. Wählen Sie die mehrfachinstanzenfähige Anwendung aus, die im ersten Schritt in der Option "Prinzipal " beim Erstellen der Zugriffsrichtlinie erstellt wurde.

    Screenshot des Zugriffsrichtlinienmenüs von Azure Key Vault im Azure-Portal.

  5. Nachdem Sie die Zugriffsrichtlinie und den Schlüssel erstellt haben, holen Sie den Schlüssel aus dem Azure Key Vault und notieren Sie die Schlüssel-Identifikator.

Erstellen einer Azure SQL-Datenbank-Instanz mit kundenseitig verwalteten Schlüsseln auf Datenbankebene

Die folgenden Beispiele zeigen, wie man eine Datenbank in der Azure SQL-Datenbank mit einer vom Benutzer zugewiesenen verwalteten Identität erstellt und wie man auf Datenbankebene einen tenantübergreifenden kundenverwalteten Schlüssel setzt. Sie benötigen die vom Benutzer zugewiesene verwaltete Identität, um während der Datenbankerstellungsphase einen vom Kunden verwalteten Schlüssel für transparente Datenverschlüsselung einzurichten.

  1. Wechseln Sie zum Azure SQL-Hub bei aka.ms/azuresqlhub.

  2. Erweitern Sie im Ressourcenmenü Azure SQL-Datenbank , und wählen Sie SQL-Datenbanken aus.

  3. Wähle in der + Create-Dropdown-Liste SQL-Datenbank aus.

    Screenshot des Azure-Portals mit der Seite

  4. Wählen Sie auf der Registerkarte Grundeinstellungen des Formulars SQL-Datenbank erstellen unter Projektdetails das gewünschte Abonnement für Azure, die Ressourcengruppe und den Server für Ihre Datenbank aus. Verwenden Sie dann einen eindeutigen Namen für den Datenbanknamen. Wenn Sie keinen logischen Server für Azure SQL-Datenbank erstellt haben, finden Sie weitere Informationen unter Erstellen eines Servers, der mit TDE mit mandantenübergreifenden kundenseitig verwalteten CMKs konfiguriert ist.

  5. Wenn Sie zur Registerkarte " Sicherheit " gelangen, wählen Sie "Transparente Datenverschlüsselung für den Schlüssel auf Datenbankebene konfigurieren" aus.

    Screenshot: Azure-Portal und Menü „Sicherheit“ beim Erstellen einer Azure SQL-Datenbank.

  6. Wählen Sie im Menü Transparente Datenverschlüsselung die Option kundenseitig verwalteter Schlüssel auf Datenbankebene (CMK) aus.

    Screenshot: Menü „Transparente Datenverschlüsselung“ im Azure-Portal.

  7. Für benutzerseitig zugewiesene verwaltete Identität wählen Sie Konfigurieren, um eine Datenbankidentität zu aktivieren, und Hinzufügen, um der Ressource eine benutzerseitig zugewiesene verwaltete Identität hinzuzufügen, wenn im Menü Identität keine gewünschte Identität aufgeführt ist. Wählen Sie anschließend Anwenden.

    Screenshot: Menü „Identität“ im Azure-Portal.

    Hinweis

    Sie können die Verbundclientidentität hier konfigurieren, wenn Sie mandantenübergreifendes CMK für TDE konfigurieren.

  8. Wählen Sie im Menü Transparente Datenverschlüsselung die Option Schlüssel ändern aus. Wählen Sie das gewünschte Abonnement, Schlüsseltresor, Schlüssel und Version für den kundenseitig verwalteter Schlüssel aus, der für TDE verwendet werden soll. Wählen Sie die Schaltfläche Auswählen aus. Nachdem Sie einen Schlüssel ausgewählt haben, können Sie bei Bedarf zusätzliche Datenbankschlüssel hinzufügen, indem Sie den Azure Key Vault-URI (Objektbezeichner) im Menü Transparente Datenverschlüsselung verwenden.

    Die automatische Schlüsselrotation kann auch auf Datenbankebene mithilfe des Kontrollkästchens Schlüssel automatisch rotieren im Menü Transparente Datenverschlüsselung aktiviert werden.

    Screenshot: Menü „Transparente Datenverschlüsselung“ im Azure-Portal, das auf das Hinzufügen zusätzlicher Schlüssel verweist.

  9. Wählen Sie Anwenden aus, um mit der Erstellung der Datenbank fortzufahren.

  10. Klicken Sie auf Weiter: Zusätzliche Einstellungen.

  11. Klicken Sie auf Weiter: Tags.

  12. Erwägen Sie die Verwendung von Azure-Tags. Beispielsweise das Tag "Owner" oder "CreatedBy", um zu identifizieren, wer die Ressource erstellt hat, und das Environment-Tag, um zu identifizieren, ob sich diese Ressource in Produktion, Entwicklung usw. befindet. Weitere Informationen finden Sie unter Entwickeln Ihrer Benennungs- und Kategorisierungsstrategie für Azure-Ressourcen.

  13. Klicken Sie auf Überprüfen + erstellen.

  14. Wählen Sie nach Überprüfung auf der Seite Überprüfen + erstellen die Option Erstellenaus.

Hinweis

Die Datenbankerstellung schlägt fehl, wenn die vom Benutzer zugewiesene verwaltete Identität nicht über die richtigen Berechtigungen für den Schlüsseltresor verfügt. Die benutzerseitig zugewiesene verwaltete Identität benötigt die Berechtigungen Get, wrapKey und unwrapKey für den Schlüsseltresor. Weitere Informationen finden Sie unter Verwaltete Identitäten für transparente Datenverschlüsselung mit kundenseitig verwaltetem Schlüssel.

Aktualisieren einer vorhandenen Azure SQL-Datenbank-Instanz mit kundenseitig verwalteten Schlüsseln auf Datenbankebene

Die folgenden Beispiele zeigen, wie man eine bestehende Datenbank in Azure SQL-Datenbank mit einer benutzerdefinierten verwalteten Identität aktualisiert und wie man auf Datenbankebene einen tenant-übergreifenden kundenverwalteten Schlüssel einsetzt. Man benötigt eine vom Benutzer zugewiesene verwaltete Identität, um einen vom Kunden verwalteten Schlüssel für transparente Datenverschlüsselung einzurichten.

Informationen zur Installation der aktuellen Version von Azure CLI finden Sie im Artikel Azure CLI installieren.

Aktualisieren Sie mit dem Befehl az sql db create eine Datenbank mit benutzerseitig zugewiesener verwalteter Identität und mandantenübergreifender kundenseitig verwalteter TDE. Im Feld kann der encryption-protector des zweiten Mandanten verwendet werden. Die Anwendungs-ID der Mehrinstanzenanwendung kann im Feld federated-client-id verwendet werden.

Um die Ressourcen-ID der benutzerseitig zugewiesenen verwalteten Identität zu erhalten, suchen Sie im Azure-Portal nach Verwalteten Identitäten. Suchen Sie ihre verwaltete Identität und gehen Sie zu Eigenschaften. Ein Beispiel für Ihre UMI-Ressourcen-ID sieht wie /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity> aus. Mit dem Parameter --encryption-protector-auto-rotation können Sie die automatische Schlüsselrotation auf Datenbankebene aktivieren.

az sql db update --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --sample-name AdventureWorksLT --edition GeneralPurpose --compute-model Serverless --family Gen5 --capacity 2 --assign-identity --user-assigned-identity-id $identityid --encryption-protector $keyid --federated-client-id $federatedclientid --keys $keys --keys-to-remove $keysToRemove --encryption-protector-auto-rotation True

Die Liste $keys ist eine durch Leerzeichen getrennte Liste von Schlüsseln, die der Datenbank hinzugefügt werden sollen, und $keysToRemove ist eine durch Leerzeichen getrennte Liste von Schlüsseln, die aus der Datenbank entfernt werden müssen.

$keys = '"https://yourvault.vault.azure.net/keys/yourkey1/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey2/ fd021f84a0d94d43b8ef33154bca0000"'

$keysToRemove = '"https://yourvault.vault.azure.net/keys/yourkey3/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey4/fd021f84a0d94d43b8ef33154bca0000"'

Anzeigen der kundenseitig verwalteten Schlüsseleinstellungen auf Datenbankebene in einer Azure SQL-Datenbank-Instanz

Im Folgenden werden Beispiele für das Abrufen von kundenseitig verwalteten Schlüssel auf Datenbankebene für eine Datenbank aufgeführt. Die ARM-Ressource Microsoft.Sql/servers/databases zeigt standardmäßig nur den TDE-Schutz und die verwaltete Identität an, die für die Datenbank konfiguriert sind. Um die Liste der Schlüssel vollständig zu erweitern, verwenden Sie den Parameter -ExpandKeyList. Darüber hinaus können Filter wie -KeysFilter "current" und ein Zeitpunktwert (z. B. 2023-01-01) verwendet werden, um die aktuellen und in der Vergangenheit zu einem bestimmten Zeitpunkt verwendeten Schlüssel abzurufen. Diese Filter werden nur für einzelne Datenbankabfragen und nicht für Abfragen auf Serverebene unterstützt.

Informationen zur Installation der aktuellen Version von Azure CLI finden Sie im Artikel Azure CLI installieren.

# Retrieve the basic database level customer-managed key settings from a database
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase

# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys

# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter current

# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter 01-01-2015

# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
az sql db list --resource-group $resourceGroupName --server $serverName

Auflisten aller Schlüssel auf einem logischen Server

Um die Liste aller Schlüssel (und nicht nur den primären Schutz) abzurufen, die von jeder Datenbank auf dem Server verwendet werden, muss die Abfrage einzeln mit den Schlüsselfiltern erfolgen. Das folgende Beispiel zeigt eine PowerShell-Abfrage zum Auflisten der einzelnen Schlüssel auf dem logischen Server.

Verwenden Sie das Cmdlet Get-AzSqlDatabase.

$dbs = Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName>
foreach ($db in $dbs)
{
Get-AzSqlDatabase -DatabaseName $db.DatabaseName -ServerName $db.ServerName -ResourceGroupName $db.ResourceGroupName -ExpandKeyList
}

Erneutes Überprüfen der kundenseitig verwalteten Schlüsseleinstellungen auf Datenbankebene in einer Azure SQL-Datenbank-Instanz

Wenn der TDE-Schutz wie in der transparenten Datenverschlüsselung von Azure SQL mit kundenverwaltetem Schlüssel beschrieben nicht zugänglich ist, wird die Datenbank unzugänglich. Nachdem du den Schlüsselzugriff behoben hast, verwende die Funktion Revalidate Key, um die Datenbank wieder zugänglich zu machen. Die folgenden Befehle liefern Beispiele.

Informationen zur Installation der aktuellen Version von Azure CLI finden Sie im Artikel Azure CLI installieren.

az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase

Zurücksetzen der kundenseitig verwalteten Schlüsseleinstellungen auf Datenbankebene in einer Azure SQL-Datenbank-Instanz

Eine Datenbank, die mit CMK auf Datenbankebene konfiguriert ist, kann mit den folgenden Befehlen auf Verschlüsselung auf Serverebene zurückgesetzt werden, wenn der Server mit einem dienstseitig verwalteten Schlüssel konfiguriert ist.

Informationen zur Installation der aktuellen Version von Azure CLI finden Sie im Artikel Azure CLI installieren.

az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase