PowerShell und Azure CLI: Aktivieren von Transparent Data Encryption mithilfe eines vom Kunden verwalteten Azure Key Vault-Schlüssels
Gilt für: Azure SQL-Datenbank Azure SQL Managed Instance Azure 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.
- Anweisungen zur Verwendung eines Hardwaresicherheitsmodells (HSM) und Key Vault
- Der Schlüsseltresor muss die folgende Eigenschaft aufweisen, um für TDE verwendet werden zu können:
- Vorläufiges Löschen und Löschschutz
- Anweisungen zur Verwendung eines Hardwaresicherheitsmodells (HSM) und Key Vault
- 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
- Verwenden Sie das Cmdlet Get-AzKeyVaultKey, um die Schlüssel-ID aus Key Vault abzurufen.
- Fügen Sie dem Server mit dem Cmdlet Add-AzSqlServerKeyVaultKey den Schlüssel aus Key Vault hinzu.
- Legen Sie den Schlüssel mit dem Cmdlet Set-AzSqlServerTransparentDataEncryptionProtector als TDE-Schutzvorrichtung für alle Serverressourcen fest.
- Vergewissern Sie sich mit dem Cmdlet Get-AzSqlServerTransparentDataEncryptionProtector, dass die TDE-Schutzvorrichtung wie vorgesehen konfiguriert wurde.
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
- Erfahren Sie, wie Sie die TDE-Schutzvorrichtung eines Servers rotieren, um Sicherheitsanforderungen zu erfüllen: Rotieren der Transparent Data Encryption-Schutzvorrichtung mithilfe von PowerShell.
- Im Fall eines Sicherheitsrisikos können Sie hier nachsehen, wie Sie eine möglicherweise kompromittierte TDE-Schutzvorrichtung entfernen: Entfernen eines möglicherweise kompromittierten Schlüssels.