Zarządzanie tożsamością i kluczami dla TDE z kluczami zarządzanymi przez klienta na poziomie bazy danych

Dotyczy:Azure SQL Database

Uwaga

  • Klucz CMK TDE na poziomie bazy danych jest dostępny dla usługi Azure SQL Database (wszystkie edycje SQL Database). Nie jest dostępna dla usługi Azure SQL Managed Instance, SQL Server na serwerach lokalnych, maszyn wirtualnych Azure i usługi Azure Synapse Analytics (dedykowane pule SQL (wcześniej SQL DW)).
  • Ten sam przewodnik można zastosować do skonfigurowania kluczy zarządzanych przez klienta na poziomie bazy danych w tej samej dzierżawie, pomijając parametr identyfikatora klienta federacyjnego. Aby uzyskać więcej informacji na temat kluczy zarządzanych przez klienta na poziomie bazy danych, zobacz Transparent Data Encryption (TDE) z kluczami zarządzanymi przez klienta na poziomie bazy danych.

W tym przewodniku przedstawiono kroki tworzenia, aktualizowania i pobierania bazy danych Azure SQL Database z użyciem przezroczystego szyfrowania danych (TDE) i kluczy zarządzanych przez klienta (CMK) na poziomie bazy danych przy użyciu tożsamości zarządzanej przypisanej przez użytkownika w celu uzyskania dostępu do usługi Azure Key Vault. Usługa Azure Key Vault znajduje się w innej dzierżawie Entra firmy Microsoft niż baza danych Azure SQL Database. Aby uzyskać więcej informacji, zobacz Cross-tenant-customer-managed keys with transparent data encryption (Klucze zarządzane przez klienta między dzierżawami z przezroczystym szyfrowaniem danych).

Uwaga

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

Wymagania wstępne

  • Założono, że masz dwóch dzierżawców systemu Microsoft Entra.
    • Pierwszy składa się z zasobu usługi Azure SQL Database, wielodostępnej aplikacji Firmy Microsoft Entra i tożsamości zarządzanej przypisanej przez użytkownika.
    • Druga dzierżawa zawiera usługę Azure Key Vault.
  • Aby uzyskać kompleksowe instrukcje dotyczące konfigurowania klucza zarządzanego przez wielu dzierżawców i uprawnień RBAC niezbędnych do konfigurowania aplikacji firmy Microsoft Entra i usługi Azure Key Vault, zapoznaj się z jednym z następujących przewodników:
  • Interfejs wiersza polecenia platformy Azure w wersji 2.52.0 lub nowszej.
  • Moduł Az programu PowerShell w wersji 10.3.0 lub nowszej.
  • Uprawnienia RBAC niezbędne dla klucza CMK na poziomie bazy danych są takie same, jak te wymagane dla klucza CMK na poziomie serwera. W szczególności te same uprawnienia RBAC, które mają zastosowanie w przypadku korzystania z usługi Azure Key Vault, tożsamości zarządzanych oraz Cross-tenant CMK dla TDE na poziomie serwera, mają zastosowanie na poziomie bazy danych. Aby uzyskać więcej informacji na temat zarządzania kluczami i zasad dostępu, zobacz Zarządzanie kluczami.

Wymagane zasoby w pierwszej dzierżawie

Na potrzeby tego samouczka zakładamy, że pierwszy lokator należy do niezależnego dostawcy oprogramowania (ISV), a drugi lokator należy do ich klienta. Aby uzyskać więcej informacji na temat tego scenariusza, zobacz Cross-tenant-customer-managed keys with transparent data encryption (Klucze zarządzane przez klienta między dzierżawami z przezroczystym szyfrowaniem danych).

Aby można było skonfigurować funkcję TDE dla usługi Azure SQL Database przy użyciu wielodostępnego klucza zarządzanego, musimy mieć wielodostępną aplikację Microsoft Entra skonfigurowaną przy użyciu tożsamości zarządzanej przypisanej przez użytkownika jako poświadczenia tożsamości federacyjnej dla aplikacji. Postępuj zgodnie z jednym z przewodników w sekcji Wymagania wstępne.

  1. W pierwszej dzierżawie, w której chcesz utworzyć Azure SQL Database, utwórz i skonfiguruj wielodostępną aplikację Microsoft Entra.

  2. Utwórz tożsamość zarządzaną przypisaną przez użytkownika.

  3. Skonfiguruj tożsamość zarządzaną przypisaną przez użytkownika jako poświadczenia tożsamości federacyjnej dla aplikacji wielodzietnikowej.

  4. Zarejestruj nazwę aplikacji i identyfikator aplikacji. Znajdź te informacje w portalu Azure>Microsoft Entra ID>Aplikacje dla przedsiębiorstw i wyszukaj utworzoną aplikację.

