Konfiguracja scentralizowana
Napiwek
Ta zawartość jest fragmentem książki eBook, Architekting Cloud Native .NET Applications for Azure, dostępnej na platformie .NET Docs lub jako bezpłatny plik PDF do pobrania, który można odczytać w trybie offline.
W przeciwieństwie do aplikacji monolitycznej, w której wszystko działa w ramach jednego wystąpienia, aplikacja natywna dla chmury składa się z niezależnych usług rozproszonych między maszynami wirtualnymi, kontenerami i regionami geograficznymi. 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 dwunastoskładnikowej wymagają ścisłego rozdzielenia kodu i konfiguracji. 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 magazynie konfiguracji.
Chmura platformy Azure oferuje kilka doskonałych opcji.
Azure App Configuration
aplikacja systemu Azure 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:
- Elastyczne reprezentacje i mapowania klucz/wartość
- Tagowanie przy użyciu etykiet platformy Azure
- Dedykowany interfejs użytkownika do zarządzania
- Szyfrowanie poufnych informacji
- Wykonywanie zapytań i pobieranie wsadowe
aplikacja systemu Azure 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 zastąpić 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 zabezpieczenia ze wzmocnionymi zabezpieczeniami, usługa Azure Key Vault jest nadal najlepszym miejscem do przechowywania wpisów tajnych 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 usługi App Configuration odwołujące się do wpisów tajnych przechowywanych w usłudze Key Vault.
Azure Key Vault
Key Vault to zarządzana usługa do bezpiecznego przechowywania wpisów tajnych i uzyskiwania do ich dostępu. Wpis tajny to dowolny zasób, do którego dostęp powinien być ściśle kontrolowany. Przykładowe wpisy tajne to klucze interfejsu API, hasła i certyfikaty. Magazyn jest logiczną grupą wpisów tajnych.
Usługa Key Vault znacznie ogranicza prawdopodobieństwo przypadkowego ujawnienia wpisów tajnych. Korzystając z usługi Key Vault, deweloperzy aplikacji nie muszą już przechowywać informacji zabezpieczeń w 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.
Twoje aplikacje mogą bezpiecznie uzyskiwać dostęp do potrzebnych informacji za pomocą identyfikatorów URI. Te identyfikatory URI umożliwiają aplikacjom pobranie określonych wersji wpisu tajnego. 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ą sprawdzane w kontroli źródła, ale nie obejmują wpisów tajnych 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 wpisów tajnych w zmiennych środowiskowych jest powszechną praktyką w przypadku 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.
Informacje
- Architektura eShopOnContainers
- Organizowanie aplikacji mikrousług i aplikacji z wieloma kontenerami w celu zapewnienia wysokiej skalowalności i dostępności
- Azure API Management
- Omówienie usługi Azure SQL Database
- Azure Cache for Redis
- Interfejs API usługi Azure Cosmos DB dla bazy danych MongoDB
- Azure Service Bus
- Omówienie usługi Azure Monitor
- eShopOnContainers: tworzenie klastra Kubernetes w usłudze AKS
- eShopOnContainers: Azure Dev Spaces
- Azure Dev Spaces