Konfigurowanie aplikacji w celu zaufania zewnętrznemu dostawcy tożsamości
W tym artykule opisano sposób zarządzania poświadczeniami tożsamości federacyjnej w aplikacji w usłudze Microsoft Entra ID. Poświadczenie tożsamości federacyjnej tworzy relację zaufania między aplikacją i zewnętrznym dostawcą tożsamości (IdP).
Następnie można skonfigurować zewnętrzne obciążenie oprogramowania w celu wymiany tokenu z zewnętrznego dostawcy tożsamości dla tokenu dostępu z platformy tożsamości firmy Microsoft. Obciążenie zewnętrzne może uzyskiwać dostęp do chronionych zasobów Microsoft Entra bez konieczności zarządzania tajnymi danymi (w obsługiwanych scenariuszach). Aby dowiedzieć się więcej o przepływie pracy wymiany tokenów, przeczytaj o federacji tożsamości obciążeńprzy użyciu
Z tego artykułu dowiesz się, jak tworzyć, wyświetlać i usuwać poświadczenia tożsamości federacyjnej w aplikacji w usłudze Microsoft Entra ID.
Ważne zagadnienia i ograniczenia
Aby utworzyć, zaktualizować lub usunąć poświadczenie tożsamości federacyjnej, konto wykonujące akcję musi mieć rolę administratora aplikacji , dewelopera aplikacji , administratora aplikacji w chmurze lub właściciela aplikacji. Do zaktualizowania poświadczeń tożsamości federacyjnej wymagany jest microsoft.directory/applications/credentials/update.
Do aplikacji lub tożsamości zarządzanej przypisanej przez użytkownika można dodać maksymalnie 20 poświadczeń tożsamości federacyjnej.
Podczas konfigurowania poświadczeń tożsamości federacyjnej należy podać kilka ważnych informacji:
Kluczowe informacje potrzebne do ustanowienia relacji zaufania to wystawca oraz podmiot. Kombinacja
issuer
isubject
musi być unikatowa w aplikacji. Gdy zewnętrzne obciążenie oprogramowania żąda od platformy tożsamości firmy Microsoft wymiany tokenu zewnętrznego na token dostępu, wartości wystawcy i oraz podmiotu i poświadczeń tożsamości federacyjnej są sprawdzane w porównaniu do oświadczeńissuer
isubject
podanych w tokenie zewnętrznym. Jeśli sprawdzanie poprawności zakończy się pomyślnie, platforma tożsamości firmy Microsoft wystawia token dostępu do zewnętrznego obciążenia oprogramowania.wystawca jest adresem URL zewnętrznego dostawcy tożsamości i musi być zgodny z oświadczeniem
issuer
wymienianego zewnętrznego tokenu. Wymagane. Jeśli oświadczenieissuer
ma wiodące lub końcowe białe znaki w wartości, wymiana tokenów zostanie zablokowana. To pole ma limit znaków 600 znaków.obiekt to identyfikator zewnętrznego obciążenia oprogramowania i musi być zgodny z roszczeniem
sub
(subject
) wymienianego zewnętrznego tokenu. Identyfikator nie ma stałego formatu, ponieważ każdy dostawca tożsamości używa własnego formatu — czasami GUID, czasami identyfikatora rozdzielanego dwukropkiem, czasami dowolnych ciągów znaków. To pole ma limit znaków 600 znaków.Ważny
Wartości ustawień tematu muszą dokładnie odpowiadać konfiguracji przepływu pracy na GitHubie. W przeciwnym razie platforma tożsamości firmy Microsoft przyjrzy się przychodzącego tokenu zewnętrznego i odrzuci wymianę tokenu dostępu. Nie zostanie wyświetlony błąd, wymiana kończy się niepowodzeniem bez błędu.
Ważny
Jeśli przypadkowo dodasz niepoprawne informacje o zewnętrznym obciążeniu w ustawieniu tematu , poświadczenie tożsamości federacyjnej zostaje utworzone pomyślnie bez żadnych błędów. Błąd nie jest widoczny, dopóki wymiana tokenów nie powiedzie się.
audiences wyświetla listę odbiorców, którzy mogą pojawić się w tokenie zewnętrznym. Wymagane. Musisz dodać pojedynczą wartość odbiorców, która ma limit 600 znaków. Zalecana wartość to "api://AzureADTokenExchange". Określa, co platforma tożsamości Microsoft musi zaakceptować w roszczeniu
aud
w przychodzącym tokenie.nazwa jest unikatowym identyfikatorem federacyjnego dokumentu uwierzytelniającego tożsamość. Wymagane. To pole ma limit znaków od 3 do 120 znaków i musi być przyjazny dla adresu URL. Obsługiwane są znaki alfanumeryczne, kreski lub podkreślniki. Pierwszy znak musi być alfanumeryczny. Jest niezmienny po utworzeniu.
opis to opis poświadczenia tożsamości federacyjnej podany przez użytkownika. Fakultatywny. Opis nie jest weryfikowany ani sprawdzany przez identyfikator Entra firmy Microsoft. To pole ma limit 600 znaków.
Symbole wieloznaczne nie są obsługiwane w żadnej wartości właściwości poświadczenia tożsamości federacyjnej.
Aby dowiedzieć się więcej o obsługiwanych regionach, czasie potrzebnym do propagacji aktualizacji poświadczeń federacyjnych, wspieranych wystawcach i innych kwestiach, przeczytaj Ważne zagadnienia i ograniczenia dotyczące poświadczeń tożsamości federacyjnej.
Warunki wstępne
- Utwórz rejestrację aplikacji lub tożsamość zarządzaną w Microsoft Entra ID. Udziel aplikacji dostępu do zasobów platformy Azure dostosowanych do zewnętrznego obciążenia programowego.
- Znajdź identyfikator obiektu aplikacji (a nie identyfikator aplikacji (klienta), który jest potrzebny w poniższych krokach. Identyfikator obiektu aplikacji można znaleźć w panelu administracyjnym Microsoft Entra. Przejdź do listy rejestracji aplikacji i wybierz rejestrację aplikacji. W Przeglądmożna znaleźć identyfikator obiektu .
- Uzyskaj informacje dotyczące podmiotu i wystawcy dla zewnętrznego dostawcy tożsamości i obciążenia oprogramowania, które są potrzebne w poniższych krokach.
Konfigurowanie poświadczeń tożsamości federacyjnej w aplikacji
GitHub Actions
Aby dodać tożsamość federacyjną dla funkcji GitHub Actions, wykonaj następujące kroki:
Znajdź rejestrację aplikacji w środowisku rejestracji aplikacji Microsoft Entra admin center. Wybierz pozycję Certyfikaty & sekrety w okienku nawigacji po lewej stronie, wybierz kartę poświadczenia federacyjne, a następnie wybierz Dodaj poświadczenie.
W liście rozwijanej scenariusza poświadczeń federacyjnych wybierz akcje GitHub wdrażające zasoby Azure.
Określ przepływ pracy
Organization andRepository for your GitHub Actions (Organizacja i repozytorium).Dla typu jednostki wybierz Środowisko, Gałąź, Żądanie ściągnięcialub Etykietę i określ wartość. Wartości muszą być dokładnie zgodne z konfiguracją w przepływie pracy usługi GitHub . Dopasowywanie wzorca nie jest obsługiwane w przypadku gałęzi i tagów. Określ środowisko, jeśli przepływ pracy typu "push" działa na wielu gałęziach lub tagach. Aby uzyskać więcej informacji, przeczytaj przykłady .
Dodaj nazwę dla poświadczenia federacyjnego.
Pola Wystawcy, Odbiorcówi Identyfikatora podmiotu są automatycznie wypełniane na podstawie wprowadzonych wartości.
Aby skonfigurować poświadczenia federacyjne, wybierz pozycję i dodaj.
Użyj następujących wartości z rejestracji aplikacji Microsoft Entra dla przepływu pracy usługi GitHub:
AZURE_CLIENT_ID
identyfikator aplikacji (klienta)AZURE_TENANT_ID
identyfikatora Directory (dzierżawy)Poniższy zrzut ekranu przedstawia sposób kopiowania identyfikatora aplikacji i identyfikatora dzierżawy.
AZURE_SUBSCRIPTION_ID
identyfikator subskrypcji. Aby uzyskać identyfikator subskrypcji, otwórz Subskrypcje w Azure Portal i znajdź swoją subskrypcję. Następnie skopiuj Identyfikator Subskrypcji.
Przykłady typów jednostek
Przykład gałęzi
W przypadku przepływu pracy wyzwalanego przez zdarzenie wypychania lub żądania ściągnięcia w gałęzi głównej:
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Określ typ jednostki
Przykład środowiska
W przypadku zadań powiązanych ze środowiskiem o nazwie "production":
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Określ typ jednostki Environment oraz nazwę środowiska GitHub "production".
Przykład tagu
Na przykład w przypadku przepływu pracy wyzwalanego przez wypychanie do tagu o nazwie "v2":
on:
push:
# Sequence of patterns matched against refs/heads
branches:
- main
- 'mona/octocat'
- 'releases/**'
# Sequence of patterns matched against refs/tags
tags:
- v2
- v1.*
Określ typ jednostki
Przykład pull requestu
W przypadku przepływu pracy wyzwalanego przez zdarzenie żądania ściągnięcia określ typ jednostkiżądania ściągnięcia
Kubernetes
Znajdź rejestrację aplikacji w środowisku rejestracji aplikacji Microsoft Entra admin center. Wybierz pozycję Certyfikaty & sekrety w okienku nawigacji po lewej stronie, wybierz kartę Poświadczenia federacyjne, a następnie wybierz Dodaj poświadczenie.
Wybierz scenariusz Kubernetes uzyskujący dostęp do zasobów platformy Azure z menu rozwijanego.
Wypełnijpola Adres URL wystawcy klastra
- adres URL wystawcy klastra to adres URL wystawcy OIDC dla klastra zarządzanego lub adres URL wystawcy OIDC dla klastra zarządzanego samodzielnie.
- nazwa konta usługi to nazwa konta usługi Kubernetes, które zapewnia tożsamość procesom działającym w Podach.
- przestrzeń nazw jest przestrzenią nazw konta usługi.
- Nazwa jest nazwą poświadczenia federacyjnego, którego nie można później zmienić.
Inni dostawcy tożsamości
Znajdź rejestrację aplikacji w środowisku rejestracji aplikacji Microsoft Entra admin center. Wybierz pozycję Certyfikaty & wpisy tajne w okienku nawigacji po lewej stronie, wybierz kartę poświadczenia federacyjne, a następnie wybierz Dodaj poświadczenia.
Wybierz scenariusz Inny wystawca z menu rozwijanego.
Określ następujące pola (na przykład przy użyciu obciążenia oprogramowania uruchomionego w usłudze Google Cloud):
- Nazwa jest nazwą poświadczenia federacyjnego, którego nie można później zmienić.
-
Identyfikator podmiotumusi być zgodny z oświadczeniem
sub
zawartym w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. W tym przykładzie korzystającym z Google Cloud, element jest unikatowym identyfikatorem konta usługi, którego planujesz użyć. -
Wystawca: musi być zgodny z oświadczeniem
iss
w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. Adres URL zgodny ze specyfikacją OIDC Discovery. Microsoft Entra ID używa tego adresu URL wystawcy do pobrania kluczy niezbędnych do zweryfikowania tokenu. W przypadku usługi Google Cloud wystawcajest .
Wyświetl listę poświadczeń tożsamości federacyjnej w aplikacji
Znajdź rejestrację aplikacji w środowisku rejestracji aplikacji Microsoft Entra admin center. Wybierz pozycję Certyfikaty & tajne w lewym panelu nawigacyjnym i wybierz zakładkę poświadczenia federacyjne. Wyświetlane są poświadczenia federacyjne skonfigurowane w aplikacji.
Usuń poświadczenie tożsamości federacyjnej z aplikacji
Znajdź rejestrację aplikacji w środowisku rejestracji aplikacji Microsoft Entra admin center. Wybierz pozycję Certyfikaty & sekrety w lewym panelu nawigacyjnym i wybierz kartę Poświadczenia federacyjne. Wyświetlane są poświadczenia federacyjne skonfigurowane w aplikacji.
Aby usunąć poświadczenie tożsamości federacyjnej, wybierz ikonę Usuń przypisaną do tego poświadczenia.
Konfigurowanie poświadczeń elastycznej tożsamości federacyjnej (wersja zapoznawcza)
- Przejdź do Microsoft Entra ID i wybierz aplikację, w której chcesz skonfigurować poświadczenie tożsamości federacyjnej.
- W panelu nawigacyjnym po lewej stronie wybierz pozycję certyfikaty & tajemnice.
- Na karcie poświadczenia sfederowane wybierz opcję + Dodaj poświadczenie.
- W wyświetlonym oknie Dodaj poświadczenie z menu rozwijanego obok scenariusza federacyjnych poświadczeń, wybierz pozycję Inny wystawca.
- W w polu wprowadź wyrażenie dopasowania roszczenia, którego chcesz użyć.
Warunki wstępne
- Jeśli nie masz jeszcze konta platformy Azure, zarejestruj się na bezpłatne konto przed kontynuowaniem.
Użyj środowiska Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start Bash w Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj Azure CLI. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze platformy Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli używasz instalacji lokalnej, zaloguj się do Azure CLI za pomocą polecenia az login. Aby zakończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Zalogowanie się przy użyciu Azure CLI.
Po wyświetleniu monitu zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz
Use extensions with the Azure CLI (Używanie rozszerzeń za pomocą interfejsu wiersza polecenia platformy Azure).Uruchom az version, aby sprawdzić zainstalowaną wersję i biblioteki zależne. Aby przeprowadzić uaktualnienie do najnowszej wersji, uruchom polecenie az upgrade.
- Utwórz rejestrację aplikacji w usłudze Microsoft Entra ID. Udziel aplikacji dostępu do zasobów platformy Azure przeznaczonych dla zewnętrznego obciążenia programowego.
- Znajdź identyfikator obiektu, identyfikator aplikacji (klienta) lub identyfikator URI aplikacji, który jest potrzebny w poniższych krokach. Te wartości można znaleźć w portalu administracyjnym Microsoft Entra. Przejdź do listy zarejestrowanych aplikacji i wybierz rejestrację aplikacji. W Overview->Essentials, pobierz identyfikator obiektu, identyfikator aplikacji (klienta) lub wartość identyfikatora URI aplikacji , która jest potrzebna w poniższych krokach.
- Uzyskaj informacje o podmiocie i wystawcy dla swojego zewnętrznego dostawcy tożsamości (IdP) oraz obciążenia oprogramowania, które będą potrzebne w kolejnych krokach.
Skonfiguruj poświadczenie tożsamości federacyjnej w aplikacji
Uruchom polecenie az ad app federated-credential create, aby utworzyć nowe poświadczenie tożsamości federacyjnej w Twojej aplikacji.
Parametr id
określa identyfikator URI, identyfikator aplikacji lub identyfikator obiektu aplikacji. Parametr parameters
określa parametry w formacie JSON na potrzeby tworzenia poświadczeń tożsamości federacyjnej.
Przykład funkcji GitHub Actions
Nazwa określa nazwę poświadczeń tożsamości federacyjnej.
Wystawca identyfikuje ścieżkę do dostawcy OIDC GitHub: https://token.actions.githubusercontent.com/
. Ten wystawca zostaje uznany za zaufanego przez aplikację Azure.
Element identyfikuje organizację GitHub, repozytorium i środowisko dla przepływu pracy w ramach GitHub Actions. Gdy przepływ pracy w GitHub Actions żąda od platformy tożsamości Microsoft wymiany tokenu GitHub na token dostępu, wartości w federacyjnym poświadczeniu tożsamości są sprawdzane względem podanego tokenu GitHub. Zanim platforma Azure udzieli tokenu dostępu, żądanie musi być zgodne z warunkami zdefiniowanymi tutaj.
- W przypadku zadań powiązanych ze środowiskiem:
repo:< Organization/Repository >:environment:< Name >
- W przypadku zadań, które nie są związane ze środowiskiem, dołącz ścieżkę ref dla gałęzi lub tagu na podstawie ścieżki ref używanej do uruchamiania przepływu pracy:
repo:< Organization/Repository >:ref:< ref path>
. Na przykładrepo:n-username/ node_express:ref:refs/heads/my-branch
lubrepo:n-username/ node_express:ref:refs/tags/my-tag
. - W przypadku przepływów pracy wyzwalanych przez zdarzenie żądania pull:
repo:< Organization/Repository >:pull-request
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Testing",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:octo-org/octo-repo:environment:Production",
"description": "Testing",
"audiences": [
"api://AzureADTokenExchange"
]
}
Przykład rozwiązania Kubernetes
wystawca to adres URL wystawcy konta usługi (adres URL wystawcy OIDC dla klastra zarządzanego lub adres URL wystawcy OIDC dla klastra samodzielnie zarządzanego).
Podmiot jest nazwą podmiotu w tokenach wystawionych dla konta usługi. Platforma Kubernetes używa następującego formatu dla nazw podmiotów: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
.
Nazwa to nazwa poświadczeń federacyjnych, których nie można później zmienić.
Odbiorcy wymieniają listę odbiorców, którzy mogą pojawić się w tokenie zewnętrznym. To pole jest obowiązkowe. Zalecana wartość to api://AzureADTokenExchange
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Kubernetes-federated-credential",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa",
"description": "Kubernetes service account federated credential",
"audiences": [
"api://AzureADTokenExchange"
]
}
Przykład innych dostawców tożsamości
Możesz skonfigurować poświadczenie tożsamości federacyjnej w aplikacji i utworzyć relację zaufania z innymi zewnętrznymi dostawcami tożsamości. W poniższym przykładzie użyto obciążenia oprogramowania uruchomionego w usłudze Google Cloud jako przykładu:
-
name
jest nazwą poświadczeń federacyjnych, których nie można później zmienić. -
id
: identyfikator obiektu, identyfikator aplikacji (klienta) lub identyfikator URI aplikacji. -
subject
: musi pasować do roszczeniasub
w tokenie wydanym przez zewnętrznego dostawcę tożsamości. W tym przykładzie dotyczącym Google Cloud temat to unikatowy identyfikator konta usługi, którego planujesz użyć. -
issuer
: musi być zgodne z oświadczeniemiss
w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. Adres URL zgodny ze specyfikacją Discovery OIDC. Microsoft Entra ID używa tego adresu URL wystawcy do pobrania kluczy niezbędnych do zweryfikowania tokenu. Dla Google Cloud wystawcą jesthttps://accounts.google.com
. -
audiences
: wyświetla listę odbiorców, którzy mogą pojawić się w tokenie zewnętrznym. To pole jest obowiązkowe. Zalecana wartość to "api://AzureADTokenExchange".
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "GcpFederation",
"issuer": "https://accounts.google.com",
"subject": "112633961854638529490",
"description": "Test GCP federation",
"audiences": [
"api://AzureADTokenExchange"
]
}
Wyświetl listę poświadczeń tożsamości federacyjnej w aplikacji
Uruchom polecenie az ad app federated-credential list, aby wyświetlić listę poświadczeń tożsamości federacyjnej w twojej aplikacji.
Parametr id
określa identyfikator URI, identyfikator aplikacji lub identyfikator obiektu aplikacji.
az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444
Uzyskaj poświadczenie tożsamości federacyjnej w aplikacji
Uruchom polecenie az ad app federated-credential show, aby uzyskać poświadczenia tożsamości federacyjnej w twojej aplikacji.
Parametr id
określa identyfikator URI, identyfikator aplikacji lub identyfikator obiektu aplikacji.
federated-credential-id
określa identyfikator lub nazwę poświadczenia tożsamości federacyjnej.
az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Usuń poświadczenie tożsamości federacyjnej z aplikacji
Uruchom komendę az ad app federated-credential delete, aby usunąć poświadczenia tożsamości federacyjnej z Twojej aplikacji.
Parametr id
określa URI jako identyfikator, identyfikator aplikacji lub identyfikator obiektu aplikacji.
federated-credential-id
określa identyfikator lub nazwę poświadczeń tożsamości federacyjnej.
az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Warunki wstępne
- Aby uruchomić przykładowe skrypty, dostępne są dwie opcje:
- Użyj usługi Azure Cloud Shell, którą można otworzyć przy użyciu przycisku Wypróbuj w prawym górnym rogu bloków kodu.
- Uruchamianie skryptów lokalnie za pomocą programu Azure PowerShell zgodnie z opisem w następnej sekcji.
- Utwórz rejestrację aplikacji w usłudze Microsoft Entra ID. Przyznaj swojej aplikacji dostęp do zasobów Azure przeznaczonych dla zewnętrznego obciążenia pracą.
- Znajdź identyfikator obiektu aplikacji (a nie identyfikator aplikacji (klienta), który jest potrzebny w poniższych krokach. W centrum administracyjnym Microsoft Entramożna znaleźć identyfikator obiektu aplikacji. Przejdź do listy zarejestrowanych aplikacji i wybierz rejestrację aplikacji. W Przeglądzie—>Essentialsznajdź identyfikator obiektu .
- Uzyskaj informacje dotyczące podmiotu i wystawcy dla zewnętrznego dostawcy tożsamości (IdP) oraz obciążenia programowego, które będą potrzebne w następnych krokach.
Konfigurowanie programu Azure PowerShell lokalnie
Aby użyć programu Azure PowerShell lokalnie w tym artykule zamiast używania usługi Cloud Shell:
Zainstaluj najnowszą wersję programu Azure PowerShell, jeśli jeszcze tego nie zrobiono.
Zaloguj się do platformy Azure.
Connect-AzAccount
Zainstaluj najnowszą wersję modułu PowerShellGet.
Install-Module -Name PowerShellGet -AllowPrerelease
Po uruchomieniu tego polecenia w następnym kroku może być konieczne
Exit
z bieżącej sesji programu PowerShell.Aby wykonać operacje na poświadczeniach tożsamości federacyjnej opisanych w tym artykule, zainstaluj wersję wstępną modułu
Az.Resources
.Install-Module -Name Az.Resources -AllowPrerelease
Skonfiguruj poświadczenie tożsamości federacyjnej w aplikacji
Uruchom polecenie cmdlet New-AzADAppFederatedCredential, aby utworzyć nowe poświadczenie tożsamości federacyjnej w aplikacji.
Przykład funkcji GitHub Actions
- ApplicationObjectId: identyfikator obiektu aplikacji (a nie identyfikator aplikacji (klienta) wcześniej zarejestrowany w identyfikatorze Entra firmy Microsoft.
- Wystawca identyfikuje usługę GitHub jako zewnętrznego wystawcę tokenu.
-
Temat identyfikuje organizację, repozytorium i środowisko GitHub dla przepływu pracy GitHub Actions. Gdy przepływ pracy GitHub Actions prosi platformę tożsamości Microsoft o wymianę tokenu GitHub na token dostępu, wartości w poświadczeniu tożsamości federacyjnej są sprawdzane względem podanego tokenu GitHub.
- W przypadku zadań powiązanych ze środowiskiem:
repo:< Organization/Repository >:environment:< Name >
- W przypadku zadań, które nie są powiązane ze środowiskiem, dołącz ścieżkę odwołania dla gałęzi/tagu na podstawie ścieżki odwołania używanej do wyzwalania przepływu pracy:
repo:< Organization/Repository >:ref:< ref path>
. Na przykładrepo:n-username/ node_express:ref:refs/heads/my-branch
lubrepo:n-username/ node_express:ref:refs/tags/my-tag
. - W przypadku przepływów pracy wyzwalanych przez zdarzenie pull request:
repo:< Organization/Repository >:pull-request
.
- W przypadku zadań powiązanych ze środowiskiem:
- Nazwa jest nazwą poświadczenia federacyjnego, którego nie można później zmienić.
-
Grupa odbiorców wymienia odbiorców, którzy mogą pojawić się w tokenie zewnętrznym. To pole jest obowiązkowe. Zalecana wartość to
api://AzureADTokenExchange
.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://token.actions.githubusercontent.com/' -Name 'GitHub-Actions-Test' -Subject 'repo:octo-org/octo-repo:environment:Production'
Przykład rozwiązania Kubernetes
- ApplicationObjectId: identyfikator obiektu aplikacji (a nie identyfikator aplikacji (klienta) wcześniej zarejestrowany w identyfikatorze Entra firmy Microsoft.
- Wystawca to adres URL wystawcy konta usługi (adres URL wystawcy OIDC dla klastra zarządzanego lub adres URL wystawcy OIDC dla klastra zarządzanego samodzielnie).
-
Subject to nazwa podmiotu w tokenach wystawionych dla konta usługi. Platforma Kubernetes używa następującego formatu dla nazw podmiotów:
system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. - Nazwa jest nazwą poświadczenia federacyjnego, którego nie można później zmienić.
-
Odbiorcy wyświetla listę odbiorców, którzy mogą pojawić się w
aud
żądaniu tokenu zewnętrznego.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/' -Name 'Kubernetes-federated-credential' -Subject 'system:serviceaccount:erp8asle:pod-identity-sa'
Przykład innych dostawców tożsamości
Określ następujące parametry (na przykład przy użyciu obciążenia oprogramowania uruchomionego w usłudze Google Cloud):
- objectID: identyfikator obiektu aplikacji (a nie identyfikator aplikacji (klienta) zarejestrowany wcześniej w identyfikatorze Entra firmy Microsoft.
- Nazwa jest nazwą poświadczenia federacyjnego, którego nie można później zmienić.
-
Podmiot: musi być zgodny z oświadczeniem
sub
w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. W tym przykładzie z użyciem usługi Google Cloud, przedmiot jest unikatowym identyfikatorem konta usługi, którego planujesz użyć. -
Wystawca: musi być zgodny z oświadczeniem
iss
w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. Adres URL zgodny ze specyfikacją Discovery OIDC. Microsoft Entra ID używa tego adresu URL wystawcy do pobrania kluczy niezbędnych do zweryfikowania tokenu. Dla Google Cloud wystawcą jesthttps://accounts.google.com
. -
odbiorców: musi być zgodny z oświadczeniem
aud
w tokenie zewnętrznym. Ze względów bezpieczeństwa należy wybrać wartość unikatową dla tokenów przeznaczonych dla identyfikatora Entra firmy Microsoft. Zalecana wartość to "api://AzureADTokenExchange".
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'
Wyświetlanie listy poświadczeń tożsamości federacyjnej w aplikacji
Uruchom polecenie cmdlet Get-AzADAppFederatedCredential, aby wyświetlić poświadczenia tożsamości federacyjnej dla aplikacji.
Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential
Uzyskaj poświadczenie tożsamości federacyjnej w aplikacji
Uruchom polecenie cmdlet Get-AzADAppFederatedCredential, aby uzyskać poświadczenia tożsamości federacyjnej według identyfikatora z aplikacji.
Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Usuń poświadczenie tożsamości federacyjnej z aplikacji
Uruchom polecenie cmdlet Remove-AzADAppFederatedCredential, aby usunąć poświadczenia tożsamości federacyjnej z aplikacji.
Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Warunki wstępne
Utwórz rejestrację aplikacji w usłudze Microsoft Entra ID. Udziel aplikacji dostępu do zasobów platformy Azure przeznaczonych dla zewnętrznego obciążenia aplikacji.
Znajdź identyfikator obiektu aplikacji (a nie identyfikator aplikacji (klienta), który jest potrzebny w poniższych krokach. Identyfikator obiektu aplikacji można znaleźć w centrum administracyjnym Microsoft Entra. Przejdź do listy zarejestrowanych aplikacji i wybierz rejestrację aplikacji. W Przegląd–>Essentialsznajdź identyfikator obiektu .
Uzyskaj informacje dotyczące podmiotu i wystawcy dla zewnętrznego dostawcy tożsamości oraz aplikacji programistycznych, które są potrzebne w poniższych krokach.
Punkt końcowy programu Microsoft Graph (https://graph.microsoft.com
) uwidacznia interfejsy API REST w celu tworzenia, aktualizowania, usuwania federacyjnychIdentityCredentials w aplikacjach. Uruchom usługi Azure Cloud Shell i zaloguj się do dzierżawy, aby uruchomić polecenia Microsoft Graph w Azure CLI.
Skonfiguruj poświadczenie tożsamości federacyjnej w aplikacji
GitHub Actions
Uruchom następującą metodę, aby utworzyć nowe poświadczenie tożsamości federacyjnej w aplikacji (określone identyfikatorem obiektu aplikacji).
issuer
identyfikuje usługę GitHub jako zewnętrznego wystawcę tokenu.
subject
identyfikuje organizację, repozytorium i środowisko usługi GitHub dla przepływu pracy funkcji GitHub Actions. Gdy przepływ pracy funkcji GitHub Actions prosi platformę tożsamości firmy Microsoft o wymianę tokenu usługi GitHub na token dostępu, wartości w poświadczeniu tożsamości federacyjnej są sprawdzane względem podanego tokenu usługi GitHub.
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Testing","issuer":"https://token.actions.githubusercontent.com","subject":"repo:octo-org/octo-repo:environment:Production","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
Otrzymasz odpowiedź:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
W fragmencie kodu parametry są następujące:
-
name
: nazwa aplikacji platformy Azure. -
issuer
: ścieżka do dostawcy usług OIDC GitHub:https://token.actions.githubusercontent.com
. Ten wystawca staje się zaufany przez aplikację platformy Azure. -
subject
: zanim platforma Azure udzieli tokenu dostępu, żądanie musi być zgodne z warunkami zdefiniowanymi tutaj.- W przypadku zadań powiązanych ze środowiskiem:
repo:< Organization/Repository >:environment:< Name >
- W przypadku zadań, które nie są powiązane ze środowiskiem, dołącz ścieżkę ref dla gałęzi/tagu na podstawie ścieżki ref używanej do wyzwalania przepływu pracy:
repo:< Organization/Repository >:ref:< ref path>
. Na przykładrepo:n-username/ node_express:ref:refs/heads/my-branch
lubrepo:n-username/ node_express:ref:refs/tags/my-tag
. - W przypadku przepływów pracy wyzwalanych przez zdarzenie pull request:
repo:< Organization/Repository >:pull-request
.
- W przypadku zadań powiązanych ze środowiskiem:
-
audiences
wyświetla listę odbiorców, którzy mogą pojawić się w tokenie zewnętrznym. To pole jest obowiązkowe. Zalecana wartość to "api://AzureADTokenExchange".
Przykład rozwiązania Kubernetes
Uruchom następującą metodę, aby skonfigurować poświadczenia tożsamości federacyjnej w aplikacji i utworzyć relację zaufania z kontem usługi Kubernetes. Określ następujące parametry:
-
issuer
to adres URL wystawcy konta usługi (adres URL wystawcy OIDC dla klastra zarządzanego lub adres URL wystawcy OIDC dla klastra samodzielnie zarządzanego). -
subject
to nazwa podmiotu w tokenach wystawionych dla konta usługi. Platforma Kubernetes używa następującego formatu dla nazw podmiotów:system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. -
name
jest nazwą poświadczeń federacyjnych, których nie można później zmienić. -
audiences
wyświetla listę odbiorców, którzy mogą pojawić się w tokenie zewnętrznym. To pole jest obowiązkowe. Zalecana wartość to "api://AzureADTokenExchange".
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/","subject":"system:serviceaccount:erp8asle:pod-identity-sa","description":"Kubernetes service account federated credential","audiences":["api://AzureADTokenExchange"]}'
Otrzymasz odpowiedź:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Kubernetes service account federated credential",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"name": "Kubernetes-federated-credential",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa"
}
Przykład innych dostawców tożsamości
Uruchom następującą metodę, aby skonfigurować poświadczenia tożsamości federacyjnej w aplikacji i utworzyć relację zaufania z zewnętrznym dostawcą tożsamości. Określ następujące parametry (na przykład przy użyciu obciążenia oprogramowania uruchomionego w usłudze Google Cloud):
- nazwa jest nazwą poświadczenia federacyjnego, której nie można zmienić później.
- objectID: identyfikator obiektu aplikacji (a nie identyfikator aplikacji (klienta) zarejestrowany wcześniej w identyfikatorze Entra firmy Microsoft.
-
podmiot: musi zgadzać się z oświadczeniem
sub
w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. W tym przykładzie, korzystając z Google Cloud, temat jest unikatowym identyfikatorem konta usługi, którego planujesz użyć. -
wystawca: musi odpowiadać oświadczeniu
iss
w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. Adres URL zgodny ze specyfikacją odnajdywania OIDC. Microsoft Entra ID używa tego adresu URL wydawcy do pobrania kluczy niezbędnych do zweryfikowania tokenu. Dla usługi Google Cloud wystawca to „https://accounts.google.com"”. - Publiczność wyświetla listę odbiorców, którzy mogą pojawić się w tokenie zewnętrznym. To pole jest obowiązkowe. Zalecana wartość to "api://AzureADTokenExchange".
az rest --method POST --uri 'https://graph.microsoft.com/applications/<ObjectID>/federatedIdentityCredentials' --body '{"name":"GcpFederation","issuer":"https://accounts.google.com","subject":"112633961854638529490","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
Otrzymasz odpowiedź:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://accounts.google.com"",
"name": "GcpFederation",
"subject": "112633961854638529490"
}
Lista poświadczeń tożsamości federacyjnych w aplikacji
Uruchom następującą metodę, aby wyświetlić listę uwierzytelnień federacyjnych dla aplikacji (określonej przez identyfikator obiektu aplikacji):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'
Otrzymasz odpowiedź podobną do:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": [
{
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
]
}
Uzyskaj poświadczenia tożsamości federacyjnej w aplikacji
Uruchom następującą metodę, aby uzyskać poświadczenie tożsamości federacyjnej dla aplikacji (określoną przez identyfikator obiektu tej aplikacji):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Otrzymasz odpowiedź podobną do:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": {
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials('00001111-aaaa-2222-bbbb-3333cccc4444')/00001111-aaaa-2222-bbbb-3333cccc4444",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
}
Usuń poświadczenie tożsamości federacyjnej z aplikacji
Uruchom następującą metodę, aby usunąć poświadczenie tożsamości federacyjnej z aplikacji (określone przez identyfikator obiektu aplikacji):
az rest -m DELETE -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Zobacz też
- Aby dowiedzieć się, jak używać federacji tożsamości obciążenia dla platformy Kubernetes, zobacz Identyfikator obciążenia entra firmy Microsoft dla projektu open source platformy Kubernetes.
- Aby dowiedzieć się, jak używać federacji tożsamości obciążenia roboczego dla GitHub Actions, zobacz Konfigurowanie przepływu pracy GitHub Actions w celu uzyskania tokenu dostępu.
- Przeczytaj dokumentację funkcji GitHub Actions, aby dowiedzieć się więcej na temat konfigurowania przepływu pracy funkcji GitHub Actions w celu uzyskania tokenu dostępu od dostawcy tożsamości firmy Microsoft i uzyskiwania dostępu do zasobów platformy Azure.
- Aby uzyskać więcej informacji, przeczytaj, jak identyfikator Entra firmy Microsoft używa poświadczeń klienta protokołu OAuth 2.0 i asercji klienta wystawionej przez innego dostawcę tożsamości w celu uzyskania tokenu.
- Aby uzyskać informacje o wymaganym formacie JWT stworzonego przez zewnętrznych dostawców tożsamości, przeczytaj o formacie asercji .