Wymagane zasoby dla drugiego najemcy

Uwaga

Moduły usług Azure AD i MSOnline programu PowerShell są wycofane od 30 marca 2024 r. Aby dowiedzieć się więcej, przeczytaj aktualizację dotyczącą wycofywania. Po tej dacie obsługa tych modułów jest ograniczona do pomocy dotyczącej migracji do zestawu MICROSOFT Graph PowerShell SDK i poprawek zabezpieczeń. Przestarzałe moduły będą nadal działać do 30 marca 2025 r.

Zalecamy migrację do programu Microsoft Graph PowerShell w celu interakcji z identyfikatorem Entra firmy Microsoft (dawniej Azure AD). W przypadku typowych pytań dotyczących migracji zapoznaj się z często zadawanymi pytaniami dotyczącymi migracji. Uwaga: wersje 1.0.x usługi MSOnline mogą doświadczyć zakłóceń po 30 czerwca 2024 r.

  1. W drugiej dzierżawie, w której znajduje się Azure Key Vault, utwórz jednostkę usługi (aplikację) przy użyciu identyfikatora aplikacji zarejestrowanej w pierwszej dzierżawie. Oto kilka przykładów, jak zarejestrować aplikację multitenant. Zastąp <TenantID> oraz <ApplicationID> identyfikatorem dzierżawy klienta Tenant ID z Microsoft Entra ID i identyfikatorem aplikacji z aplikacji wielodostępnej.

    • PowerShell:

      Connect-Entra -TenantID <TenantID>
      New-EntraServicePrincipal  -AppId <ApplicationID>
      
    • Interfejs wiersza polecenia platformy Azure:

      az login --tenant <TenantID>
      az ad sp create --id <ApplicationID>
      
  2. Przejdź do portalu Azure, w Microsoft Entra ID, Aplikacje przedsiębiorstwa i wyszukaj utworzoną aplikację.

  3. Utwórz usługę Azure Key Vault , jeśli jej nie masz, i utwórz klucz.

  4. Utwórz lub ustaw zasady dostępu.

    1. Wybierz uprawnienia Pobierz, Zawijaj klucz, Odpakuj klucz w obszarze Uprawnienia klucza podczas tworzenia zasad dostępu.
    2. Wybierz aplikację wielodostępną utworzoną w pierwszym kroku w opcji Podmiot główny podczas tworzenia zasad dostępu.

    Zrzut ekranu przedstawiający menu zasad dostępu usługi Azure Key Vault w witrynie Azure Portal.

  5. Po utworzeniu polityki dostępu i klucza pobierz klucz z Azure Key Vault i zapisz identyfikator klucza.

Tworzenie nowej bazy danych Azure SQL Database z kluczami zarządzanymi przez klienta na poziomie bazy danych

