Udostępnij przez


Szyfrowanie danych usługi App Configuration przy użyciu kluczy zarządzanych przez klienta

Azure App Configuration szyfruje poufne informacje w stanie spoczynku. Korzystanie z kluczy zarządzanych przez klienta zapewnia rozszerzoną ochronę danych, zapewniając większą kontrolę nad kluczami szyfrowania. W przypadku korzystania z szyfrowania kluczy zarządzanych wszystkie poufne informacje w usłudze App Configuration są szyfrowane przy użyciu podanego klucza usługi Azure Key Vault. W związku z tym można obrócić klucz szyfrowania na żądanie. Możesz również odwołać dostęp sklepu konfiguracji aplikacji (App Configuration store) do poufnych informacji, cofając jego dostęp do klucza.

Omówienie

Usługa App Configuration szyfruje poufne informacje przechowywane z użyciem 256-bitowego klucza szyfrowania zaawansowanego standardu szyfrowania (AES) dostarczonego przez firmę Microsoft. Każdy magazyn konfiguracji aplikacji ma własny klucz szyfrowania, który jest zarządzany przez system i używany do szyfrowania poufnych informacji. Informacje poufne obejmują wartości występujące w parach klucz-wartość.

W przypadku korzystania z klucza zarządzanego przez klienta w usłudze App Configuration mają miejsce następujące zdarzenia:

  • Usługa App Configuration używa tożsamości zarządzanej przypisanej do sklepu App Configuration do uwierzytelniania przy użyciu Microsoft Entra ID.
  • Tożsamość zarządzana wywołuje usługę Key Vault i opakowuje klucz szyfrowania magazynu App Configuration.
  • Opakowany klucz szyfrowania jest przechowywany.
  • Odszyfrowany klucz szyfrowania jest buforowany w ramach usługi App Configuration przez jedną godzinę.
  • Co godzinę usługa App Configuration odświeża rozpakowaną wersję klucza szyfrowania sklepu App Configuration.

Ten proces zapewnia dostępność w normalnych warunkach operacyjnych.

Ważne

Po spełnieniu któregokolwiek z następujących warunków nie można odszyfrować poufnych informacji przechowywanych w magazynie App Configuration:

  • Tożsamość przypisana do sklepu App Configuration nie jest już autoryzowana do rozszyfrowania klucza szyfrowania sklepu.
  • Klucz zarządzany jest trwale usuwany.
  • Wersja klucza zarządzanego, która jest używana, wygasa.

Możesz użyć funkcji usuwania nietrwałego w usłudze Key Vault, aby zminimalizować ryzyko przypadkowego usunięcia klucza szyfrowania. Aby zapobiec możliwości wygaśnięcia bazowego klucza zarządzanego, można pominąć wersję klucza podczas konfigurowania szyfrowania kluczem zarządzanym oraz ustawić automatyczną rotację klucza w usłudze Key Vault. Aby uzyskać więcej informacji, zobacz Rotacja kluczy w dalszej części tego artykułu.

Wymagania

Do włączenia funkcji klucza zarządzanego przez klienta w usłudze App Configuration wymagane są następujące składniki. W tym artykule pokazano, jak skonfigurować te składniki.

  • Magazyn App Configuration w warstwie standardowej lub premium.
  • Wystąpienie usługi Key Vault z włączoną funkcją usuwania nietrwałego i ochrony przed przeczyszczeniem.
  • Klucz w magazynie kluczy spełniający następujące wymagania:
    • Używa szyfrowania Rivest-Shamir-Adleman (RSA) lub szyfrowania RSA, które używa sprzętowego modułu zabezpieczeń (RSA-HSM).
    • Nie wygasła.
    • Jest ona włączona.
    • Ma włączone możliwości zawijania i odpakowywania.

Po przeczytaniu tego artykułu dowiesz się, jak skonfigurować te zasoby, a następnie przeprowadzimy Cię przez kroki, aby magazyn App Configuration mógł korzystać z klucza usługi Key Vault.

  1. Przypisz tożsamość zarządzaną do repozytorium App Configuration.
  2. Udziel uprawnień tożsamości użytkownika, aby mogła uzyskać dostęp do klucza Azure Key Vault:
    • W przypadku magazynów kluczy korzystających z kontroli dostępu opartej na rolach (RBAC) platformy Azure przypisz tożsamość roli użytkownika szyfrowania usługi kryptograficznej usługi Key Vault w docelowym magazynie kluczy.
    • W przypadku magazynów kluczy, które używają autoryzacji na podstawie polityk dostępu, należy przyznać tożsamości uprawnienia GET, WRAP oraz UNWRAP w polityce dostępu docelowego magazynu kluczy.

