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 InstanceAzure Synapse Analytics

W tym artykule opisano, jak używać klucza z usługi Azure Key Vault na potrzeby przezroczystego szyfrowania danych (TDE) w usłudze Azure SQL Database lub Azure Synapse Analytics. Aby dowiedzieć się więcej na temat funkcji TDE z integracją usługi Azure Key Vault — obsługa byOK, odwiedź stronę TDE z kluczami zarządzanymi przez klienta w usłudze Azure Key Vault. Jeśli szukasz instrukcji witryny Azure Portal dotyczących włączania funkcji TDE przy użyciu klucza zarządzanego przez klienta z usługi Azure Key Vault, zobacz Tworzenie serwera skonfigurowanego przy użyciu tożsamości zarządzanej przypisanej przez użytkownika i szyfrowania TDE zarządzanego przez klienta.

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.

Uwaga

Usługa Azure SQL obsługuje teraz używanie klucza RSA przechowywanego w zarządzanym module HSM jako funkcji ochrony TDE. Zarządzany moduł HSM usługi Azure Key Vault to w pełni zarządzana, wysoce dostępna, zgodna ze standardami usługa w chmurze, która umożliwia ochronę kluczy kryptograficznych dla aplikacji w chmurze przy użyciu zweryfikowanych modułów HSM fiPS 140-2 poziom 3. Dowiedz się więcej o zarządzanych modułach HSM.

Uwaga

Microsoft Entra ID był wcześniej znany jako Azure Active Directory (Azure AD).

Wymagania wstępne dla PowerShell

  • Musisz mieć subskrypcję platformy Azure i być administratorem tej subskrypcji.
  • [Zalecane, ale opcjonalne] Posiadanie sprzętowego modułu zabezpieczeń (HSM) lub lokalnego magazynu kluczy do tworzenia lokalnej kopii materiału klucza funkcji ochrony 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ć w przyszłości datą i godziną
    • Klucz musi być w stanie Włączone
    • Możliwość wykonywania operacji pobierania, zawijania klucza, odpakowania kluczy
  • Aby użyć zarządzanego klucza HSM, postępuj zgodnie z instrukcjami, aby utworzyć i aktywować zarządzany moduł HSM przy użyciu interfejsu wiersza polecenia platformy Azure

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.

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

Ważne

Moduł Azure Resource Manager (RM) programu PowerShell jest nadal obsługiwany, ale wszystkie przyszłe programowanie dotyczy modułu Az.Sql. Moduł AzureRM będzie nadal otrzymywać poprawki błędów do co najmniej grudnia 2020 r. Argumenty poleceń w module Az i modułach AzureRm są zasadniczo identyczne. Aby uzyskać więcej informacji na temat ich zgodności, zobacz Wprowadzenie do nowego modułu Az programu Azure PowerShell.

Przypisywanie tożsamości firmy Microsoft Entra do serwera

Jeśli masz istniejący serwer, użyj następującego polecenia, aby dodać tożsamość firmy Microsoft Entra do serwera:

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

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

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

Udzielanie uprawnień usługi 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 zarządzanym module HSM, dodaj lokalną rolę RBAC "Zarządzany użytkownik RBAC usługi kryptograficznej modułu HSM". Umożliwi to serwerowi wykonywanie operacji pobierania, zawijania klucza, odpakowywanie kluczy na kluczach w zarządzanym module HSM. Instrukcje dotyczące aprowizowania dostępu do serwera w zarządzanym module HSM

Dodaj klucz usługi Key Vault do serwera i ustaw funkcję ochrony TDE

Uwaga

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

Uwaga

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

Napiwek

Przykładowy identyfikator KeyId z usługi Key Vault: https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h

Przykładowy identyfikator KeyId z zarządzanego modułu 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>

Włączanie funkcji 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 lub magazyn danych ma włączoną funkcję TDE z kluczem szyfrowania w usłudze Key Vault.

Sprawdzanie stanu szyfrowania i działania szyfrowania

Użyj polecenia Get-AzSqlDatabaseTransparentDataEncryption , aby uzyskać stan szyfrowania bazy danych lub magazynu 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 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 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

Sprawdź następujące kwestie, jeśli wystąpi problem:


  • Jeśli nie można dodać nowego klucza do serwera lub nie można zaktualizować nowego klucza jako funkcji ochrony TDE, sprawdź następujące kwestie:
    • Klucz nie powinien mieć daty wygaśnięcia
    • Klucz musi mieć włączone operacje get, wrap key i unwrap key .

Następne kroki