PowerShell und Azure CLI: Aktivieren von Transparent Data Encryption mithilfe eines vom Kunden verwalteten Azure Key Vault-Schlüssels

Gilt für:Azure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse Analytics

In diesem Artikel wird die Verwendung eines Schlüssels aus Azure Key Vault für Transparent Data Encryption (TDE) in Azure SQL-Datenbank oder Azure Synapse Analytics erläutert. Weitere Informationen zur Integration von TDE mit Azure Key Vault und BYOK-Unterstützung (Bring Your Own Key) finden Sie unter TDE mit vom Kunden verwalteten Schlüsseln in Azure Key Vault. Weitere Anleitungen des Azure-Portals zum Aktivieren von TDE mit einem kundenseitig verwalteten Schlüssel aus Azure Key Vault finden Sie unter Erstellen eines Servers, der mit einer benutzerseitig zugewiesenen verwalteten Identität und kundenseitig verwaltetem TDE konfiguriert ist.

Dieser Artikel gilt für Azure SQL-Datenbank, Azure SQL Managed Instance und Azure Synapse Analytics (dedizierte SQL-Pools (vormals SQL DW)). Die Dokumentation zu Transparent Data Encryption für dedizierte SQL-Pools in Synapse-Arbeitsbereichen finden Sie unter Verschlüsselung für Azure Synapse Analytics-Arbeitsbereiche.

Hinweis

Azure SQL unterstützt nun die Verwendung eines RSA-Schlüssels, der in einem verwalteten HSM als TDE-Schutzvorrichtung gespeichert ist. Verwaltetes HSM von Azure Key Vault ist ein vollständig verwalteter, hochverfügbarer, Einzelmandanten- und standardkonformer Clouddienst, der es Ihnen ermöglicht, kryptografische Schlüssel für Ihre Cloudanwendungen über HSMs zu schützen, die mit FIPS 140-2 Level 3 validiert sind. Erfahren Sie mehr über verwaltete HSMs.

Hinweis

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

Voraussetzungen für PowerShell

  • Sie müssen über ein Azure-Abonnement verfügen und ein Administrator für dieses Abonnement sein.
  • [Empfohlen, aber optional] Sie sollten über ein Hardwaresicherheitsmodul (HSM) oder einen lokalen Schlüsselspeicher zum Erstellen einer lokalen Kopie des Schlüsselmaterials der TDE-Schutzvorrichtung verfügen.
  • Azure PowerShell muss installiert sein und ausgeführt werden.
  • Erstellen Sie eine Azure Key Vault-Instanz und einen Schlüssel zur Verwendung für TDE.
  • Der Schlüssel muss die folgenden Attribute aufweisen, um für TDE verwendet werden zu können:
    • Das Aktivierungsdatum (sofern festgelegt) muss ein Datum und eine Uhrzeit in der Vergangenheit sein
    • Das Ablaufdatum (sofern festgelegt) muss ein Datum und eine Uhrzeit in der Zukunft sein.
    • Der Schlüssel muss sich im Zustand „Aktiviert“ befinden.
    • Fähigkeit zum Ausführen des get-, wrap key- und unwrap key-Vorgangs
  • Um einen Managed HSM-Schlüssel zu verwenden, befolgen Sie die Anweisungen zum Erstellen und Aktivieren eines Managed HSM mit Azure CLI.

Anweisungen zur Installation des Az-Moduls finden Sie unter Install Azure PowerShell (Installieren von Azure PowerShell). Spezifische Cmdlets finden Sie unter AzureRM.Sql.

Weitere Informationen zu Key Vault finden Sie im Artikel zu PowerShell-Anweisungen von Key Vault und unter Verwenden des vorläufigen Löschens in Key Vault mit PowerShell.

Wichtig

Das Azure Resource Manager-Modul (RM) von PowerShell wird weiterhin unterstützt, aber alle zukünftigen Entwicklungen erfolgen für das Az.Sql-Modul. Das AzureRM-Modul erhält mindestens bis Dezember 2020 weiterhin Fehlerbehebungen. Die Argumente für die Befehle im Az-Modul und den AzureRm-Modulen sind im Wesentlichen identisch. Weitere Informationen zur Kompatibilität finden Sie in der Einführung in das neue Azure PowerShell Az-Modul.

