Konfigurowanie kluczy zarządzanych przez klienta dla istniejącego konta usługi Azure Cosmos DB za pomocą usługi Azure Key Vault

DOTYCZY: Nosql Mongodb Cassandra Gremlin Tabeli

Włączenie drugiej warstwy szyfrowania danych magazynowanych przy użyciu kluczy zarządzanych przez klienta podczas tworzenia nowego konta usługi Azure Cosmos DB zostało od jakiegoś czasu ogólnie dostępne. W ramach naturalnego następnego kroku mamy teraz możliwość włączenia klucza zarządzanego przez klienta na istniejących kontach usługi Azure Cosmos DB.

Ta funkcja eliminuje konieczność migracji danych do nowego konta w celu włączenia klucza zarządzanego przez klienta. Pomaga to zwiększyć poziom bezpieczeństwa i zgodności klientów.

Włączenie klucza zarządzanego przez klienta rozpoczyna proces asynchroniczny w celu zaszyfrowania wszystkich istniejących danych na koncie, podczas gdy nowe dane przychodzące są szyfrowane przed utrwaleniem. Nie trzeba czekać na pomyślną operację asynchroniczną. Proces włączania zużywa nieużywane/zapasowe jednostki RU, dzięki czemu nie ma wpływu na obciążenia odczytu/zapisu. Możesz zapoznać się z tym linkiem do planowania pojemności po zaszyfrowaniu konta.

Rozpocznij od włączenia klucza zarządzanego przez klienta na istniejących kontach

Ważne

Dokładnie zapoznaj się z sekcją wymagań wstępnych. Są to ważne zagadnienia.

Wymagania wstępne

Wszystkie kroki wymagań wstępnych wymaganych podczas konfigurowania kluczy zarządzanych przez klienta dla nowych kont mają zastosowanie do włączenia klucza zarządzanego przez klienta na istniejącym koncie. Zapoznaj się z krokami tutaj

Należy pamiętać, że włączenie szyfrowania na koncie usługi Azure Cosmos DB spowoduje dodanie małego obciążenia do identyfikatora dokumentu, ograniczając maksymalny rozmiar identyfikatora dokumentu do 990 bajtów zamiast 1024 bajtów. Jeśli twoje konto ma jakiekolwiek dokumenty z identyfikatorami większymi niż 990 bajtów, proces szyfrowania zakończy się niepowodzeniem, dopóki te dokumenty nie zostaną usunięte.

Aby sprawdzić, czy twoje konto jest zgodne, możesz użyć udostępnionej aplikacji konsolowej hostowanej tutaj do skanowania konta. Upewnij się, że używasz punktu końcowego z właściwości konta "sqlEndpoint", niezależnie od wybranego interfejsu API.

Jeśli chcesz wyłączyć walidację po stronie serwera podczas migracji, skontaktuj się z pomocą techniczną.

Kroki włączania klucza zarządzanego przez klienta na istniejącym koncie

Aby włączyć klucz cmK na istniejącym koncie, zaktualizuj konto przy użyciu szablonu usługi ARM, ustawiając identyfikator klucza usługi Key Vault we właściwości keyVaultKeyUri — tak jak podczas włączania klucza zarządzania kluczami na nowym koncie. Ten krok można wykonać, wykonując wywołanie PATCH z następującym ładunkiem:

    {
        "properties": {
        "keyVaultKeyUri": "<key-vault-key-uri>"
        }
    }

Dane wyjściowe tego polecenia interfejsu wiersza polecenia umożliwiającego włączenie klucza zarządzanego przez klienta czeka na ukończenie szyfrowania danych.

    az cosmosdb update --name "testaccount" --resource-group "testrg" --key-uri "https://keyvaultname.vault.azure.net/keys/key1"

Kroki włączania klucza zarządzanego przez klienta na istniejącym koncie usługi Azure Cosmos DB przy użyciu ciągłego tworzenia kopii zapasowej lub konta magazynu analitycznego

Aby włączyć klucz zarządzania kluczami na istniejącym koncie, na którym włączono ciągłą kopię zapasową i przywracanie do punktu w czasie, należy wykonać kilka dodatkowych kroków. Wykonaj krok 1 do kroku 5, a następnie postępuj zgodnie z instrukcjami, aby włączyć klucz cmK na istniejącym koncie.

