Udostępnij za pośrednictwem


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 i subject 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 i subject 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świadczenie issuer 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:

  1. 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.

  2. W liście rozwijanej scenariusza poświadczeń federacyjnych wybierz akcje GitHub wdrażające zasoby Azure.

  3. Określ przepływ pracy Organization and Repository for your GitHub Actions (Organizacja i repozytorium).

  4. 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 .

  5. Dodaj nazwę dla poświadczenia federacyjnego.

  6. Pola Wystawcy, Odbiorcówi Identyfikatora podmiotu są automatycznie wypełniane na podstawie wprowadzonych wartości.

  7. Aby skonfigurować poświadczenia federacyjne, wybierz pozycję i dodaj.

    Zrzut ekranu przedstawiający okno Dodawanie poświadczeń z przykładowymi wartościami.

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.

    Zrzut ekranu przedstawiający sposób kopiowania identyfikatora aplikacji i identyfikatora dzierżawy z centrum administracyjnego firmy Microsoft Entra.

  • 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 gałęzi oraz nazwę gałęzi GitHub "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 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 tagu oraz nazwę tagu usługi GitHub "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 & 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 , 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.
  • 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 wystawca jest .

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)

  1. Przejdź do Microsoft Entra ID i wybierz aplikację, w której chcesz skonfigurować poświadczenie tożsamości federacyjnej.
  2. W panelu nawigacyjnym po lewej stronie wybierz pozycję certyfikaty & tajemnice.
  3. Na karcie poświadczenia sfederowane wybierz opcję + Dodaj poświadczenie.
  4. W wyświetlonym oknie Dodaj poświadczenie z menu rozwijanego obok scenariusza federacyjnych poświadczeń, wybierz pozycję Inny wystawca.
  5. W w polu wprowadź wyrażenie dopasowania roszczenia, którego chcesz użyć.

Warunki wstępne

  • 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ład repo:n-username/ node_express:ref:refs/heads/my-branch lub repo: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 roszczenia sub 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ś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ą jest 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 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:

  1. Zainstaluj najnowszą wersję programu Azure PowerShell, jeśli jeszcze tego nie zrobiono.

  2. Zaloguj się do platformy Azure.

    Connect-AzAccount
    
  3. 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.

  4. 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ład repo:n-username/ node_express:ref:refs/heads/my-branch lub repo: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.
  • 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ład repo:n-username/ node_express:ref:refs/heads/my-branch lub repo: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.
  • 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ż