Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas tworzenia aplikacji w chmurze deweloperzy zazwyczaj kompilują, testują i debugują kod lokalnie przed wdrożeniem go na platformie Azure. Jednak nawet podczas tworzenia lokalnego aplikacja musi uwierzytelniać się za pomocą dowolnych usług platformy Azure, z którymi współdziała, takich jak usługa Key Vault, magazyn lub bazy danych.
W tym artykule pokazano, jak skonfigurować aplikację do używania poświadczeń platformy Azure dewelopera do uwierzytelniania podczas programowania lokalnego. Takie podejście umożliwia bezproblemowe i bezpieczne środowisko programistyczne bez osadzania wpisów tajnych ani pisania logiki specyficznej dla środowiska.
Omówienie lokalnego uwierzytelniania programistycznego przy użyciu kont deweloperów
Podczas tworzenia aplikacji korzystającej z biblioteki azure Identity library for Python można uwierzytelnić się w usługach platformy Azure podczas programowania lokalnego przy użyciu konta platformy Azure dewelopera. Takie podejście jest często najprostszym sposobem uwierzytelniania w usługach platformy Azure podczas lokalnego tworzenia, ponieważ nie wymaga tworzenia zasad usług oraz tajnych wpisów ani zarządzania nimi.
Aby umożliwić aplikacji uwierzytelnianie na platformie Azure podczas programowania lokalnego przy użyciu własnych poświadczeń platformy Azure dla deweloperów, deweloper musi najpierw zalogować się przy użyciu jednego z obsługiwanych narzędzi wiersza polecenia:
- Interfejs wiersza polecenia Azure CLI (
az login) - Interfejs wiersza polecenia dla deweloperów platformy Azure (
azd login) - Azure PowerShell (
Connect-AzAccount)
Po zalogowaniu biblioteka tożsamości platformy Azure dla języka Python może automatycznie wykrywać aktywną sesję i pobierać niezbędne tokeny z pamięci podręcznej poświadczeń. Ta funkcja umożliwia aplikacji uwierzytelnianie w usługach platformy Azure jako zalogowanego użytkownika bez konieczności dodatkowej konfiguracji ani zakodowanych na stałe wpisów tajnych.
To zachowanie jest włączone podczas używania elementu DefaultAzureCredential, który przezroczysto powraca do poświadczeń opartych na CLI w środowiskach lokalnych.
Używanie poświadczeń platformy Azure z logowaniem dewelopera jest najprostszą konfiguracją na potrzeby programowania lokalnego. Korzysta z istniejącego konta platformy Azure każdego członka zespołu, co umożliwia bezproblemowy dostęp do usług platformy Azure bez konieczności dodatkowej konfiguracji.
Jednak konta deweloperów zwykle mają szersze uprawnienia niż te, które aplikacja powinna mieć w środowisku produkcyjnym. Te szersze uprawnienia mogą prowadzić do niespójności w testowaniu lub przypadkowo zezwalać na operacje, których aplikacja nie będzie autoryzowana do wykonywania w środowisku produkcyjnym. Aby dokładnie dublować uprawnienia produkcyjne i poprawić stan zabezpieczeń, zamiast tego można tworzyć jednostki usługi specyficzne dla aplikacji na potrzeby lokalnego programowania. Te tożsamości:
- Można przypisać tylko role i uprawnienia wymagane przez aplikację
- Wspieranie zasady najmniejszych uprawnień
- Oferują spójne testowanie zachowania związanego z dostępem w różnych środowiskach
Deweloperzy mogą skonfigurować środowisko lokalne tak, aby używało zasady usługi za pomocą zmiennych środowiskowych, a DefaultAzureCredential rozpoznaje je automatycznie. Aby uzyskać więcej informacji, zobacz artykuł Uwierzytelnij aplikacje Python do usług platformy Azure podczas lokalnego tworzenia z wykorzystaniem jednostek serwisowych.
1 — Tworzenie grupy zabezpieczeń Microsoft Entra na potrzeby programowania lokalnego
W większości scenariuszy programistycznych wielu deweloperów współtworzy tę samą aplikację. Aby usprawnić kontrolę dostępu i zapewnić spójne uprawnienia w zespole, zalecamy najpierw utworzenie grupy zabezpieczeń firmy Microsoft Entra specjalnie dla lokalnych potrzeb programistycznych aplikacji.
Przypisywanie ról platformy Azure na poziomie grupy — a nie do poszczególnych użytkowników — oferuje kilka kluczowych korzyści:
Spójne przypisania ról
Wszyscy deweloperzy w grupie automatycznie dziedziczą te same role i uprawnienia, zapewniając jednolite środowisko programistyczne.
Uproszczone zarządzanie rolami
Gdy aplikacja wymaga nowej roli, musisz dodać ją tylko raz do grupy. Nie musisz aktualizować poszczególnych uprawnień użytkownika.
Łatwe dołączanie
Nowym deweloperom można nadać odpowiednie uprawnienia po dodaniu ich do grupy. Nie są wymagane żadne ręczne przypisania ról.
Jeśli Twoja organizacja ma już odpowiednią grupę zabezpieczeń firmy Microsoft Entra dla zespołu deweloperów, możesz użyć jej ponownie. W przeciwnym razie możesz utworzyć nową grupę specjalnie dla aplikacji.
Aby utworzyć grupę zabezpieczeń w identyfikatorze Entra firmy Microsoft, użyj polecenia az ad group createe interfejsu wiersza polecenia platformy Azure.
To polecenie wymaga następujących parametrów:
--display-name: przyjazna dla użytkownika nazwa grupy
--mail-nickname: unikatowy identyfikator używany do obsługi poczty e-mail i w celach referencyjnych wewnętrznie
Zalecamy, aby nazwa grupy bazowała na nazwie aplikacji i zawierała sufiks, taki jak -local-dev, aby przejrzyście wskazywał jego przeznaczenie.
#!/bin/bash
az ad group create \
--display-name MyDisplay \
--mail-nickname MyDisplay \
--description "<group-description>"
# PowerShell syntax
az ad group create `
--display-name MyDisplay `
--mail-nickname MyDisplay `
--description "<group-description>"
Po uruchomieniu az ad group create polecenia skopiuj wartość id właściwości z danych wyjściowych polecenia. Do przypisywania ról w kolejnych krokach tego artykułu potrzebny jest Object ID z grupy zabezpieczeń Microsoft Entra. Aby ponownie pobrać Object ID później, użyj następującego polecenia: az ad group showaz ad group show --group "my-app-local-dev" --query id --output tsv.
Aby dodać użytkownika do grupy, musisz najpierw uzyskać Object ID konto użytkownika platformy Azure, które chcesz dodać. Użyj polecenia az ad user list z parametrem , --filter aby wyszukać określonego użytkownika według nazwy wyświetlanej. Parametr --query pomaga ograniczyć dane wyjściowe do odpowiednich pól:
#!/bin/bash
az ad user list \
--filter "startswith(displayName, 'Bob')" \
--query "[].{objectId:id, displayName:displayName}" \
--output table
# PowerShell syntax
az ad user list `
--filter "startswith(displayName, 'Bob')" `
--query "[].{objectId:id, displayName:displayName}" `
--output table
Po uzyskaniu Object ID użytkownika, możesz dodać go do grupy przy użyciu polecenia az ad group member add.
#!/bin/bash
az ad group member add \
--group <group-name> \
--member-id <object-id>
# PowerShell syntax
az ad group member add `
--group <group-name> `
--member-id <object-id>
Uwaga
Domyślnie tworzenie grup zabezpieczeń Microsoft Entra jest ograniczone do niektórych ról uprzywilejowanych w katalogu. Jeśli nie możesz utworzyć grupy, skontaktuj się z administratorem katalogu. Jeśli nie możesz dodać członków do istniejącej grupy, skontaktuj się z właścicielem grupy lub administratorem katalogu. Aby dowiedzieć się więcej, zobacz Zarządzanie grupami i członkostwem w grupach firmy Microsoft.
2 — Przypisywanie ról do grupy Microsoft Entra
Po utworzeniu grupy zabezpieczeń Firmy Microsoft Entra i dodaniu członków następnym krokiem jest określenie, jakich ról (uprawnień) wymaga aplikacja, i przypisanie tych ról do grupy w odpowiednim zakresie.
Określanie wymaganych ról
Zidentyfikuj role, które są potrzebne, aby aplikacja mogła działać. Do powszechnych przykładów należą:
- Użytkownik wpisów tajnych usługi Key Vault — odczytywanie wpisów tajnych z usługi Azure Key Vault
- Współautor danych kolejki usługi Storage — wysyłanie komunikatów do usługi Azure Queue Storage
Aby uzyskać więcej opcji, zapoznaj się z wbudowanymi definicjami ról.
Wybieranie zakresu przypisania roli
Role można przypisywać w różnych zakresach:
- Poziom zasobów (np. pojedyncze konto usługi Key Vault lub magazyn)
- Poziom grupy zasobów (zalecany dla większości aplikacji)
- Poziom subskrypcji (użycie z ostrożnością — najszerszy dostęp)
W tym przykładzie przypisujemy role w zakresie grupy zasobów, co jest typowe, gdy wszystkie zasoby aplikacji są grupowane w ramach jednej grupy zasobów.
Jednostka usługi użytkownika, grupy lub aplikacji ma przypisaną rolę na platformie Azure przy użyciu polecenia az role assignment create . Możesz określić grupę z jej atrybutem Object ID.
#!/bin/bash
az role assignment create --assignee <objectId> \
--scope /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName> \
--role "<roleName>"
# PowerShell syntax
az role assignment create `
--assignee <objectId> `
--scope /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName> `
--role "<roleName>"
Aby uzyskać nazwy ról, które można przypisać, użyj polecenia az role definition list.
#!/bin/bash
az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table
# PowerShell syntax
az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table
Aby udzielić dostępu do odczytu, zapisu i usuwania danych oraz kontenerów obiektów blob w usłudze Azure Storage dla wszystkich kont magazynu w określonej grupie zasobów, przypisz rolę Współautora danych Blob w usłudze Azure Storage do grupy zabezpieczeń Microsoft Entra.
#!/bin/bash
az role assignment create --assignee bbbbbbbb-1111-2222-3333-cccccccccccc \
--scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-python-sdk-auth-example \
--role "Storage Blob Data Contributor"
# PowerShell syntax
az role assignment create --assignee bbbbbbbb-1111-2222-3333-cccccccccccc `
--scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-python-sdk-auth-example `
--role "Storage Blob Data Contributor"
Aby uzyskać informacje na temat przypisywania uprawnień na poziomie zasobu lub subskrypcji przy użyciu interfejsu wiersza polecenia platformy Azure, zobacz artykuł Przypisywanie ról platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
3 — Logowanie się do platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell, interfejsu wiersza polecenia dla deweloperów platformy Azure lub w przeglądarce
Aby uwierzytelnić się przy użyciu konta platformy Azure, wybierz jedną z następujących metod:
- Interfejs wiersza polecenia platformy Azure
- Azure PowerShell
- Interfejs wiersza polecenia dla deweloperów platformy Azure
- Przeglądarka interaktywna
Otwórz terminal na stacji roboczej dewelopera i zaloguj się do platformy Azure przez Azure CLI.
az login
4 - Implementacja DefaultAzureCredential w aplikacji
Aby uwierzytelnić obiekty klienta zestawu Azure SDK na platformie Azure, aplikacja powinna używać DefaultAzureCredential klasy z azure-identity pakietu. Jest to zalecana metoda uwierzytelniania zarówno dla lokalnych wdrożeń programistycznych, jak i produkcyjnych.
W lokalnym scenariuszu rozwoju DefaultAzureCredential działa sekwencyjnie, sprawdzając dostępne źródła uwierzytelniania. W szczególności szuka aktywnych sesji w następujących narzędziach:
- Interfejs wiersza polecenia platformy Azure (az login)
- Azure PowerShell (Connect-AzAccount)
- Interfejs wiersza polecenia dla deweloperów platformy Azure (azd auth login)
Jeśli deweloper jest zalogowany na platformie Azure przy użyciu dowolnego z tych narzędzi, DefaultAzureCredential automatycznie wykrywa sesję i używa tych poświadczeń do uwierzytelniania aplikacji za pomocą usług platformy Azure. Dzięki temu deweloperzy mogą bezpiecznie uwierzytelniać się bez przechowywania wpisów tajnych lub modyfikowania kodu dla różnych środowisk.
Zacznij od dodania pakietu azure.identity do aplikacji.
pip install azure-identity
Następnie dla dowolnego kodu w języku Python, który tworzy obiekt klienta zestawu Azure SDK w aplikacji, chcesz:
- Zaimportuj klasę
DefaultAzureCredentialz modułuazure.identity. - Utwórz
DefaultAzureCredentialobiekt. - Przekaż obiekt do konstruktora obiektu klienta Azure SDK.
Przykład tych kroków przedstawiono w następującym segmencie kodu.
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
# Acquire a credential object
token_credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
account_url="https://<my_account_name>.blob.core.windows.net",
credential=token_credential)