Uwaga

Tożsamość przypisana przez system i tryb ciągłej kopii zapasowej jest obecnie w publicznej wersji zapoznawczej i może ulec zmianie w przyszłości. Obecnie tylko tożsamość zarządzana przypisana przez użytkownika jest obsługiwana w przypadku włączania klucza zarządzanego na kontach ciągłej kopii zapasowej.

  1. Konfigurowanie tożsamości zarządzanej na koncie usługi Cosmos Konfigurowanie tożsamości zarządzanych przy użyciu identyfikatora Entra firmy Microsoft dla konta usługi Azure Cosmos DB

  2. Zaktualizuj konto usługi Cosmos, aby ustawić tożsamość domyślną tak, aby wskazywała tożsamość zarządzaną dodaną w poprzednim kroku

    W przypadku tożsamości zarządzanej przez system:

    az cosmosdb update --resource-group $resourceGroupName  --name $accountName  --default-identity "SystemAssignedIdentity=subscriptions/00000000-0000-0000-0000-00000000/resourcegroups/MyRG/providers/Microsoft.ManagedIdentity/ systemAssignedIdentities/MyID"
    

    W przypadku tożsamości zarządzanej przez użytkownika:

    az cosmosdb update -n $sourceAccountName -g $resourceGroupName --default-identity "UserAssignedIdentity=subscriptions/00000000-0000-0000-0000-00000000/resourcegroups/MyRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyID"
    
  3. Skonfiguruj usługę Keyvault zgodnie z podanymi w dokumentacji tutaj

  4. Dodaj zasady dostępu w usłudze keyvault dla domyślnej tożsamości ustawionej w poprzednim kroku

  5. Zaktualizuj konto usługi Cosmos, aby ustawić identyfikator URI usługi Keyvault. Ta aktualizacja wyzwala wyzwalacze włączania klucza zarządzanego przez klienta na koncie

    az cosmosdb update --name $accountName --resource-group $resourceGroupName --key-uri $keyVaultKeyURI  
    

Znane ograniczenia

  • Włączanie klucza zarządzanego przez klienta jest dostępne tylko na poziomie konta usługi Cosmos DB, a nie w kolekcjach.
  • Nie obsługujemy włączania klucza zarządzanego przez klienta na istniejących kontach usługi Azure Cosmos DB dla systemu Apache Cassandra.
  • Nie obsługujemy włączania klucza cmK na istniejących kontach, które są włączone dla zmaterializowanych widoków i wszystkich wersji oraz usuwa tryb zestawienia zmian.
  • Przed włączeniem klucza cmK upewnij się, że konto nie może mieć dokumentów z dużymi identyfikatorami większymi niż 990 bajtów. Jeśli nie, otrzymasz błąd z powodu maksymalnego obsługiwanego limitu 1024 bajtów po szyfrowaniu.
  • Podczas szyfrowania istniejących danych akcje płaszczyzny sterowania, takie jak "dodaj region" są blokowane. Te akcje są odblokowane i mogą być używane bezpośrednio po zakończeniu szyfrowania.

Monitorowanie postępu wynikowego szyfrowania

Włączenie klucza zarządzanego przez klienta na istniejącym koncie jest operacją asynchroniczną, która uruchamia zadanie w tle, które szyfruje wszystkie istniejące dane. W związku z tym żądanie interfejsu API REST umożliwiające włączenie klucza zarządzanego przez klienta zapewnia w odpowiedzi adres URL "Azure-AsyncOperation". Sondowanie tego adresu URL przy użyciu żądań GET zwraca stan ogólnej operacji, co ostatecznie powiedzie się. Ten mechanizm jest w pełni opisany w tym artykule.

Konto usługi Cosmos DB może nadal być używane, a dane mogą być nadal zapisywane bez oczekiwania na pomyślną operację asynchroniczną. Polecenie interfejsu wiersza polecenia umożliwiające włączenie klucza zarządzanego przez klienta czeka na ukończenie szyfrowania danych.

Jeśli masz dodatkowe pytania, skontaktuj się z pomoc techniczna firmy Microsoft.

Często zadawane pytania

Jakie są czynniki, od których zależy czas szyfrowania?

