Usuwanie funkcji ochrony funkcji Transparent Data Encryption (TDE) przy użyciu programu PowerShell

Dotyczy: Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (tylko dedykowane pule SQL)

W tym artykule opisano sposób reagowania na potencjalnie naruszoną ochronę TDE dla usługi Azure SQL Database lub Azure Synapse Analytics korzystającej z funkcji TDE z kluczami zarządzanymi przez klienta w usłudze Azure Key Vault — obsługa byOK. Aby dowiedzieć się więcej na temat obsługi funkcji BYOK dla funkcji TDE, zobacz stronę przeglądu.

Uwaga

Procedury opisane w tym artykule powinny być wykonywane tylko w skrajnych przypadkach lub w środowiskach testowych. Dokładnie przejrzyj kroki, ponieważ usunięcie aktywnie używanych funkcji ochrony TDE z usługi Azure Key Vault spowoduje , że baza danych stanie się niedostępna.

Jeśli klucz jest kiedykolwiek podejrzany o naruszenie zabezpieczeń, tak aby usługa lub użytkownik miał nieautoryzowany dostęp do klucza, najlepiej usunąć klucz.

Pamiętaj, że po usunięciu funkcji ochrony TDE w usłudze Key Vault do 10 minut wszystkie zaszyfrowane bazy danych zaczną odrzucać wszystkie połączenia z odpowiednim komunikatem o błędzie i zmienić jego stan na Niedostępny.

Ten przewodnik z instrukcjami dotyczy podejścia do renderowania baz danych niedostępnych po wystąpieniu naruszonych zdarzeń.

Uwaga

Ten artykuł dotyczy usług Azure SQL Database, Azure SQL Managed Instance i Azure Synapse Analytics (dedykowanych pul SQL (dawniej SQL DW). Aby uzyskać dokumentację dotyczącą funkcji Transparent Data Encryption dla dedykowanych pul SQL w obszarach roboczych usługi Synapse, zobacz Szyfrowanie usługi Azure Synapse Analytics.

Wymagania wstępne

Aby uzyskać instrukcje dotyczące instalacji modułu Az, zobacz Instalowanie programu Azure PowerShell. Aby uzyskać informacje o określonych poleceniach cmdlet, zobacz AzureRM.Sql. Użyj nowego modułu Az programu Azure PowerShell.

Sprawdzanie odcisków palca funkcji ochrony TDE

W poniższych krokach opisano sposób sprawdzania odcisków palca funkcji ochrony TDE nadal używanych przez pliki wirtualnego dziennika (VLF) danej bazy danych. Odcisk palca bieżącej funkcji ochrony TDE bazy danych i identyfikator bazy danych można znaleźć, uruchamiając polecenie:

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

Poniższe zapytanie zwraca pliki VFS i odpowiednie odciski palca funkcji ochrony TDE. Każdy inny odcisk palca odnosi się do innego klucza w usłudze Azure Key Vault (AKV):

SELECT * FROM sys.dm_db_log_info (database_id)

Alternatywnie możesz użyć programu PowerShell lub interfejsu wiersza polecenia platformy Azure:

Polecenie Get-AzureRmSqlServerKeyVaultKey programu PowerShell udostępnia odcisk palca funkcji ochrony TDE używanej w zapytaniu, dzięki czemu można zobaczyć, które klucze do przechowywania i które klucze mają zostać usunięte w usłudze AKV. Tylko klucze, które nie są już używane przez bazę danych, można bezpiecznie usunąć z usługi Azure Key Vault.

Zachowaj dostęp do zaszyfrowanych zasobów

  1. Utwórz nowy klucz w usłudze Key Vault. Upewnij się, że ten nowy klucz jest tworzony w oddzielnym magazynie kluczy od potencjalnie naruszonej ochrony TDE, ponieważ kontrola dostępu jest aprowizowana na poziomie magazynu.

  2. Dodaj nowy klucz do serwera przy użyciu poleceń cmdlet Add-AzSqlServerKeyVaultKey i Set-AzSqlServerTransparentDataEncryptionProtector i zaktualizuj go jako nową funkcję ochrony TDE serwera.

    # 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. Upewnij się, że serwer i wszystkie repliki zostały zaktualizowane do nowej funkcji ochrony TDE przy użyciu polecenia cmdlet Get-AzSqlServerTransparentDataEncryptionProtector .

    Uwaga

    Propagacja nowej funkcji ochrony TDE do wszystkich baz danych i pomocniczych baz danych na serwerze może potrwać kilka minut.

    Get-AzSqlServerTransparentDataEncryptionProtector -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  4. Utwórz kopię zapasową nowego klucza w usłudze Key Vault.

    # -OutputFile parameter is optional; if removed, a file name is automatically generated.
    Backup-AzKeyVaultKey -VaultName <KeyVaultName> -Name <KeyVaultKeyName> -OutputFile <DesiredBackupFilePath>
    
  5. Usuń naruszony klucz z usługi Key Vault przy użyciu polecenia cmdlet Remove-AzKeyVaultKey .

    Remove-AzKeyVaultKey -VaultName <KeyVaultName> -Name <KeyVaultKeyName>
    
  6. Aby przywrócić klucz do usługi Key Vault w przyszłości przy użyciu polecenia cmdlet Restore-AzKeyVaultKey .

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

Sprawianie, że zaszyfrowane zasoby są niedostępne

  1. Porzucanie baz danych, które są szyfrowane przez potencjalnie naruszony klucz.

    Kopie zapasowe baz danych i plików dziennika są automatycznie tworzone, więc przywracanie bazy danych do punktu w czasie można wykonać w dowolnym momencie (o ile podasz klucz). Bazy danych muszą zostać usunięte przed usunięciem aktywnej ochrony TDE, aby zapobiec utracie danych do 10 minut ostatnich transakcji.

  2. Tworzenie kopii zapasowej materiału klucza funkcji ochrony TDE w usłudze Key Vault.

  3. Usuń potencjalnie naruszony klucz z usługi Key Vault.

Uwaga

Może upłynąć około 10 minut, aby wszelkie zmiany uprawnień zaczęły obowiązywać w magazynie kluczy. Obejmuje to odwołowanie uprawnień dostępu do funkcji ochrony TDE w usłudze AKV, a użytkownicy w tym przedziale czasu mogą nadal mieć uprawnienia dostępu.