Włączanie szyfrowania kluczy zarządzanych przez klienta

Aby użyć szyfrowania kluczy zarządzanych przez klienta, wykonaj kroki opisane w poniższych sekcjach.

Tworzenie zasobów

  1. Utwórz magazyn konfiguracji aplikacji w warstwie Standard lub Premium, jeśli jeszcze tego nie zrobiłeś. Aby uzyskać instrukcje, zobacz Szybki Start: Utwórz sklep Azure App Configuration.

  2. Uruchom następujące polecenie Azure CLI, aby utworzyć wystąpienie usługi Key Vault z włączoną ochroną usuwania. Domyślnie aktywne jest miękkie usuwanie. Zastąp <vault-name> i <resource-group-name> własnymi unikatowymi wartościami.

    az keyvault create --name <vault-name> --resource-group <resource-group-name> --enable-purge-protection
    

    Dane wyjściowe tego polecenia zawierają identyfikator zasobu id, magazynu kluczy. Zwróć uwagę na jego wartość, która ma następujący format:

    /subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<vault-name>

  3. Użyj CLI platformy Azure, aby przypisać sobie dostęp do magazynu kluczy, który potrzebujesz do utworzenia klucza. Używane polecenie zależy od systemu autoryzacji używanego przez magazyn kluczy. Dostępne są dwa modele:

    • Model platformy Azure RBAC
    • Model zasad dostępu

    W przypadku obu modeli potrzebny jest identyfikator obiektu użytkownika, aby uruchomić polecenie . Identyfikator obiektu użytkownika można znaleźć przy użyciu jednej z następujących metod:

    • az ad user show --id <user-principal-name> Użyj polecenia w interfejsie wiersza polecenia platformy Azure, gdzie <user-principal-name> jest główna nazwa użytkownika (UPN).

    • Użyj portalu Azure:

      1. Wybierz pozycję Microsoft Entra ID, a następnie wybierz pozycję Zarządzaj użytkownikami>.
      2. Wprowadź swoją nazwę w polu wyszukiwania, a następnie wybierz swoją nazwę użytkownika w wynikach.
      3. Skopiuj wartość Identyfikator obiektu .

    Przypisz sobie dostęp, uruchamiając polecenie odpowiednie dla systemu autoryzacji używanego przez twój magazyn kluczy.

    Zastąp symbole zastępcze następującymi wartościami:

    • W przypadku <user-object-ID> użyj właśnie znalezionego identyfikatora obiektu.
    • W przypadku <role>, użyj roli takiej jak Key Vault Crypto Officer, która zapewnia dostęp potrzebny do utworzenia klucza. Ujmij rolę w cudzysłowie.
    • W przypadku <vault-resource-ID> użyj identyfikatora zasobu magazynu kluczy z poprzedniego kroku.
    az role assignment create --assignee <user-object-ID> --role <role> --scope <vault-resource-ID>
    
  4. Utwórz klucz usługi Key Vault, uruchamiając następujące polecenie. Zastąp symbole zastępcze następującymi wartościami:

    • W przypadku <key-name> użyj własnej unikatowej wartości.
    • Dla elementu <key-type>:
      • Użyj RSA do szyfrowania RSA.
      • Użyj RSA-HSM do szyfrowania RSA-HSM. RSA-HSM szyfrowanie jest dostępne tylko w warstwie Premium.
    • W przypadku <vault-name> użyj nazwy magazynu kluczy z kroku 2.
    az keyvault key create --name <key-name> --kty <key-type> --vault-name <vault-name>
    

    Dane wyjściowe tego polecenia zawierają identyfikator klucza , kidwygenerowanego klucza. Zwróć uwagę na jego wartość, która ma następujący format:

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

    Identyfikator klucza zawiera następujące składniki:

    • Identyfikator URI magazynu kluczy: https://<vault-name>.vault.azure.net
    • Nazwa klucza magazynu kluczy: <key-name>
    • Wersja klucza magazynu kluczy: <key-version>
  5. Utwórz tożsamość zarządzaną dla magazynu App Configuration, korzystając z jednej z podanych opcji:

    • Aby utworzyć tożsamość zarządzaną przypisaną przez użytkownika, wykonaj kroki opisane w artykule Dodawanie tożsamości przypisanej przez użytkownika. Zauważ wartości właściwości clientId i principalId tożsamości.

    • Aby utworzyć tożsamość zarządzaną przypisaną przez system, użyj następującego polecenia interfejsu wiersza polecenia platformy Azure. Zastąp symbole zastępcze następującymi wartościami:

      • W przypadku <App-Configuration-store-name> użyj nazwy magazynu App Configuration z kroku 1.
      • W przypadku <resource-group-name> użyj nazwy grupy zasobów zawierającej magazyn App Configuration.
    az appconfig identity assign --name <App-Configuration-store-name> --resource-group <resource-group-name> --identities [system]
    

    Dane wyjściowe tego polecenia obejmują identyfikator główny, principalId, i identyfikator dzierżawy, tenantId, tożsamości przypisanej przez system. Zanotuj wartość właściwości principalID.

    {
        "principalId": <principal-ID>,
        "tenantId": <tenant-ID>,
        "type": "SystemAssigned",
        "userAssignedIdentities": null
    }
    

