PowerShell och Azure CLI: Aktivera transparent datakryptering med kundhanterad nyckel från Azure Key Vault

Gäller för:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Den här artikeln beskriver hur du använder en nyckel från Azure Key Vault för transparent datakryptering (TDE) i Azure SQL Database eller Azure Synapse Analytics. Mer information om TDE med Azure Key Vault-integrering – BYOK-support (Bring Your Own Key) finns i TDE med kundhanterade nycklar i Azure Key Vault. Information om hur du aktiverar TDE med en kundhanterad nyckel från Azure Key Vault finns i Skapa server som konfigurerats med användartilldelad hanterad identitet och kundhanterad TDE.

Den här artikeln gäller för Azure SQL Database, Azure SQL Managed Instance och Azure Synapse Analytics (dedikerade SQL-pooler (tidigare SQL DW)). Dokumentation om transparent datakryptering för dedikerade SQL-pooler i Synapse-arbetsytor finns i Azure Synapse Analytics-kryptering.

Kommentar

Azure SQL stöder nu användning av en RSA-nyckel som lagras i en hanterad HSM som TDE-skydd. Azure Key Vault Managed HSM är en fullständigt hanterad, högtillgänglig molntjänst med en enda klient, standardkompatibel molntjänst som gör att du kan skydda kryptografiska nycklar för dina molnprogram med fips 140-2 nivå 3-verifierade HSM:er. Läs mer om hanterade HSM:er.

Kommentar

Microsoft Entra-ID är det nya namnet för Azure Active Directory (Azure AD). Vi uppdaterar dokumentationen just nu.

Förutsättningar för PowerShell

  • Du måste ha en Azure-prenumeration och vara administratör för den prenumerationen.
  • [Rekommenderat men valfritt] Ha en maskinvarusäkerhetsmodul (HSM) eller ett lokalt nyckelarkiv för att skapa en lokal kopia av nyckelmaterialet för TDE-skydd.
  • Du måste ha Azure PowerShell installerat och igång.
  • Skapa ett Azure Key Vault och en nyckel som ska användas för TDE.
  • Nyckeln måste ha följande attribut som ska användas för TDE:
    • Aktiveringsdatumet (om det anges) måste vara ett datum och en tid tidigare
    • Förfallodatumet (om det anges) måste vara ett framtida datum och en framtida tid
    • Nyckeln måste vara i tillståndet Aktiverad
    • Kunna utföra åtgärder för att hämta, omsluta nyckel och packa upp nyckel
  • Om du vill använda en Hanterad HSM-nyckel följer du anvisningarna för att skapa och aktivera en hanterad HSM med Hjälp av Azure CLI

Instruktioner för installation av Az-modulen finns i Installera Azure PowerShell. Specifika cmdletar finns i AzureRM.Sql.

Mer information om Key Vault finns i PowerShell-instruktioner från Key Vault och Så här använder du mjuk borttagning av Key Vault med PowerShell.

Viktigt!

PowerShell Azure Resource Manager-modulen (RM) stöds fortfarande, men all framtida utveckling gäller för Az.Sql-modulen. AzureRM-modulen fortsätter att ta emot felkorrigeringar fram till åtminstone december 2020. Argumenten för kommandona i Az-modulen och i AzureRm-modulerna är väsentligen identiska. Mer information om deras kompatibilitet finns i Introduktion till den nya Azure PowerShell Az-modulen.

Tilldela en Microsoft Entra-identitet till servern

Om du har en befintlig server använder du följande för att lägga till en Microsoft Entra-identitet på servern:

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

Om du skapar en server använder du cmdleten New-AzSqlServer med taggen -Identity för att lägga till en Microsoft Entra-identitet när servern skapas:

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

Bevilja Key Vault-behörigheter till servern

Använd cmdleten Set-AzKeyVaultAccessPolicy för att ge servern åtkomst till nyckelvalvet innan du använder en nyckel från den för TDE.

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

Om du vill lägga till behörigheter till servern på en hanterad HSM lägger du till den lokala RBAC-rollen "Managed HSM Crypto Service Encryption User" på servern. Detta gör det möjligt för servern att utföra åtgärder för att hämta, omsluta nyckel och packa upp nyckel på nycklarna i managed HSM. Instruktioner för att etablera serveråtkomst på hanterad HSM

Lägg till Key Vault-nyckeln på servern och ange TDE-skyddet

Kommentar

För Hanterade HSM-nycklar använder du Az.Sql 2.11.1-versionen av PowerShell.

Kommentar

Den kombinerade längden för nyckelvalvets namn och nyckelnamn får inte överstiga 94 tecken.

Dricks

Ett exempel på KeyId från Key Vault: https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h

Ett exempel på KeyId från 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>

Aktivera TDE

Använd cmdleten Set-AzSqlDatabaseTransparentDataEncryption för att aktivera TDE.

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

Nu har databasen eller informationslagret TDE aktiverat med en krypteringsnyckel i Key Vault.

Kontrollera krypteringstillståndet och krypteringsaktiviteten

Använd Get-AzSqlDatabaseTransparentDataEncryption för att hämta krypteringstillståndet för en databas eller ett informationslager.

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

Användbara PowerShell-cmdletar

  • Använd cmdleten Set-AzSqlDatabaseTransparentDataEncryption för att inaktivera TDE.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Använd cmdleten Get-AzSqlServerKeyVaultKey för att returnera listan över Key Vault-nycklar som har lagts till på servern.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Använd Remove-AzSqlServerKeyVaultKey för att ta bort en Key Vault-nyckel från servern.

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

Felsökning

Kontrollera följande om ett problem uppstår:

  • Om det inte går att hitta nyckelvalvet kontrollerar du att du är i rätt prenumeration.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Om den nya nyckeln inte kan läggas till på servern eller om den nya nyckeln inte kan uppdateras som TDE-skydd kontrollerar du följande:
    • Nyckeln ska inte ha ett förfallodatum
    • Nyckeln måste ha åtgärderna get, wrap key och unwrap key aktiverat.

Nästa steg