Program PowerShell i interfejs wiersza polecenia platformy Azure: włączanie funkcji Transparent Data Encryption przy użyciu klucza zarządzanego przez klienta w usłudze Azure Key Vault

Dotyczy:Azure SQL DatabaseAzure SQL Managed Instance

Ten artykuł pokazuje, jak użyć klucza z Azure Key Vault do przezroczystego szyfrowania danych (TDE) w Azure SQL Database. Aby zdobyć więcej informacji o funkcji TDE z integracją z Azure Key Vault — obsługą BYOK, odwiedź stronę TDE z kluczami zarządzanymi przez klienta w usłudze Azure Key Vault. Jeśli chcesz instrukcji w portalu Azure, jak włączyć TDE z kluczem zarządzanym przez klienta z Azure Key Vault, zobacz Tworzenie serwera skonfigurowanego z przypisaną przez użytkownika tożsamością zarządzaną oraz TDE z kluczem zarządzanym przez klienta.

Uwaga

Azure SQL Database obsługuje zarówno klucze asymetryczne (RSA), jak i symetryczne (AES) dla funkcji Transparent Data Encryption zarządzanej przez klienta, w zależności od konfiguracji. Obsługa kluczy symetrycznych (AES) jest obecnie dostępna w publicznej wersji zapoznawczej i jest ograniczona do Azure SQL Database. Możesz zauważyć, że ta funkcja pojawia się z czasem, w zależności od regionu i statusu wdrożenia usług. Szczegóły można znaleźć w artykule Transparent Data Encryption with customer-managed keys (BYOK).

Wymagania wstępne dla PowerShell

  • Musisz mieć subskrypcję platformy Azure i być administratorem tej subskrypcji.
  • [Zalecane, ale opcjonalne] Posiadanie modułu zabezpieczeń sprzętowych (HSM) lub lokalnego magazynu kluczy, aby utworzyć lokalną kopię materiału klucza chroniącego TDE.
  • Musisz mieć zainstalowany i uruchomiony program Azure PowerShell.
  • Utwórz usługę Azure Key Vault i klucz do użycia na potrzeby funkcji TDE.
  • Klucz musi mieć następujące atrybuty, które mają być używane dla funkcji TDE:
    • Data aktywacji (jeśli jest ustawiona) musi być datą i godziną w przeszłości
    • Data wygaśnięcia (jeśli jest ustawiona) musi być datą i godziną w przyszłości.
    • Klucz musi być w stanie Włączone
    • Możliwość wykonywania operacji pobierania, zawijania klucza, rozpakowania klucza
  • Aby użyć klucza zarządzanego modułu HSM Azure Key Vault, postępuj zgodnie z instrukcjami, aby utworzyć i aktywować zarządzany moduł HSM przy użyciu Azure CLI

Aby uzyskać instrukcje instalacji modułu Az programu PowerShell, zobacz Instalowanie programu Azure PowerShell.

Aby uzyskać szczegółowe informacje dotyczące usługi Azure Key Vault, zobacz Instrukcje programu PowerShell z usługi Azure Key Vault i Jak używać usuwania nietrwałego usługi Azure Key Vault za pomocą programu PowerShell.

Przypisz tożsamość Microsoft Entra do serwera

Jeśli masz istniejący serwer, skorzystaj z poniższych instrukcji, aby dodać tożsamość Microsoft Entra do swojego serwera:

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

Jeśli tworzysz serwer, użyj cmdletu New-AzSqlServer z tagiem-Identity, aby dodać tożsamość Microsoft Entra podczas tworzenia serwera:

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

Udzielanie uprawnień usługi Azure Key Vault do serwera

Użyj polecenia cmdlet Set-AzKeyVaultAccessPolicy, aby udzielić serwerowi dostępu do magazynu kluczy przed użyciem klucza dla funkcji TDE.

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

Aby dodać uprawnienia do serwera w usłudze Managed HSM, dodaj do serwera lokalną rolę RBAC Managed HSM Crypto Service Encryption User. Ta rola umożliwia serwerowi wykonywanie get, wrap key, oraz operacji unwrap key na kluczach w zarządzanym HSM. Aby uzyskać więcej informacji, zobacz Zarządzanie rolami zarządzanego modułu HSM.

Dodawanie klucza usługi Azure Key Vault do serwera i ustawianie funkcji ochrony TDE

Uwaga

W przypadku zarządzanych kluczy HSM użyj polecenia Az.Sql 2.11.1 w wersji programu PowerShell lub nowszej.

Uwaga

Łączna długość nazwy magazynu kluczy i nazwy klucza nie może przekroczyć 94 znaków.

Wskazówka

Używanie wersjonowanych i niewersjonowanych kluczy usługi Azure Key Vault dla szyfrowania TDE

Przy ustawianiu ochrony TDE możesz odwołać się do klucza Azure Key Vault, używając konkretnej wersji klucza lub identyfikatora klucza bez wersji.

W obu przypadkach usługa Azure SQL Database zawsze rozpoznaje i używa najnowszej włączonej wersji klucza w usłudze Azure Key Vault lub zarządzanym module HSM usługi Azure Key Vault. Użyj identyfikatorów kluczy bez wersji, aby uniknąć osadzania określonej wersji klucza w konfiguracji funkcji ochrony TDE.

Identyfikatory kluczy bez wersji są obecnie obsługiwane tylko w przypadku usługi Azure SQL Database.

Przykłady:

  • Identyfikator klucza zawierający określoną wersję

    https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>

  • Identyfikator klucza bez wersji

    https://<key-vault-name>.vault.azure.net/keys/<key-name>

# add the key from Azure 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>

Włącz TDE

Użyj polecenia cmdlet Set-AzSqlDatabaseTransparentDataEncryption, aby włączyć funkcję TDE.

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

Teraz baza danych ma włączone TDE z kluczem szyfrującym w Azure Key Vault.

Sprawdzanie stanu szyfrowania i działania szyfrowania

Użyj Get-AzSqlDatabaseTransparentDataEncryption , aby uzyskać stan szyfrowania dla bazy danych.

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

Przydatne polecenia cmdlet programu PowerShell

  • Użyj polecenia cmdlet Set-AzSqlDatabaseTransparentDataEncryption, aby wyłączyć funkcję TDE.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Użyj polecenia cmdlet Get-AzSqlServerKeyVaultKey , aby zwrócić listę kluczy usługi Azure Key Vault dodanych do serwera.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Użyj polecenia Remove-AzSqlServerKeyVaultKey , aby usunąć klucz usługi Azure Key Vault z serwera.

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

Rozwiązywanie problemów


  • Jeśli nie możesz dodać nowego klucza do serwera lub nie możesz zaktualizować nowego klucza jako modułu TDE Protector, sprawdź następujące warunki:

    • Klucz nie powinien mieć daty ważności.
    • Klucz musi mieć włączone operacje get, zawijanie klucza i odwijanie klucza.

TDE BYOK Azure Synapse Analytics

Zobacz dokumentację TDE BYOK dotyczącą usługi Azure Synapse Analytics w dokumentacji SQL usługi Azure Synapse Analytics. 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.