Podczas tworzenia aplikacji w chmurze deweloperzy muszą debugować i testować aplikacje na lokalnej stacji roboczej. Gdy aplikacja jest uruchamiana na stacji roboczej dewelopera podczas programowania lokalnego, nadal musi uwierzytelniać się w dowolnych usługach platformy Azure używanych przez aplikację. W tym artykule opisano, jak używać poświadczeń platformy Azure dewelopera do uwierzytelniania aplikacji na platformie Azure podczas programowania lokalnego.
Aby aplikacja uwierzytelniła się na platformie Azure podczas programowania lokalnego przy użyciu poświadczeń platformy Azure dla deweloperów, deweloper musi zalogować się do platformy Azure z poziomu rozszerzenia narzędzi platformy Azure programu Visual Studio Code, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Zestaw Azure SDK dla języka JavaScript może wykryć, że deweloper jest zalogowany z jednego z tych narzędzi, a następnie uzyskuje niezbędne poświadczenia z pamięci podręcznej poświadczeń w celu uwierzytelnienia aplikacji na platformie Azure jako zalogowanego użytkownika.
To podejście jest najłatwiejsze do skonfigurowania dla zespołu deweloperów, ponieważ korzysta z istniejących kont platformy Azure deweloperów. Jednak konto dewelopera prawdopodobnie będzie mieć więcej uprawnień niż wymagane przez aplikację, w związku z tym przekroczenie uprawnień uruchamianych przez aplikację w środowisku produkcyjnym. Alternatywnie można utworzyć jednostki usługi aplikacji do użycia podczas tworzenia lokalnego, które mogą być ograniczone tylko do dostępu wymaganego przez aplikację.
1 — Tworzenie grupy Microsoft Entra na potrzeby programowania lokalnego
Ponieważ prawie zawsze istnieje wiele deweloperów, którzy pracują nad aplikacją, zaleca się najpierw utworzenie grupy Entra firmy Microsoft w celu hermetyzacji ról (uprawnień) wymaganych przez aplikację w środowisku lokalnym. Oferuje to następujące korzyści.
- Każdy deweloper ma przypisane te same role, ponieważ role są przypisywane na poziomie grupy.
- Jeśli dla aplikacji jest potrzebna nowa rola, należy ją dodać tylko do grupy Microsoft Entra dla aplikacji.
- Jeśli nowy deweloper dołącza do zespołu, po prostu musi zostać dodany do właściwej grupy Firmy Microsoft Entra, aby uzyskać odpowiednie uprawnienia do pracy nad aplikacją.
Jeśli masz istniejącą grupę Microsoft Entra dla zespołu deweloperów, możesz użyć tej grupy. W przeciwnym razie wykonaj następujące kroki, aby utworzyć grupę firmy Microsoft Entra.
Instrukcje |
Zrzut ekranu |
Przejdź do strony Microsoft Entra ID w witrynie Azure Portal, wpisując ciąg Microsoft Entra ID w polu wyszukiwania w górnej części strony, a następnie wybierając pozycję Microsoft Entra ID w obszarze usług. |
|
Na stronie Microsoft Entra ID wybierz pozycję Grupy z menu po lewej stronie. |
|
Na stronie Wszystkie grupy wybierz pozycję Nowa grupa. |
|
Na stronie Nowa grupa:
- Typ grupy → Zabezpieczenia.
- Nazwa grupy → nazwa grupy zabezpieczeń, zazwyczaj utworzona na podstawie nazwy aplikacji. Warto również uwzględnić ciąg, taki jak local-dev w nazwie grupy, aby wskazać cel grupy.
- Opis grupy → Opis celu grupy.
- Wybierz link Brak wybranych członków w obszarze Członkowie, aby dodać członków do grupy.
|
|
W oknie dialogowym Dodawanie członków:
- Użyj pola wyszukiwania, aby filtrować listę nazw użytkowników na liście.
- Wybierz co najmniej jednego użytkownika na potrzeby programowania lokalnego dla tej aplikacji. Po wybraniu obiektu obiekt zostanie przeniesiony do listy Wybrane elementy w dolnej części okna dialogowego.
- Po zakończeniu wybierz przycisk Wybierz .
|
|
Po powrocie na stronę Nowa grupa wybierz pozycję Utwórz , aby utworzyć grupę.
Grupa zostanie utworzona i nastąpi powrót do strony Wszystkie grupy . Wyświetlenie grupy może potrwać do 30 sekund i może być konieczne odświeżenie strony z powodu buforowania w witrynie Azure Portal. |
|
Polecenie az ad group create służy do tworzenia grup w usłudze Microsoft Entra ID. Parametry --display-name
i --main-nickname
są wymagane. Nazwa nadana grupie powinna być oparta na nazwie aplikacji. Warto również uwzględnić frazę taką jak "local-dev" w nazwie grupy, aby wskazać cel grupy.
az ad group create \
--display-name MyDisplay \
--mail-nickname MyDisplay \
--description <group-description>
Aby dodać członków do grupy, potrzebny będzie identyfikator obiektu użytkownika platformy Azure. Użyj listy az ad user list, aby wyświetlić listę dostępnych jednostek usługi. Polecenie --filter
parametru akceptuje filtry stylu OData i może służyć do filtrowania listy w nazwie wyświetlanej użytkownika, jak pokazano. Parametr --query
zwraca określone kolumny.
az ad user list \
--filter "startswith(displayName, 'Bob')" \
--query "[].{objectId:objectId, displayName:displayName}" \
--output table
Polecenie az ad group member add można następnie użyć do dodawania członków do grup.
az ad group member add \
--group <group-name> \
--member-id <object-id>
2 — Przypisywanie ról do grupy Microsoft Entra
Następnie należy określić, jakich ról (uprawnień) potrzebuje twoja aplikacja na temat zasobów i przypisać te role do aplikacji. W tym przykładzie role są przypisywane do grupy Microsoft Entra utworzonej w kroku 1. Role mogą być przypisywane do roli w zakresie zasobu, grupy zasobów lub subskrypcji. W tym przykładzie pokazano, jak przypisywać role w zakresie grupy zasobów, ponieważ większość aplikacji grupuje wszystkie zasoby platformy Azure w jedną grupę zasobów.
Instrukcje |
Zrzut ekranu |
Znajdź grupę zasobów dla aplikacji, wyszukując nazwę grupy zasobów przy użyciu pola wyszukiwania w górnej części witryny Azure Portal.
Przejdź do grupy zasobów, wybierając nazwę grupy zasobów pod nagłówkiem Grupy zasobów w oknie dialogowym. |
|
Na stronie grupy zasobów wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) z menu po lewej stronie. |
|
Na stronie Kontrola dostępu (Zarządzanie dostępem i tożsamościami):
- Wybierz kartę Przypisania roli.
- Wybierz pozycję + Dodaj z górnego menu, a następnie pozycję Dodaj przypisanie roli z wyświetlonego menu rozwijanego.
|
|
Strona Dodawanie przypisania roli zawiera listę wszystkich ról, które można przypisać dla grupy zasobów.
- Użyj pola wyszukiwania, aby przefiltrować listę do bardziej możliwego do zarządzania rozmiaru. W tym przykładzie pokazano, jak filtrować role obiektów blob usługi Storage.
- Wybierz rolę, którą chcesz przypisać.
Wybierz przycisk Dalej , aby przejść do następnego ekranu.
|
|
Następna strona Dodawanie przypisania roli umożliwia określenie, do którego użytkownika ma zostać przypisana rola.
- Wybierz pozycję Użytkownik, grupa lub jednostka usługi w obszarze Przypisz dostęp do.
- Wybierz pozycję + Wybierz członków w obszarze Członkowie
Zostanie otwarte okno dialogowe po prawej stronie witryny Azure Portal. |
|
W oknie dialogowym Wybieranie członków:
- Pole tekstowe Wybierz może służyć do filtrowania listy użytkowników i grup w ramach subskrypcji. W razie potrzeby wpisz kilka pierwszych znaków lokalnej grupy deweloperów firmy Microsoft Entra utworzonej dla aplikacji.
- Wybierz lokalną grupę deweloperów firmy Microsoft skojarzona z twoją aplikacją.
Wybierz pozycję Wybierz w dolnej części okna dialogowego, aby kontynuować. |
|
Grupa Microsoft Entra jest wyświetlana jako wybrana na ekranie Dodawanie przypisania roli.
Wybierz pozycję Przejrzyj i przypisz , aby przejść do ostatniej strony, a następnie ponownie przejrzyj i przypisz, aby ukończyć proces. |
|
Jednostka usługi aplikacji ma przypisaną rolę na platformie Azure przy użyciu polecenia az role assignment create .
az role assignment create --assignee "{appId}" \
--scope /subscriptions/"{subscriptionName}" \
--role "{roleName}" \
--resource-group "{resourceGroupName}"
Aby uzyskać nazwy ról, do których można przypisać jednostkę usługi, użyj polecenia az role definition list .
az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table
Aby na przykład umożliwić jednostce usługi aplikacji odczytywanie, zapisywanie i usuwanie dostępu do kontenerów obiektów blob usługi Azure Storage i danych do wszystkich kont magazynu w grupie zasobów msdocs-sdk-auth-example , należy przypisać jednostkę usługi aplikacji do roli Współautor danych obiektu blob usługi Storage przy użyciu następującego polecenia.
az role assignment create --assignee "aaaaaaaa-bbbb-cccc-7777-888888888888" \
--scope /subscriptions/"Storage Blob Data Subscriber" \
--role "Storage Blob Data Contributor" \
--resource-group "msdocs-sdk-auth-example"
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 programu VS Code, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell
4 — Implementowanie wartości domyślnejAzureCredential w aplikacji
Aby uwierzytelnić obiekty klienta zestawu Azure SDK na platformie Azure, aplikacja powinna używać DefaultAzureCredential
klasy z @azure/identity
pakietu. W tym scenariuszu sekwencyjnie sprawdzi, DefaultAzureCredential
czy deweloper zalogował się do platformy Azure przy użyciu rozszerzenia narzędzi platformy Azure programu VS Code, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Jeśli deweloper jest zalogowany na platformie Azure przy użyciu dowolnego z tych narzędzi, poświadczenia używane do logowania się do narzędzia będą używane przez aplikację do uwierzytelniania na platformie Azure za pomocą polecenia .
Zacznij od dodania pakietu @azure/tożsamości do aplikacji.
npm install @azure/identity
Następnie w przypadku dowolnego kodu JavaScript, który tworzy obiekt klienta zestawu Azure SDK w aplikacji, należy wykonać następujące czynności:
- Zaimportuj klasę
DefaultAzureCredential
z modułu @azure/identity
.
- Utwórz
DefaultAzureCredential
obiekt.
- Przekaż obiekt do konstruktora
DefaultAzureCredential
obiektu klienta zestawu Azure SDK.
Przykład jest pokazany w następującym segmencie kodu.
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
// Acquire a credential object
const tokenCredential = DefaultAzureCredential();
const blobServiceClient = BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
tokenCredential
);
DefaultAzureCredential
Automatycznie wykryje mechanizm uwierzytelniania skonfigurowany dla aplikacji i uzyska niezbędne tokeny do uwierzytelniania aplikacji na platformie Azure. Jeśli aplikacja korzysta z więcej niż jednego klienta zestawu SDK, ten sam obiekt poświadczeń może być używany z każdym obiektem klienta zestawu SDK.