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ętrzny proces oprogramowania w celu wymiany tokenu z zewnętrznego dostawcy tożsamości na token dostępu z platformy Microsoftu. 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 procesie wymiany tokenów, przeczytaj o federacji tożsamości obciążenia roboczego.
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świadczenia tożsamości federacyjnej, konto wykonujące akcję musi być właścicielem aplikacji lub mieć jedną z następujących ról Entra: Administrator aplikacji, Administrator aplikacji w chmurze, administrator globalnylub administrator tożsamości hybrydowej. Do zaktualizowania poświadczeń tożsamości federacyjnej wymagane jest pozwolenie 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 wystawcyoraz podmiotu poświadczeń tożsamości federacyjnej są sprawdzane względem roszczeń i 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 spacje w wartości, wymiana tokenów zostanie zablokowana. To pole ma limit znaków 600 znaków.podmiot to identyfikator zewnętrznego obciążenia oprogramowania i musi być zgodny z atrybutem
sub
(subject
) wymienianego zewnętrznego tokenu. Identyfikator nie ma ustalonego formatu, ponieważ każdy IdP (dostawca tożsamości) może korzystać z własnego – 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 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ść dla odbiorcy, która ma limit 600 znaków. Zalecana wartość to "api://AzureADTokenExchange". Określa, co platforma tożsamości Microsoft musi zaakceptować w atrybucie
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 .
- Pobierz informacje dotyczące podmiotu i wystawcy dla zewnętrznego IdP i obciążenia oprogramowania, które są potrzebne do wykonania poniższych kroków.
Skonfiguruj poświadczenia 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 Certyfikaty i tajne w lewym panelu nawigacji, wybierz kartę Poświadczenia Federacyjne i wybierz Dodaj poświadczenie.
W liście rozwijanej scenariusza poświadczeń federacyjnych wybierz akcje GitHub wdrażające zasoby Azure.
Określ organizację i repozytorium dla przepływu pracy GitHub Actions.
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 wzorców nie jest obsługiwane dla gałęzi i tagów. Określ środowisko, jeśli przepływ pracy typu „push” działa w kontekście wielu gałęzi lub tagów. 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
identyfikator Directory (dzierżawcy) IDPoniższy zrzut ekranu przedstawia sposób kopiowania identyfikatora aplikacji i identyfikatora dzierżawy.
Przykłady typów jednostek
Przykład gałęzi
W przypadku uruchomienia przepływu pracy przez zdarzenie push lub pull request w głównej gałęzi:
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Określ typ jednostki jako gałąź oraz nazwę gałęzi GitHub jako "main".
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Środowisko oraz nazwę środowiska GitHub "produkcyjne".
Przykład tagu
Na przykład, w przypadku przepływu pracy uruchamianego przez wypchnięcie na tag 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 jako tag oraz nazwę tagu GitHub jako "v2".
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 & Tajemnice 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łnij pola Adres URL klastra wystawcy, przestrzeń nazw, nazwa konta usługi i Nazwa:
- 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.
- Namespace to przestrzeń 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 & Tajemnice w okienku nawigacji po lewej, wybierz kartę Poświadczenia federacyjne, a następnie wybierz Dodaj poświadczenie.
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ąc z Google Cloud, subject 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, wystawca tohttps://accounts.google.com
.
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 & tajne w lewym panelu nawigacyjnym i wybierz zakładkę 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 dostosowanych do 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 dotyczące podmiotu i wystawcy dla zewnętrznego dostawcy tożsamości i obciążenia oprogramowania, które będą potrzebne w kolejnych krokach.
Konfigurowanie poświadczeń 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
Element name określa nazwę poświadczenia 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 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
.
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
Issuer to URL wystawcy konta usługi (URL wystawcy OIDC dla klastra zarządzanego lub URL wystawcy OIDC dla klastra samodzielnie zarządzanego).
Nazwa podmiotu jest używana 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ć.
Lista odbiorców zawiera 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 odpowiadać atrybutowisub
w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. W tym przykładzie korzystającym z Google Cloud, subject jest unikatowym identyfikatorem konta usługi, którego planujesz użyć. -
issuer
: musi odpowiadać twierdzeniuiss
w tokenie wydanym 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 . -
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świadczenie tożsamości federacyjnej na swojej 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 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 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 platformy Azure przeznaczonych dla 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 zarejestrowanych aplikacji i wybierz rejestrację aplikacji. W Przeglądzie—>Essentialsznajdź identyfikator obiektu .
- Uzyskaj informacje o podmiocie i wystawcy dla twojego zewnętrznego dostawcy tożsamości (IdP) oraz obciążenia roboczego oprogramowania, które będą potrzebne w poniższych 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 może być konieczne
Exit
z bieżącej sesji programu PowerShell przed przejściem do następnego kroku.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
Konfiguracja poświadczenia 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 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.
- 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
.
- W przypadku zadań powiązanych ze środowiskiem:
- Nazwa jest nazwą poświadczenia federacyjnego, którego nie można później zmienić.
-
Grupa odbiorców zawiera listę 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 podana w tokenach wystawionych dla konta serwisowego. 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 wykorzystaniem Google Cloud, subject to unikatowy identyfikator 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 Google Cloud wystawcą jesthttps://accounts.google.com
. -
Odbiorcy: muszą być zgodni 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świetl listę 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ć federacyjne poświadczenie tożsamości 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 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 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 i obciążenia oprogramowania, które są potrzebne w poniższych krokach.
Punkt końcowy Microsoft Graph (https://graph.microsoft.com
) udostępnia API REST do tworzenia, aktualizowania, usuwania federatedIdentityCredentials w aplikacjach. Uruchom Azure Cloud Shell i zaloguj się do tenant, aby uruchomić polecenia Microsoft Graph w Azure CLI.
Konfigurowanie poświadczeń 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 GitHub dla przepływu pracy 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.
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 zostaje uznany za zaufanego przez aplikację 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ą 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 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ługowego. 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 odpowiadać roszczeniu
sub
w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. W tym przykładzie, w którym wykorzystujemy Google Cloud, subject 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ą OIDC Discovery. Microsoft Entra ID używa tego adresu URL wystawcy do pobrania kluczy niezbędnych do zweryfikowania tokenu. Dla usługi Google Cloud wystawca to „https://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 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"
}
Wyświetl listę poświadczeń tożsamości federacyjnej 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świadczenie tożsamości federacyjnej za pomocą 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 użytkownika dla platformy Kubernetes, zobacz projekt open source Microsoft Entra Workload ID for Kubernetes.
- Aby dowiedzieć się, jak używać federacji tożsamości dla obciążeń roboczych w 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 dowiedzieć się o wymaganym formacie JWT tworzonym przez zewnętrznych dostawców tożsamości, proszę zapoznać się z formatem asercji .