Konfigurieren von Georeplikation und Sicherung/Wiederherstellung für transparente Datenverschlüsselung mit kundenseitig verwalteten Schlüsseln auf Datenbankebene

Gilt für:Azure SQL-DatenbankAzure SQL Managed Instance

Dieser Artikel zeigt, wie man einen Schlüssel aus Azure Key Vault für transparente Datenverschlüsselung (TDE) in der Azure SQL-Datenbank verwendet. 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. Wenn Sie Azure-Portal-Anleitungen dazu möchten, wie Sie TDE mit einem vom Kunden verwalteten Schlüssel aus Azure Key Vault aktivieren, siehe Server erstellen, der mit einer benutzerzugewiesenen verwalteten Identität und kundenverwaltetem TDE konfiguriert ist.

Hinweis

Azure SQL-Datenbank unterstützt sowohl asymmetrische (RSA) als auch symmetrische (AES) Schlüssel für kundenverwaltete Transparent Data Encryption, abhängig von der Konfiguration. Die Unterstützung für symmetrische Schlüssel (AES) befindet sich derzeit in der öffentlichen Vorschau und ist auf Azure SQL-Datenbank beschränkt. Je nach Region und Bereitstellungsstatus des Dienstes könnte diese Fähigkeit im Laufe der Zeit erscheinen. Details finden Sie unter Transparent Data Encryption with customer-managed keys (BYOK).

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 Azure Key Vault verwalteten HSM-Schlüssel zu verwenden, folgen Sie den Anweisungen zum Erstellen und Aktivieren eines verwalteten HSM mithilfe von Azure CLI

Anweisungen zur Installation des Az PowerShell-Moduls finden Sie unter Installieren von Azure PowerShell.

Einzelheiten zu Azure Key Vault finden Sie in den Anweisungen zur Verwendung von PowerShell mit Azure Key Vault und darin, wie Sie Azure Key Vault Soft-Delete mit PowerShell verwenden.

Zuweisen einer Microsoft Entra-Identität zu Ihrem Server

Wenn Sie einen bestehenden Server haben, verwenden Sie die folgenden Anweisungen, um eine Microsoft Entra-Identität zu Ihrem Server hinzuzufügen:

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

Wenn Sie einen Server erstellen, verwenden Sie das New-AzSqlServer-Cmdlet mit dem -Identity Tag, 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

Erteilen von Azure 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 auf einem verwalteten HSM Berechtigungen hinzuzufügen, fügen Sie dem Server die lokale RBAC-Rolle Managed HSM Crypto Service Encryption User hinzu. Diese Rolle ermöglicht es dem Server, wrap key, unwrap key und get Operationen auf den Schlüsseln im verwalteten HSM durchzuführen. Weitere Informationen finden Sie unter Verwaltete HSM-Rollenverwaltung.

Hinzufügen des Azure Key Vault-Schlüssels zum Server und Festlegen der TDE-Schutzkomponente

Hinweis

Verwenden Sie für verwaltete HSM-Schlüssel Az.Sql 2.11.1-Version von PowerShell oder höher.

Hinweis

Die kombinierte Länge für den Schlüssel-Vault-Namen und den Schlüsselnamen darf 94 Zeichen nicht überschreiten.

Tipp

Verwendung von versionierten und versionslosen Azure Key Vault-Schlüsseln für TDE

Beim Setzen des TDE-Schutzes können Sie auf einen Azure Key Vault-Schlüssel verweisen, indem Sie entweder eine bestimmte Schlüsselversion oder eine versionslose Schlüsselkennung verwenden.

In beiden Fällen bestimmt und verwendet die Azure SQL-Datenbank immer die neueste aktivierte Schlüsselversion in Azure Key Vault oder Azure Key Vault Managed HSM. Verwenden Sie versionslose Schlüsselbezeichner, um das Einbetten einer bestimmten Schlüsselversion in die TDE-Schutzkonfiguration zu vermeiden.

Versionslose Schlüsselbezeichner werden derzeit nur für Azure SQL-Datenbank unterstützt.

Beispiele:

  • Schlüsselkennung, die eine bestimmte Version enthält

    https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>

  • Versionslose Schlüssel-ID

    https://<key-vault-name>.vault.azure.net/keys/<key-name>

# add the key from Azure 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"

Jetzt ist die Datenbank mit TDE und einem Verschlüsselungsschlüssel in Azure Key Vault aktiviert.

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

Verwenden Sie den Befehl Get-AzSqlDatabaseTransparentDataEncryption, um den Verschlüsselungszustand einer Datenbank zu erhalten.

# 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"
    
  • Verwenden Sie das Cmdlet Get-AzSqlServerKeyVaultKey , um die Liste der azure Key Vault-Schlüssel zurückzugeben, die dem Server hinzugefügt wurden.

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

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

Problembehandlung

  • Wenn der Schlüsseltresor nicht gefunden werden kann, stelle sicher, dass du im richtigen Abonnement bist.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Wenn Sie den neuen Schlüssel nicht dem Server hinzufügen können oder den neuen Schlüssel nicht als TDE Protector festlegen können, überprüfen Sie die folgenden Bedingungen:

    • Der Schlüssel hat kein Verfallsdatum.
    • Für den Schlüssel müssen die get-, wrap key- und unwrap key-Vorgänge aktiviert sein.

TDE BYOK Azure Synapse Analytics

Für TDE BYOK Dokumentation zu Azure Synapse Analytics finden Sie unter Azure Synapse Analytics SQL documentation. 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.