Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Identyfikator Entra firmy Microsoft, używany w usłudze Azure Key Vault, zapewnia niezawodne i bezpieczne podejście do uwierzytelniania aplikacji zarówno w usługach platformy Azure, jak i na platformach innych firm, które wymagają kluczy dostępu lub poświadczeń. Ta kombinacja eliminuje konieczność kodowania wpisów tajnych w kodzie aplikacji, zamiast tego polegać na tożsamościach zarządzanych, kontroli dostępu opartej na rolach (RBAC) i scentralizowanym zarządzaniu wpisami tajnymi za pośrednictwem usługi Key Vault. Takie podejście usprawnia zarządzanie tożsamościami i zwiększa poziom zabezpieczeń w środowiskach chmury.
Ten przewodnik zawiera omówienie tych mechanizmów uwierzytelniania za pomocą praktycznego przykładu przedstawionego w repozytorium GitHub: github.com/Azure-Samples/python-integrated-authentication.
W przykładzie pokazano, jak aplikacja w języku Python może wykonywać następujące czynności:
Uwierzytelnianie z Azure przy użyciu DefaultAzureCredential
Uzyskiwanie dostępu do sekretów Azure Key Vault bez przechowywania poświadczeń
Bezpieczne komunikowanie się z innymi usługami platformy Azure, takimi jak Azure Storage, Cosmos DB i inne
Ten artykuł jest częścią serii, która zawiera szczegółowy przewodnik dotyczący uwierzytelniania aplikacji w języku Python przy użyciu identyfikatora Entra firmy Microsoft, usługi Azure Key Vault i usługi Azure Queue Storage przy użyciu biblioteki zestawu SDK azure-identity języka Python platformy Azure.
Część 1. Tło
Chociaż wiele usług Azure korzysta wyłącznie z kontroli dostępu opartej na rolach (RBAC), inne wymagają dostępu przy użyciu wpisów tajnych lub kluczy. Takie usługi obejmują Azure Storage, bazy danych, narzędzia Foundry Tools, Key Vault i Event Hubs.
Podczas tworzenia aplikacji w chmurze, które wchodzą w interakcje z tymi usługami, deweloperzy mogą używać witryny Azure Portal, interfejsu wiersza polecenia lub programu PowerShell do generowania i konfigurowania kluczy dostępu specyficznych dla usługi. Te klucze są powiązane z określonymi zasadami dostępu, aby zapobiec nieautoryzowanemu dostępowi. Jednak ten model wymaga, aby aplikacja zarządzała kluczami jawnie i uwierzytelniała się oddzielnie przy użyciu każdej usługi, czyli procesu, który jest zarówno żmudny, jak i podatny na błędy.
Osadzanie wpisów tajnych bezpośrednio w kodzie lub przechowywanie ich na maszynach deweloperskich może ujawnić je w:
- Kontrola źródła
- Niezabezpieczone środowiska lokalne
- Przypadkowe dzienniki lub eksporty konfiguracji
Azure oferuje dwie kluczowe usługi w celu zwiększenia bezpieczeństwa i uproszczenia uwierzytelniania:
Azure Key Vault Usługa Azure Key Vault zapewnia bezpieczny magazyn oparty na chmurze dla wpisów tajnych, w tym klucze dostępu, parametry połączenia i certyfikaty. Po pobraniu wpisów tajnych z usługi Key Vault tylko w czasie wykonywania aplikacje unikają ujawniania poufnych danych w kodzie źródłowym lub plikach konfiguracji.
Dzięki tożsamościom zarządzanym firmy Microsoft Entra aplikacja może uwierzytelniać się raz za pomocą identyfikatora Entra firmy Microsoft. Z tego miejsca może uzyskiwać dostęp do innych usług platformy Azure — w tym usługi Key Vault — bez bezpośredniego zarządzania poświadczeniami.
Takie podejście zapewnia:
- Kod wolny od tajemnic (brak wpisów tajnych w systemie kontroli wersji)
- Bezproblemowa integracja z usługami platformy Azure
- Spójność środowiska: ten sam kod jest uruchamiany lokalnie i w chmurze z minimalną konfiguracją
W tym przewodniku pokazano, jak używać tożsamości zarządzanej firmy Microsoft i usługi Key Vault razem w tej samej aplikacji. Dzięki połączeniu z usługami Microsoft Entra ID i Key Vault twoja aplikacja nigdy nie musi się uwierzytelniać za pomocą poszczególnych usług platformy Azure i może łatwo i bezpiecznie uzyskiwać dostęp do wszelkich kluczy niezbędnych dla usług innych firm.
Ważne
W tym artykule użyto wspólnego, ogólnego terminu "klucz", aby odwoływać się do tego, co są przechowywane jako "wpisy tajne" w usłudze Azure Key Vault, takie jak klucz dostępu dla interfejsu API REST. Tego użycia nie należy mylić z zarządzaniem kluczami kryptograficznymi usługi Key Vault, która jest oddzielną funkcją od wpisów tajnych usługi Key Vault.
Przykładowy scenariusz aplikacji w chmurze
Aby lepiej zrozumieć proces uwierzytelniania platformy Azure, rozważ następujący scenariusz: aplikacja internetowa platformy Flask jest wdrażana w usłudze Azure App Service. Uwidacznia publiczny, nieuwierzytelniony punkt końcowy interfejsu API, który zwraca dane JSON w odpowiedzi na żądania HTTP.
Aby wygenerować odpowiedź, interfejs API wywołuje interfejs API innej firmy, który wymaga klucza dostępu. Zamiast przechowywać ten klucz w kodzie lub plikach konfiguracji, aplikacja pobiera go bezpiecznie w czasie wykonywania z usługi Azure Key Vault przy użyciu tożsamości zarządzanej firmy Microsoft Entra.
Przed zwróceniem odpowiedzi na klienta aplikacja zapisuje komunikat w kolejce usługi Azure Storage na potrzeby przetwarzania asynchronicznego. Komunikat może reprezentować zadanie, dziennik lub sygnał, choć przetwarzanie podrzędne nie jest celem tego scenariusza.
Uwaga / Notatka
Mimo że publiczne punkty końcowe interfejsu API są zwykle chronione przez własne klucze dostępu lub mechanizmy uwierzytelniania, w tym przewodniku założono, że punkt końcowy jest otwarty i nieuwierzytelniony.
To uproszczenie pomaga odizolować wewnętrzne wymagania dotyczące uwierzytelniania aplikacji — takie jak uzyskiwanie dostępu do Azure Key Vault i Azure Storage — od wszelkich problemów dotyczących uwierzytelniania związanych z klientami zewnętrznymi.
Scenariusz koncentruje się wyłącznie na zachowaniu aplikacji i nie demonstruje ani nie obejmuje uwierzytelnienia zewnętrznego dzwoniącego w punkcie końcowym.