Udzielanie dostępu i włączanie klucza

Tożsamość zarządzana magazynu usługi App Configuration potrzebuje dostępu do klucza w celu sprawdzania ważności klucza, szyfrowania i odszyfrowywania. W szczególności tożsamość zarządzana wymaga dostępu do akcji GET, WRAP i UNWRAP dla kluczy.

  • W przypadku magazynów kluczy korzystających z kontroli dostępu opartej na rolach platformy Azure można udzielić tych uprawnień, przypisując rolę użytkownika szyfrowania usługi Kryptograficznej usługi Key Vault do tożsamości zarządzanej.
  • W przypadku magazynów kluczy korzystających z autoryzacji zasad dostępu można ustawić politykę dla tych uprawnień dotyczących kluczy.
  1. Przyznaj dostęp tożsamości zarządzanej do klucza zarządzanego przy użyciu polecenia odpowiedniego dla systemu autoryzacji skrytki kluczy. W obu przypadkach zastąp <managed-identity-principal-ID> głównym identyfikatorem z poprzedniego kroku.

    Zastąp <key-vault-resource-id> ID zasobu magazynu kluczy z kroku 2 w sekcji Tworzenie zasobów.

    az role assignment create --assignee <managed-identity-principal-ID> --role "Key Vault Crypto Service Encryption User" --scope <key-vault-resource-id>
    
  2. Włącz funkcję klucza zarządzanego przez użytkownika w usłudze, uruchamiając jedno z następujących poleceń Azure CLI. Zastąp symbole zastępcze następującymi wartościami:

    • W przypadku <resource-group-name> użyj nazwy grupy zasobów zawierającej magazyn App Configuration.
    • W polu <App-Configuration-store-name>użyj nazwy sklepu App Configuration.
    • Dla <key-name> i <key-vault-URI>, użyj wartości z czwartego kroku sekcji Tworzenie zasobów.

    Domyślnie polecenie używa przypisanej przez system tożsamości zarządzanej do uwierzytelniania w Azure Key Vault.

    • Jeśli używasz przypisanej przez system tożsamości zarządzanej w celu uzyskania dostępu do klucza zarządzanego przez klienta, uruchom następujące polecenie:

      az appconfig update -g <resource-group-name> -n <App-Configuration-store-name> --encryption-key-name <key-name> --encryption-key-vault <key-vault-URI>
      
    • Jeśli używasz tożsamości zarządzanej przypisanej przez użytkownika do uzyskiwania dostępu do klucza zarządzanego przez klienta, uruchom następujące polecenie, które jawnie określa identyfikator klienta. Zastąp <user-assigned-managed-identity-client-ID> element wartością clientId z kroku 5 sekcji Tworzenie zasobów.

      az appconfig update -g <resource-group-name> -n <App-Configuration-store-name> --encryption-key-name <key-name> --encryption-key-vault <key-vault-URI> --identity-client-id <user-assigned-managed-identity-client-ID>
      

Magazyn usługi App Configuration jest teraz skonfigurowany do używania klucza zarządzanego przez klienta przechowywanego w usłudze Key Vault.

Wyłączanie szyfrowania kluczy zarządzanych przez klienta

Po wyłączeniu szyfrowania kluczy zarządzanych przez klienta magazyn App Configuration powraca do używania kluczy zarządzanych przez firmę Microsoft. Jednak przed przywróceniem kluczy zarządzanych przez firmę Microsoft usługa App Configuration używa bieżącego klucza do odszyfrowania wszystkich istniejących danych. Jeśli bieżący klucz wygasł lub dostęp do niego zostanie odwołany, musisz najpierw przywrócić dostęp do tego klucza.

Uwaga

