PowerShell and Azure CLI: Transparent Data Encryption met door de klant beheerde sleutels inschakelen vanuit Azure Key Vault

Van toepassing op: Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

In dit artikel wordt uitgelegd hoe u een sleutel uit Azure Key Vault gebruikt voor TDE (Transparent Data Encryption) in Azure SQL Database of Azure Synapse Analytics. Ga naar TDE met door de klant beheerde sleutels in Azure Key Vault voor meer informatie over de integratie van Azure Key- Bring Your Own Key (BYOK). Als u op zoek bent naar azure Portal-instructies voor het inschakelen van TDE met een door de klant beheerde sleutel uit Azure Key Vault, raadpleegt u Server maken die is geconfigureerd met door de gebruiker toegewezen beheerde identiteit en door de klant beheerde TDE.

Dit artikel is van toepassing op Azure SQL Database, Azure SQL Managed Instance en Azure Synapse Analytics (toegewezen SQL-pools (voorheen SQL DW)). Zie Azure Synapse Analytics-versleuteling voor documentatie over Transparent Data Encryption voor toegewezen SQL-pools in Synapse-werkruimten.

Notitie

Azure SQL biedt nu ondersteuning voor het gebruik van een RSA-sleutel die is opgeslagen in een beheerde HSM als TDE-beveiliging. Azure Key Vault Managed HSM is een cloudservice van hoge beschikbaarheid en één tenant, die volledig beheerd is en aan de standaarden voldoet. Met deze cloudservice kunt u cryptografische sleutels voor uw cloudtoepassingen waarborgen met behulp van met FIPS 140-2 Level 3 gevalideerde HSM's. Meer informatie over beheerde HSM's.

Notitie

Microsoft Entra-id is de nieuwe naam voor Azure Active Directory (Azure AD). Op dit moment wordt de documentatie bijgewerkt.

Vereisten voor PowerShell

  • U moet een Azure-abonnement hebben en een beheerder van dat abonnement zijn.
  • [Aanbevolen maar optioneel] Zorg voor een hardwarebeveiligingsmodule (HSM) of een lokaal sleutelarchief voor het maken van een lokale kopie van het TDE Protector-sleutelmateriaal.
  • U moet Azure PowerShell hebben geïnstalleerd en uitgevoerd.
  • Maak een Azure Key Vault en Sleutel die u voor TDE wilt gebruiken.
  • De sleutel moet de volgende kenmerken hebben die moeten worden gebruikt voor TDE:
    • De activeringsdatum (indien ingesteld) moet een datum en tijd in het verleden zijn
    • De vervaldatum (indien ingesteld) moet een toekomstige datum en tijd zijn
    • De sleutel moet de status Ingeschakeld hebben
    • Kan get-, wrap-sleutel-, uitpaksleutelbewerkingen uitvoeren
  • Als u een beheerde HSM-sleutel wilt gebruiken, volgt u de instructies voor het maken en activeren van een beheerde HSM met behulp van Azure CLI

Raadpleeg Azure PowerShell installeren voor instructies over de installatie van de Az-module. Zie AzureRM.Sql voor specifieke cmdlets.

Zie PowerShell-instructies van Key Vault en Het gebruik van Key Vault voor voorlopig verwijderen met PowerShell voor specifieke informatie over Key Vault.

Belangrijk

De module PowerShell Azure Resource Manager (RM) wordt nog steeds ondersteund, maar alle toekomstige ontwikkeling is voor de Az.Sql-module. De AzureRM-module blijft tot ten minste december 2020 bugfixes ontvangen. De argumenten voor de opdrachten in de Az-module en in de AzureRm-modules zijn vrijwel identiek. Zie Introductie van de nieuwe Az-module van Azure PowerShell voor meer informatie over de compatibiliteit van de argumenten.

Een Microsoft Entra-identiteit toewijzen aan uw server

Als u een bestaande server hebt, gebruikt u het volgende om een Microsoft Entra-identiteit toe te voegen aan uw server:

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

Als u een server maakt, gebruikt u de cmdlet New-AzSqlServer met de tag -Identity om een Microsoft Entra-identiteit toe te voegen tijdens het maken van de server:

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

Key Vault-machtigingen verlenen aan uw server

Gebruik de cmdlet Set-AzKeyVaultAccessPolicy om uw server toegang te verlenen tot de sleutelkluis voordat u er een sleutel uit gebruikt voor TDE.

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

Voor het toevoegen van machtigingen aan uw server op een beheerde HSM, voegt u de lokale RBAC-rol beheerde HSM Crypto Service Encryption User toe aan de server. Hierdoor kan de server get-, wrapsleutel- en uitpaksleutelbewerkingen uitvoeren op de sleutels in de beheerde HSM. Instructies voor het inrichten van servertoegang op beheerde HSM

De Key Vault-sleutel toevoegen aan de server en de TDE-beveiliging instellen

Notitie

Gebruik Az.Sql 2.11.1-versie van PowerShell voor beheerde HSM-sleutels.

Notitie

De gecombineerde lengte voor de sleutelkluisnaam en sleutelnaam mag niet langer zijn dan 94 tekens.

Tip

Een voorbeeld van KeyId uit Key Vault: https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h

Een voorbeeld van KeyId van beheerde 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>

TDE inschakelen

Gebruik de cmdlet Set-AzSqlDatabaseTransparentDataEncryption om TDE in te schakelen.

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

De database of het datawarehouse heeft nu TDE ingeschakeld met een versleutelingssleutel in Key Vault.

De versleutelingsstatus en versleutelingsactiviteit controleren

Gebruik de Get-AzSqlDatabaseTransparentDataEncryption om de versleutelingsstatus voor een database of datawarehouse op te halen.

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

Nuttige PowerShell-cmdlets

  • Gebruik de cmdlet Set-AzSqlDatabaseTransparentDataEncryption om TDE uit te schakelen.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Gebruik de cmdlet Get-AzSqlServerKeyVaultKey om de lijst met Key Vault-sleutels te retourneren die aan de server zijn toegevoegd.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Gebruik de Remove-AzSqlServerKeyVaultKey om een Key Vault-sleutel van de server te verwijderen.

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

Problemen oplossen

Controleer het volgende als er een probleem optreedt:

  • Als de sleutelkluis niet kan worden gevonden, controleert u of u zich in het juiste abonnement bevindt.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Als de nieuwe sleutel niet kan worden toegevoegd aan de server of de nieuwe sleutel niet kan worden bijgewerkt als de TDE-beveiliging, controleert u het volgende:
    • De sleutel mag geen vervaldatum hebben
    • Voor de sleutel moeten de get-, wrap-sleutel- en uitpaksleutelbewerkingen zijn ingeschakeld.

Volgende stappen