Poniższe przykłady pokazują, jak utworzyć bazę danych w usłudze Azure SQL Database przy użyciu tożsamości zarządzanej przypisanej przez użytkownika oraz jak ustawić międzydzierżawny klucz zarządzany przez klienta na poziomie bazy danych. Potrzebujesz przypisanej przez użytkownika tożsamości zarządzanej, aby skonfigurować klucz zarządzany przez klienta do przejrzystego szyfrowania danych podczas fazy tworzenia bazy danych.

  1. Przejdź do centrum Azure SQL Hub pod adresem aka.ms/azuresqlhub.

  2. W menu zasobów rozwiń sekcję Azure SQL Database i wybierz pozycję Bazy danych SQL.

  3. Z listy rozwijanej + Create wybierz bazę danych SQL.

    Zrzut ekranu z witryny Azure Portal przedstawiający stronę baz danych SQL, przycisk Utwórz i opcję bazy danych SQL.

  4. Na karcie Podstawy formularza Tworzenie bazy danych SQL Database w obszarze Szczegóły projektu wybierz odpowiednią subskrypcję platformy Azure, grupę zasobów i serwer dla bazy danych. Następnie użyj unikatowej nazwy bazy danych. Jeśli nie utworzyłeś serwera logicznego dla usługi Azure SQL Database, zobacz Tworzenie serwera skonfigurowanego z użyciem TDE i kluczem zarządzanym przez klienta (CMK) w systemie między dzierżawcami jako odniesienie.

  5. Po wyświetleniu karty Zabezpieczenia wybierz pozycję Konfiguruj przezroczyste szyfrowanie danych dla klucza poziomu bazy danych.

    Zrzut ekranu witryny Azure Portal i menu Zabezpieczenia podczas tworzenia bazy danych Azure SQL Database.

  6. W menu Transparent Data Encryption wybierz pozycję Klucz zarządzany przez klienta (CMK) na poziomie bazy danych.

    Zrzut ekranu przedstawiający menu Transparent Data Encryption w witrynie Azure Portal.

  7. W przypadku User-Assigned Managed Identity wybierz Konfiguruj, aby włączyć tożsamość bazy danych, oraz Dodaj, aby dodać zarządzaną tożsamość przypisaną przez użytkownika do zasobu, jeśli wymagana tożsamość nie znajduje się na liście w menu Tożsamość. Następnie wybierz pozycję Zastosuj.

    Zrzut ekranu menu Tożsamość w portalu Azure.

    Uwaga

    W tym miejscu możesz skonfigurować tożsamość klienta federacyjnego , jeśli konfigurujesz klucz zarządzania certyfikatami wielodostępnych dla szyfrowania TDE.

  8. W menu Transparent Data Encryption wybierz pozycję Zmień klucz. Wybierz odpowiednią subskrypcję, magazyn kluczy, klucz i wersję klucza zarządzanego przez klienta, która ma być używana na potrzeby funkcji TDE. Wybierz przycisk Wybierz. Po wybraniu klucza możesz również dodać dodatkowe klucze bazy danych zgodnie z potrzebami przy użyciu identyfikatora URI usługi Azure Key Vault (identyfikatora obiektu) w menu Transparent Data Encryption .

    Automatyczne obracanie kluczy można również włączyć na poziomie bazy danych przy użyciu pola wyboru Automatycznie obracanie klucza w menu Transparent Data Encryption .

    Zrzut ekranu przedstawiający menu przezroczystego szyfrowania danych w witrynie Azure Portal odwołujące się do dodawania dodatkowych kluczy.

  9. Wybierz pozycję Zastosuj , aby kontynuować tworzenie bazy danych.

  10. Wybierz pozycję Dalej: Dodatkowe ustawienia.

  11. Wybierz pozycję Dalej: Tagi.

  12. Rozważ użycie tagów platformy Azure. Na przykład tag "Właściciel" lub "CreatedBy", aby zidentyfikować, kto utworzył zasób, oraz tag Środowisko w celu określenia, czy ten zasób znajduje się w środowisku produkcyjnym, programistycznym itp. Aby uzyskać więcej informacji, zobacz Develop your naming and tagging strategy for Azure resources (Opracowywanie strategii nazewnictwa i tagowania zasobów platformy Azure).

  13. Wybierz opcję Recenzja i utwórz.

  14. Na stronie Przeglądanie i tworzenie, po dokonaniu przeglądu, wybierz Utwórz.

Uwaga

Tworzenie bazy danych zakończy się niepowodzeniem, jeśli tożsamość zarządzana przypisana przez użytkownika nie ma włączonych odpowiednich uprawnień w magazynie kluczy. Tożsamość zarządzana przypisana przez użytkownika będzie potrzebować uprawnień "Get", "wrapKey" i "unwrapKey" w Key Vault. Aby uzyskać więcej informacji, zobacz Tożsamości zarządzane na potrzeby przezroczystego szyfrowania danych przy użyciu klucza zarządzanego przez klienta.

Aktualizowanie istniejącej bazy danych Azure SQL Database przy użyciu kluczy zarządzanych przez klienta na poziomie bazy danych

Poniższe przykłady pokazują, jak zaktualizować istniejącą bazę danych w usłudze Azure SQL Database przy użyciu tożsamości zarządzanej przypisanej przez użytkownika oraz jak ustawić międzydzierżawny klucz zarządzany przez klienta na poziomie bazy danych. Potrzebujesz przypisanej przez użytkownika tożsamości zarządzanej, aby skonfigurować klucz zarządzany przez klienta do przejrzystego szyfrowania danych.

Aby uzyskać informacje na temat instalowania bieżącej wersji interfejsu wiersza polecenia platformy Azure, zobacz Artykuł Instalowanie interfejsu wiersza polecenia platformy Azure.

Zaktualizuj bazę danych skonfigurowaną z przypisaną przez użytkownika tożsamością zarządzaną i międzydzierżawczo zarządzaną funkcją TDE, korzystając z polecenia az sql db create. Identyfikator klucza z drugiego najemcy może być wykorzystany w encryption-protector polu. W polu można użyć identyfikatora aplikacji wielodostępnej federated-client-id .

