Udostępnij przez


Scentralizowana konfiguracja

Wskazówka

Ta zawartość jest fragmentem e-książki, Architektura Cloud Native .NET Applications for Azure, dostępnej w .NET Docs lub jako bezpłatny plik PDF do pobrania, który można czytać offline.

Natywne aplikacje .NET dla chmury Azure - okładka miniatury eBooka.

W przeciwieństwie do aplikacji monolitycznej, w której wszystko działa w ramach jednego wystąpienia, aplikacja chmurowa składa się z samodzielnych usług rozmieszczonych między maszynami wirtualnymi, kontenerami oraz w różnych regionach geograficznych. Zarządzanie ustawieniami konfiguracji dla kilkudziesięciu zależnych usług może być trudne. Zduplikowane kopie ustawień konfiguracji w różnych lokalizacjach są podatne na błędy i trudne do zarządzania. Scentralizowana konfiguracja jest krytycznym wymaganiem dla rozproszonych aplikacji natywnych dla chmury.

Zgodnie z opisem w rozdziale 1 zalecenia dotyczące aplikacji Twelve-Factor wymagają ścisłego rozdzielenia między kodem a konfiguracją. Konfiguracja musi być przechowywana zewnętrznie z aplikacji i w razie potrzeby odczytywana. Przechowywanie wartości konfiguracji jako wartości stałych lub literałów w kodzie jest naruszeniem. Te same wartości konfiguracji są często używane przez wiele usług w tej samej aplikacji. Ponadto musimy obsługiwać te same wartości w wielu środowiskach, takich jak tworzenie, testowanie i produkcja. Najlepszym rozwiązaniem jest przechowywanie ich w scentralizowanym repozytorium konfiguracji.

Chmura platformy Azure oferuje kilka doskonałych opcji.

Konfiguracja aplikacji Azure

Azure App Configuration to w pełni zarządzana usługa platformy Azure, która przechowuje ustawienia konfiguracji innych niż tajne w bezpiecznej, scentralizowanej lokalizacji. Przechowywane wartości mogą być współużytkowane przez wiele usług i aplikacji.

Usługa jest prosta w użyciu i zapewnia kilka korzyści:

  • Reprezentacje elastyczne klucz-wartość i mapowania
  • Tagowanie przy użyciu etykiet platformy Azure
  • Dedykowany interfejs użytkownika do zarządzania
  • Szyfrowanie poufnych informacji
  • Wykonywanie zapytań i pobieranie wsadowe

Usługa Azure App Configuration utrzymuje zmiany wprowadzone w ustawieniach klucz-wartość przez siedem dni. Funkcja migawki do punktu w czasie umożliwia odtworzenie historii ustawienia, a nawet wycofanie w przypadku nieudanego wdrożenia.

Usługa App Configuration automatycznie buforuje każde ustawienie, aby uniknąć nadmiernego wywołania magazynu konfiguracji. Operacja odświeżania czeka, aż buforowana wartość ustawienia wygaśnie, aby zaktualizować to ustawienie, nawet jeśli jego wartość zmieni się w magazynie konfiguracji. Domyślny czas wygaśnięcia pamięci podręcznej to 30 sekund. Możesz zmienić czas wygaśnięcia.

Usługa App Configuration szyfruje wszystkie wartości konfiguracji podczas przesyłania i przechowywania. Nazwy kluczy i etykiety są używane jako indeksy do pobierania danych konfiguracji i nie są szyfrowane.

Mimo że usługa App Configuration zapewnia wysoki poziom ochrony, usługa Azure Key Vault jest nadal najlepszym miejscem do przechowywania sekretów aplikacji. Usługa Key Vault zapewnia szyfrowanie na poziomie sprzętu, szczegółowe zasady dostępu i operacje zarządzania, takie jak rotacja certyfikatów. Możesz utworzyć wartości konfiguracji aplikacji, które odnoszą się do sekretów przechowywanych w Key Vault.

Azure Key Vault

Key Vault to zarządzana usługa do bezpiecznego przechowywania tajemnic i uzyskiwania do nich dostępu. Wpis tajny to wszystko, do czego chcesz ściśle kontrolować dostęp, na przykład klucze interfejsu API, hasła lub certyfikaty. Magazyn jest logiczną grupą sekretów.

Usługa Key Vault znacznie ogranicza prawdopodobieństwo przypadkowego ujawnienia wpisów tajnych. W przypadku korzystania z usługi Key Vault deweloperzy aplikacji nie muszą już przechowywać informacji zabezpieczających w swojej aplikacji. Ta praktyka eliminuje konieczność przechowywania tych informacji wewnątrz kodu. Na przykład aplikacja może potrzebować połączenia z bazą danych. Zamiast przechowywać parametry połączenia w kodzie aplikacji można je przechowywać bezpiecznie w usłudze Key Vault.

Aplikacje mogą bezpiecznie uzyskiwać dostęp do potrzebnych informacji przy użyciu identyfikatorów URI. Te identyfikatory URI umożliwiają aplikacjom pobieranie określonych wersji tajemnicy. Nie ma potrzeby pisania kodu niestandardowego w celu ochrony żadnych informacji tajnych przechowywanych w usłudze Key Vault.

Dostęp do usługi Key Vault wymaga odpowiedniego uwierzytelniania i autoryzacji wywołującego. Zazwyczaj każda mikrousługa natywna dla chmury używa kombinacji ClientId/ClientSecret. Ważne jest, aby te poświadczenia były przechowywane poza kontrolą źródła. Najlepszym rozwiązaniem jest ustawienie ich w środowisku aplikacji. Bezpośredni dostęp do usługi Key Vault z usługi AKS można osiągnąć przy użyciu usługi Key Vault FlexVolume.

Konfiguracja w sklepie eShop

Aplikacja eShopOnContainers zawiera lokalne pliki ustawień aplikacji z każdą mikrousługą. Te pliki są zaewidencjonowane w systemie kontroli wersji, ale nie zawierają tajemnic produkcyjnych, takich jak parametry połączenia lub klucze interfejsu API. W środowisku produkcyjnym poszczególne ustawienia mogą zostać zastąpione zmiennymi środowiskowymi dla usługi. Wstrzykiwanie tajnych danych do zmiennych środowiskowych jest powszechną praktyką dla hostowanych aplikacji, ale nie zapewnia centralnego magazynu konfiguracji. Aby obsługiwać scentralizowane zarządzanie ustawieniami konfiguracji, każda mikrousługa zawiera ustawienie przełączania między użyciem ustawień lokalnych lub ustawień usługi Azure Key Vault.

Źródła