Przed skonfigurowaniem magazynu usługi App Configuration do używania klucza zarządzanego przez firmę Microsoft zamiast klucza zarządzanego przez klienta do szyfrowania upewnij się, że ta zmiana jest zgodna z zasadami zabezpieczeń i wymaganiami dotyczącymi zgodności w organizacji.

  1. Upewnij się, że bieżący klucz zarządzany przez klienta jest prawidłowy i operacyjny.

  2. Użyj następującego polecenia Azure CLI, aby zaktualizować magazyn App Configuration, usuwając konfigurację klucza zarządzanego przez klienta. Zastąp <resource-group-name> i <App-Configuration-store-name> wartościami w danym środowisku.

    az appconfig update -g <resource-group-name> -n <App-Configuration-store-name> --encryption-key-name ""
    
  3. Aby sprawdzić, czy konfiguracja klucza zarządzanego przez klienta jest wyłączona, sprawdź właściwości magazynu usługi App Configuration.

    az appconfig show -g <resource-group-name> -n <App-Configuration-store-name> --query "encryption"
    

    W danych wyjściowych tego polecenia encryption.keyVaultProperties właściwość powinna mieć wartość null.

Magazyn usługi App Configuration jest teraz skonfigurowany do używania kluczy zarządzanych przez firmę Microsoft do szyfrowania.

Odwołanie dostępu

Po włączeniu funkcji klucza zarządzanego przez klienta w sklepie App Configuration, kontrolujesz dostęp usługi do Twoich poufnych informacji. Klucz zarządzany służy jako główny klucz szyfrowania.

Możesz odwołać dostęp sklepu usługi App Configuration do klucza zarządzanego, zmieniając politykę dostępu do magazynu kluczy. Po odwołaniu tego dostępu usługa App Configuration utraci możliwość odszyfrowania danych użytkownika w ciągu jednej godziny. Sklep App Configuration w tym momencie zabrania wszystkich prób dostępu.

Ta sytuacja można odzyskać, ponownie udzielając usłudze App Configuration Service dostępu do klucza zarządzanego. W ciągu jednej godziny usługa App Configuration może odszyfrować dane użytkownika i działać w normalnych warunkach.

Uwaga

Wszystkie dane usługi App Configuration są przechowywane przez maksymalnie 24 godziny w izolowanej kopii zapasowej. Te dane obejmują rozpakowany klucz szyfrowania. Te dane nie są natychmiast dostępne dla zespołu usług ani usług. Podczas przywracania awaryjnego usługa App Configuration ponownie cofa dostęp do danych klucza zarządzanego.

Rotacja kluczy

Podczas konfigurowania klucza zarządzanego przez klienta w magazynie usługi App Configuration należy okresowo obracać ten klucz, aby uniknąć jego wygaśnięcia. W przypadku pomyślnej rotacji kluczy bieżący klucz musi być prawidłowy i operacyjny. Jeśli bieżący klucz wygasł lub jeśli dostęp do usługi App Configuration do niego zostanie odwołany, magazyn usługi App Configuration nie może odszyfrować danych i rotacja zakończy się niepowodzeniem.

Automatyczne obracanie

Najlepszym rozwiązaniem jest skonfigurowanie automatycznej rotacji w usłudze Key Vault dla klucza zarządzanego przez klienta. Obracanie kluczy często poprawia bezpieczeństwo. A jeśli używasz rotacji automatycznej, unikasz utraty dostępu z powodu braku rotacji. Można również wyeliminować konieczność ręcznego obracania kluczy szyfrowania.

Klucze bez wersji

Inną dobrą praktyką w przypadku automatycznej rotacji w szyfrowaniu kluczy zarządzanych przez klienta jest pominięcie wersji klucza w Key Vault. Jeśli nie skonfigurujesz określonej wersji klucza, usługa App Configuration może przejść do najnowszej wersji klucza po jej automatycznym obróceniu. W rezultacie magazyn konfiguracji aplikacji unika utraty dostępu, gdy wygaśnie aktualnie używana wersja zarządzanego klucza.

Podczas konfigurowania szyfrowania kluczy zarządzanych przez klienta należy podać identyfikator klucza w magazynie kluczy. Identyfikator klucza magazynu kluczy może mieć następujące formaty:

  • Identyfikator klucza bez wersji: https://<vault-name>.vault.azure.net/keys/<key-name>
  • Identyfikator wersji klucza (niezalecane): https://<vault-name>.vault.azure.net/keys/<key-name>/<key-version>

Aby skonfigurować klucz bez wersji, użyj formatu identyfikatora, który pomija wersję.

Następny krok

W tym artykule skonfigurowano magazyn usługi App Configuration do używania klucza zarządzanego przez klienta na potrzeby szyfrowania. Aby dowiedzieć się więcej o tym, jak zintegrować usługę App Service z tożsamościami zarządzanymi platformy Azure, przejdź do następnego kroku.