Włączenie klucza zarządzanego przez klienta jest operacją asynchroniczną i zależy od dostępności wystarczających nieużywanych jednostek RU. Zalecamy włączenie klucza zarządzanego przez klienta w godzinach poza godzinami szczytu, a jeśli ma to zastosowanie, możesz zwiększyć liczbę jednostek RU przed przekazaniem, aby przyspieszyć szyfrowanie. Jest to również bezpośrednia funkcja rozmiaru danych.

Czy musimy samodzielnie przygotować się do przestoju?

Włączenie klucza zarządzanego przez klienta rozpoczyna proces asynchroniczny w celu zaszyfrowania wszystkich danych. Nie trzeba czekać na pomyślną operację asynchroniczną. Konto usługi Azure Cosmos DB jest dostępne dla operacji odczytu i zapisu i nie ma potrzeby przestoju.

Czy można podnieść ru po wyzwoleniu klucza zarządzanego przez klienta?

Zaleca się, aby podnieść jednostki RU przed wyzwoleniem klucza zarządzanego przez klienta. Po wyzwoleniu klucza zarządzanego przez klienta niektóre operacje płaszczyzny sterowania są blokowane do momentu ukończenia szyfrowania. Ten blok może uniemożliwić użytkownikowi zwiększenie liczby jednostek ŻĄDANIA po wyzwoleniu klucza zarządzanego przez klienta.

Czy istnieje sposób odwrócenia szyfrowania lub wyłączenia szyfrowania po wyzwoleniu klucza zarządzanego przez klienta?

Po wyzwoleniu procesu szyfrowania danych przy użyciu klucza zarządzanego przez klienta nie można go przywrócić.

Czy włączenie szyfrowania przy użyciu klucza zarządzanego przez klienta na istniejącym koncie ma wpływ na rozmiar danych i odczyt/zapis?

Jak można się spodziewać, włączenie klucza zarządzanego przez klienta ma niewielki wzrost rozmiaru danych i jednostek RU w celu uwzględnienia dodatkowego przetwarzania szyfrowania/odszyfrowywania.

Czy należy utworzyć kopię zapasową danych przed włączeniem klucza zarządzanego przez klienta?

Włączenie klucza zarządzanego przez klienta nie stanowi żadnego zagrożenia utraty danych.

Czy stare kopie zapasowe są tworzone jako część okresowych kopii zapasowych?

L.p. Stare okresowe kopie zapasowe nie są szyfrowane. Nowo wygenerowane kopie zapasowe po włączeniu klucza zarządzanego przez klienta są szyfrowane.

Jakie jest zachowanie istniejących kont, które są włączone dla ciągłej kopii zapasowej?

Po włączeniu klucza cmK szyfrowanie jest również włączone dla ciągłych kopii zapasowych. Po włączeniu klucza cmK wszystkie przywrócone konta będą włączone.

Jakie jest zachowanie, jeśli klucz cmK jest włączony na koncie z włączoną usługą PITR i przywracamy konto do czasu wyłączenia klucza zarządzanego przez klienta?

W takim przypadku klucz cmK jest jawnie włączony na przywróconym koncie docelowym z następujących powodów:

  • Po włączeniu klucza zarządzanego przez klienta na koncie nie ma możliwości wyłączenia klucza zarządzanego przez klienta.
  • To zachowanie jest zgodne z bieżącym projektem przywracania konta z obsługą klucza zarządzanego przez klienta z okresową kopią zapasową

Co się stanie, gdy użytkownik odwoła klucz podczas migracji klucza zarządzanego przez klienta?

Stan klucza jest sprawdzany po wyzwoleniu szyfrowania klucza zarządzanego przez klienta. Jeśli klucz w usłudze Azure Key Vault jest w dobrej kondycji, szyfrowanie jest uruchamiane i proces kończy się bez dalszej kontroli. Nawet jeśli klucz zostanie odwołany lub magazyn kluczy platformy Azure zostanie usunięty lub niedostępny, proces szyfrowania zakończy się pomyślnie.

Czy można włączyć szyfrowanie CMK na istniejącym koncie produkcyjnym?

Tak. Dokładnie zapoznaj się z sekcją wymagań wstępnych. Zalecamy przetestowanie wszystkich scenariuszy najpierw na kontach nieprodukcyjnych, a gdy wszystko będzie wygodne, możesz rozważyć konta produkcyjne.

Następne kroki