Ta bort ett transparent datakryptering (TDE)-skydd med PowerShell

Gäller för:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (endast dedikerade SQL-pooler)

Den här artikeln beskriver hur du svarar på ett potentiellt komprometterat TDE-skydd för Azure SQL Database eller Azure Synapse Analytics som använder TDE med kundhanterade nycklar i Azure Key Vault – BYOK-stöd (Bring Your Own Key). Mer information om BYOK-stöd för TDE finns på översiktssidan.

Varning

De procedurer som beskrivs i den här artikeln bör endast utföras i extrema fall eller i testmiljöer. Granska stegen noggrant eftersom borttagning av aktivt använda TDE-skydd från Azure Key Vault leder till att databasen blir otillgänglig.

Om en nyckel någonsin misstänks vara komprometterad, så att en tjänst eller användare har obehörig åtkomst till nyckeln, är det bäst att ta bort nyckeln.

Tänk på att när TDE-skyddet har tagits bort i Key Vault, om upp till 10 minuter, kommer alla krypterade databaser att börja neka alla anslutningar med motsvarande felmeddelande och ändra dess tillstånd till Otillgängligt.

Den här instruktionsguiden går över metoden för att göra databaser otillgängliga efter ett komprometterat incidentsvar.

Kommentar

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.

Förutsättningar

  • Du måste ha en Azure-prenumeration och vara administratör för den prenumerationen.
  • Du måste ha Azure PowerShell installerat och igång.
  • Den här instruktionsguiden förutsätter att du redan använder en nyckel från Azure Key Vault som TDE-skydd för en Azure SQL Database eller Azure Synapse. Mer information finns i transparent datakryptering med BYOK-support.

Instruktioner för installation av Az-modulen finns i Installera Azure PowerShell. Specifika cmdletar finns i AzureRM.Sql. Använd den nya Azure PowerShell Az-modulen.

Kontrollera tumavtryck för TDE-skydd

Följande steg beskriver hur du kontrollerar tumavtrycken för TDE-skyddet som fortfarande används av Virtuella loggfiler (VLF) för en viss databas. Tumavtrycket för databasens aktuella TDE-skydd och databas-ID:t kan hittas genom att köra:

SELECT [database_id],
       [encryption_state],
       [encryptor_type], /*asymmetric key means AKV, certificate means service-managed keys*/
       [encryptor_thumbprint]
 FROM [sys].[dm_database_encryption_keys]

Följande fråga returnerar de VLFs och TDE Protector respektive tumavtryck som används. Varje tumavtryck refererar till olika nycklar i Azure Key Vault (AKV):

SELECT * FROM sys.dm_db_log_info (database_id)

Du kan också använda PowerShell eller Azure CLI:

PowerShell-kommandot Get-AzureRmSqlServerKeyVaultKey innehåller tumavtrycket för TDE-skyddet som används i frågan, så att du kan se vilka nycklar som ska behållas och vilka nycklar som ska tas bort i AKV. Endast nycklar som inte längre används av databasen kan tas bort på ett säkert sätt från Azure Key Vault.

Håll krypterade resurser tillgängliga

  1. Skapa en ny nyckel i Key Vault. Kontrollera att den nya nyckeln har skapats i ett separat nyckelvalv från det potentiellt komprometterade TDE-skyddet, eftersom åtkomstkontroll har etablerats på valvnivå.

  2. Lägg till den nya nyckeln till servern med hjälp av cmdletarna Add-AzSqlServerKeyVaultKey och Set-AzSqlServerTransparentDataEncryptionProtector och uppdatera den som serverns nya TDE-skydd.

    # 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>
    
  3. Kontrollera att servern och eventuella repliker har uppdaterats till det nya TDE-skyddet med hjälp av cmdleten Get-AzSqlServerTransparentDataEncryptionProtector .

    Kommentar

    Det kan ta några minuter innan det nya TDE-skyddet sprids till alla databaser och sekundära databaser under servern.

    Get-AzSqlServerTransparentDataEncryptionProtector -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  4. Gör en säkerhetskopia av den nya nyckeln i Key Vault.

    # -OutputFile parameter is optional; if removed, a file name is automatically generated.
    Backup-AzKeyVaultKey -VaultName <KeyVaultName> -Name <KeyVaultKeyName> -OutputFile <DesiredBackupFilePath>
    
  5. Ta bort den komprometterade nyckeln från Key Vault med cmdleten Remove-AzKeyVaultKey .

    Remove-AzKeyVaultKey -VaultName <KeyVaultName> -Name <KeyVaultKeyName>
    
  6. Återställa en nyckel till Key Vault i framtiden med hjälp av cmdleten Restore-AzKeyVaultKey .

    Restore-AzKeyVaultKey -VaultName <KeyVaultName> -InputFile <BackupFilePath>
    

Gör krypterade resurser otillgängliga

  1. Släpp de databaser som krypteras av den potentiellt komprometterade nyckeln.

    Databasen och loggfilerna säkerhetskopieras automatiskt, så en återställning till tidpunkt av databasen kan göras när som helst (så länge du anger nyckeln). Databaserna måste tas bort innan ett aktivt TDE-skydd tas bort för att förhindra potentiell dataförlust på upp till 10 minuter av de senaste transaktionerna.

  2. Säkerhetskopiera nyckelmaterialet för TDE-skyddet i Key Vault.

  3. Ta bort den potentiellt komprometterade nyckeln från Key Vault.

Kommentar

Det kan ta cirka 10 minuter innan eventuella behörighetsändringar börjar gälla för nyckelvalvet. Detta inkluderar återkallande av åtkomstbehörigheter till TDE-skyddet i AKV, och användare inom den här tidsramen kan fortfarande ha åtkomstbehörigheter.