Zuweisen einer Microsoft Entra-Identität zu Ihrem Server

Wenn Sie über einen vorhandenen Server verfügen, verwenden Sie folgenden Code, um Ihrem Server eine Microsoft Entra-Identität hinzuzufügen.

$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity

Wenn Sie einen Server erstellen, verwenden Sie das Cmdlet New-AzSqlServer mit dem Tag Identity, um während der Servererstellung eine Microsoft Entra-Identität hinzuzufügen:

$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
    -ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity

Gewähren von Key Vault-Berechtigungen für Ihren Server

Verwenden Sie das Cmdlet Set-AzKeyVaultAccessPolicy, um Ihrem Server Zugriff auf den Schlüsseltresor zu gewähren, bevor Sie einen Schlüssel daraus für TDE verwenden.

Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
    -ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey

Um Ihrem Server Berechtigungen für eine Managed HSM-Instanz hinzuzufügen, fügen Sie dem Server die lokale RBAC-Rolle „Managed HSM Crypto Service Encryption User (Benutzer der Kryptografiedienstverschlüsselung für verwaltete HSMs)“ hinzu. Dies ermöglicht dem Server, „get“-, „wrap key“- und „unwrap key“-Vorgänge für die Schlüssel in der Managed HSM-Instanz auszuführen. Rollenverwaltung für Managed HSM

Hinzufügen eines Key Vault-Schlüssels zum Server und Festlegen der TDE-Schutzvorrichtung

Hinweis

Verwenden Sie für Managed HSM-Schlüssel die Version Az.Sql 2.11.1 von PowerShell.

Hinweis

Die kombinierte Länge für den Schlüsseltresornamen und Schlüsselnamen darf 94 Zeichen nicht überschreiten.

Tipp

Beispiel für die KeyId-Eigenschaft in Key Vault: https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h

Beispiel für die KeyId-Eigenschaft von Managed HSM:
https://contosoMHSM.managedhsm.azure.net/keys/myrsakey

# add the key from Key Vault to the server
Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>

# set the key as the TDE protector for all resources under the server
Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> `
   -Type AzureKeyVault -KeyId <KeyVaultKeyId>

# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>

Aktivieren von TDE

Aktivieren Sie TDE mit dem Cmdlet Set-AzSqlDatabaseTransparentDataEncryption.

Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"

Nun ist TDE für die Datenbank oder Data Warehouse-Instanz mit einem Verschlüsselungsschlüssel in Key Vault aktiviert.

Überprüfen des Verschlüsselungsstatus und der Verschlüsselungsaktivität

Verwenden Sie Get-AzSqlDatabaseTransparentDataEncryption, um den Verschlüsselungsstatus für eine Datenbank oder ein Data Warehouse abzurufen.

# get the encryption state of the database
Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> `

Nützliche PowerShell-cmdlets

  • Aktivieren Sie TDE mit dem Cmdlet Set-AzSqlDatabaseTransparentDataEncryption.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Mit dem Cmdlet Get-AzSqlServerKeyVaultKey geben Sie die Liste der Key Vault-Schlüssel zurück, die dem Server hinzugefügt wurden.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Mit dem Cmdlet Remove-AzSqlServerKeyVaultKey entfernen Sie einen Key Vault-Schlüssel vom Server.

    # the key set as the TDE Protector cannot be removed
    Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    

Problembehandlung

Überprüfen Sie Folgendes, wenn ein Problem auftritt:

  • Wenn der Schlüsseltresor nicht gefunden werden kann, stellen Sie sicher, dass Sie sich im richtigen Abonnement befinden.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Wenn der neue Schlüssel dem Server nicht hinzugefügt oder nicht als TDE-Schutzvorrichtung aktualisiert werden kann, überprüfen Sie Folgendes:
    • Der Schlüssel darf kein Ablaufdatum haben.
    • Für den Schlüssel müssen die get-, wrap key- und unwrap key-Vorgänge aktiviert sein.

Nächste Schritte