Aby uzyskać identyfikator zasobu tożsamości zarządzanej przypisanej przez użytkownika, wyszukaj pozycję Tożsamości zarządzane w witrynie Azure Portal. Znajdź tożsamość zarządzaną i przejdź do Właściwości. Przykład identyfikatora zasobu UMI Resource ID wygląda tak: /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>. Parametr --encryption-protector-auto-rotation może służyć do włączania automatycznej rotacji kluczy na poziomie bazy danych.

az sql db update --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --sample-name AdventureWorksLT --edition GeneralPurpose --compute-model Serverless --family Gen5 --capacity 2 --assign-identity --user-assigned-identity-id $identityid --encryption-protector $keyid --federated-client-id $federatedclientid --keys $keys --keys-to-remove $keysToRemove --encryption-protector-auto-rotation True

Lista $keys to oddzielona spacją lista kluczy, które mają zostać dodane do bazy danych i $keysToRemove jest oddzieloną spacją listy kluczy, które muszą zostać usunięte z bazy danych

$keys = '"https://yourvault.vault.azure.net/keys/yourkey1/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey2/ fd021f84a0d94d43b8ef33154bca0000"'

$keysToRemove = '"https://yourvault.vault.azure.net/keys/yourkey3/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey4/fd021f84a0d94d43b8ef33154bca0000"'

Wyświetlanie ustawień klucza zarządzanego przez klienta na poziomie bazy danych w usłudze Azure SQL Database

Poniżej przedstawiono przykłady pobierania kluczy zarządzanych przez klienta, dotyczących poziomu bazy danych, dla danej bazy danych. Zasób usługi Microsoft.Sql/servers/databases ARM domyślnie pokazuje tylko funkcję ochrony TDE i tożsamość zarządzaną skonfigurowaną w bazie danych. Aby rozwinąć pełną listę kluczy, użyj parametru . -ExpandKeyList Ponadto filtry, takie jak -KeysFilter "current" i wartość punktu w czasie (na przykład 2023-01-01), mogą służyć do pobierania bieżących kluczy używanych i kluczy używanych w przeszłości w określonym punkcie w czasie. Te filtry są obsługiwane tylko dla poszczególnych zapytań bazy danych, a nie dla zapytań na poziomie serwera.

Aby uzyskać informacje na temat instalowania bieżącej wersji interfejsu wiersza polecenia platformy Azure, zobacz Artykuł Instalowanie interfejsu wiersza polecenia platformy Azure.

# Retrieve the basic database level customer-managed key settings from a database
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase

# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys

# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter current

# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter 01-01-2015

# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
az sql db list --resource-group $resourceGroupName --server $serverName

Wyświetlanie listy wszystkich kluczy na serwerze logicznym

Aby pobrać listę wszystkich kluczy (a nie tylko głównego protektora) używanego przez każdą bazę danych na serwerze, każda z nich musi być indywidualnie odpytywana według filtrów kluczy. Poniżej przedstawiono przykład zapytania programu PowerShell, aby wyświetlić listę poszczególnych kluczy na serwerze logicznym.

Użyj polecenia cmdlet Get-AzSqlDatabase.

$dbs = Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName>
foreach ($db in $dbs)
{
Get-AzSqlDatabase -DatabaseName $db.DatabaseName -ServerName $db.ServerName -ResourceGroupName $db.ResourceGroupName -ExpandKeyList
}

Ponowna walidacja klucza zarządzanego przez klienta na poziomie bazy danych w Azure SQL Database

Jeśli ochrona TDE jest niedostępna, jak opisano w przezroczystym szyfrowaniu danych Azure SQL z kluczem zarządzanym przez klienta, baza danych staje się niedostępna. Po naprawieniu dostępu do klucza użyj operacji revalidate key, aby ponownie udostępnić bazę danych. Poniższe polecenia stanowią przykłady.

Aby uzyskać informacje na temat instalowania bieżącej wersji interfejsu wiersza polecenia platformy Azure, zobacz Artykuł Instalowanie interfejsu wiersza polecenia platformy Azure.

az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase

Przywracanie klucza zarządzanego przez klienta na poziomie bazy danych w usłudze Azure SQL Database

Bazę danych skonfigurowaną z kluczem cmK na poziomie bazy danych można przywrócić do szyfrowania na poziomie serwera, jeśli serwer jest skonfigurowany przy użyciu klucza zarządzanego przez usługę przy użyciu następujących poleceń.

Aby uzyskać informacje na temat instalowania bieżącej wersji interfejsu wiersza polecenia platformy Azure, zobacz Artykuł Instalowanie interfejsu wiersza polecenia platformy Azure.

az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase