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ą a zewnętrznym dostawcą tożsamości .

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 Platforma tożsamości Microsoft. Obciążenie zewnętrzne może uzyskiwać dostęp do chronionych zasobów firmy Microsoft bez konieczności zarządzania wpisami tajnymi (w obsługiwanych scenariuszach). Aby dowiedzieć się więcej na temat przepływu pracy wymiany tokenów, przeczytaj o federacji tożsamości obciążenia.

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 mieć rolę Application Administracja istrator, Application Developer, Cloud Application Administracja istrator lub Właściciel aplikacji. Aby zaktualizować poświadczenia tożsamości federacyjnej, wymagane jest uprawnienie 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:

  • wystawca i podmiot to kluczowe informacje potrzebne do skonfigurowania relacji zaufania. Kombinacja elementów issuer i subject musi być unikatowa w aplikacji. Gdy obciążenie oprogramowania zewnętrznego żąda Platforma tożsamości Microsoft wymiany tokenu zewnętrznego dla tokenu dostępu, wystawca i wartości podmiotu poświadczeń tożsamości federacyjnej są sprawdzane względem issuer poświadczeń i subject podanych w tokenie zewnętrznym. Jeśli sprawdzanie poprawności zakończy się pomyślnie, Platforma tożsamości 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 issuer oświadczeniem wymienianego tokenu zewnętrznego. Wymagany. issuer Jeśli oświadczenie 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.

  • subject jest identyfikatorem obciążenia oprogramowania zewnętrznego i musi być zgodny sub z oświadczeniem (subject) zewnętrznego tokenu wymienianego. podmiot nie ma stałego formatu, ponieważ każdy dostawca tożsamości używa własnego identyfikatora — czasami identyfikator GUID, czasami identyfikator rozdzielany dwukropkiem, czasami dowolnych ciągów. To pole ma limit znaków 600 znaków.

    Ważne

    Wartości ustawień podmiotu muszą dokładnie odpowiadać konfiguracji w konfiguracji przepływu pracy usługi GitHub. W przeciwnym razie Platforma tożsamości 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żne

    Jeśli przypadkowo dodasz nieprawidłowe informacje o obciążeniu zewnętrznym w temacie , ustawienie poświadczenia tożsamości federacyjnej zostanie utworzone pomyślnie bez błędu. Błąd nie jest widoczny, dopóki wymiana tokenów nie powiedzie się.

  • odbiorcy wyświetlają listę odbiorców, którzy mogą pojawić się w tokenie zewnętrznym. Wymagany. Musisz dodać pojedynczą wartość odbiorców, która ma limit 600 znaków. Zalecana wartość to "api://AzureADTokenExchange". Mówi, co Platforma tożsamości Microsoft musi zaakceptować w oświadczeniu aud w tokenie przychodzącym.

  • name jest unikatowym identyfikatorem poświadczeń tożsamości federacyjnej. Wymagany. To pole ma limit znaków od 3 do 120 znaków i musi być przyjazny dla adresu URL. Obsługiwane są znaki alfanumeryczne, kreskowe lub podkreślenia. Pierwszy znak musi być tylko alfanumeryczny.  Jest niezmienny po utworzeniu.

  • opis to podany przez użytkownika opis poświadczeń tożsamości federacyjnej. Opcjonalny. 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świadczeń tożsamości federacyjnej.

Aby dowiedzieć się więcej na temat obsługiwanych regionów, czasu na propagowanie aktualizacji poświadczeń federacyjnych, obsługiwanych wystawców i nie tylko, przeczytaj Ważne zagadnienia i ograniczenia dotyczące poświadczeń tożsamości federacyjnej.

Wymagania wstępne

Utwórz rejestrację aplikacji w usłudze Microsoft Entra ID. Udziel aplikacji dostępu do zasobów platformy Azure przeznaczonych dla obciążenia oprogramowania zewnętrznego.

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 firmy Microsoft Entra. Przejdź do listy rejestracji aplikacji i wybierz rejestrację aplikacji. W obszarze Overview-Essentials> znajdź identyfikator obiektu.

Uzyskaj informacje o temacie 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

Funkcja GitHub Actions

Aby dodać tożsamość federacyjną dla funkcji GitHub Actions, wykonaj następujące kroki:

  1. Znajdź rejestrację aplikacji w środowisku rejestracji aplikacji centrum administracyjnego firmy Microsoft Entra. Wybierz pozycję Certyfikaty i wpisy tajne w okienku nawigacji po lewej stronie, wybierz kartę Poświadczenia federacyjne i wybierz pozycję Dodaj poświadczenia.

  2. Z listy rozwijanej Scenariusz poświadczeń federacyjnych wybierz pozycję Akcje usługi GitHub wdrażające zasoby platformy Azure.

  3. Określ organizacjęi repozytorium dla przepływu pracy funkcji GitHub Actions.

  4. W polu Typ jednostki wybierz pozycję Środowisko, Gałąź, Żądanie ściągnięcia lub Tag 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 on-push jest uruchamiany względem wielu gałęzi lub tagów. Aby uzyskać więcej informacji, przeczytaj przykłady.

  5. Dodaj nazwę dla poświadczeń federacyjnych.

  6. Pola Wystawca, Odbiorcy i Identyfikator podmiotu są automatycznie wypełniane na podstawie wprowadzonych wartości.

  7. Wybierz pozycję Dodaj , aby skonfigurować poświadczenia federacyjne.

    Screenshot of the Add a credential window, showing sample values.

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 katalogu (dzierżawy)

    Poniższy zrzut ekranu przedstawia sposób kopiowania identyfikatora aplikacji i identyfikatora dzierżawy.

    Screenshot that demonstrates how to copy the application ID and tenant ID from Microsoft Entra admin center.

  • AZURE_SUBSCRIPTION_ID identyfikator subskrypcji. Aby uzyskać identyfikator subskrypcji, otwórz pozycję Subskrypcje w witrynie 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 i 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 Środowiska i 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 i nazwę tagu usługi GitHub "v2".

Przykład żądania ściągnięcia

W przypadku przepływu pracy wyzwalanego przez zdarzenie żądania ściągnięcia określ typjednostki żądania ściągnięcia

Kubernetes

Znajdź rejestrację aplikacji w środowisku rejestracji aplikacji centrum administracyjnego firmy Microsoft Entra. Wybierz pozycję Certyfikaty i wpisy tajne w okienku nawigacji po lewej stronie, wybierz kartę Poświadczenia federacyjne i wybierz pozycję Dodaj poświadczenia.

Z menu rozwijanego wybierz scenariusz Kubernetes, który uzyskuje dostęp do zasobów platformy Azure.

Wypełnij pola 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ść procesów uruchamianych w zasobniku.
  • Przestrzeń nazw to przestrzeń nazw konta usługi.
  • Nazwa to nazwa poświadczenia federacyjnego, którego nie można później zmienić.

Inni dostawcy tożsamości

Znajdź rejestrację aplikacji w środowisku rejestracji aplikacji centrum administracyjnego firmy Microsoft Entra. Wybierz pozycję Certyfikaty i wpisy tajne w okienku nawigacji po lewej stronie, wybierz kartę Poświadczenia federacyjne i wybierz pozycję Dodaj poświadczenia.

Z menu rozwijanego wybierz pozycję Inny scenariusz wystawcy .

Określ następujące pola (na przykład przy użyciu obciążenia oprogramowania uruchomionego w usłudze Google Cloud):

  • Nazwa to nazwa poświadczenia federacyjnego, którego nie można później zmienić.
  • Identyfikator podmiotu: musi być zgodny z oświadczeniem sub w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. W tym przykładzie korzystającym z usługi Google Cloud temat jest unikatowym identyfikatorem konta usługi, którego zamierzasz 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ą odnajdywania OIDC. Identyfikator Entra firmy Microsoft używa tego adresu URL wystawcy do pobrania kluczy niezbędnych do zweryfikowania tokenu. W przypadku usługi Google Cloud wystawca to "https://accounts.google.com".

Wyświetlanie listy poświadczeń tożsamości federacyjnej w aplikacji

Znajdź rejestrację aplikacji w środowisku rejestracji aplikacji centrum administracyjnego firmy Microsoft Entra. Wybierz pozycję Certyfikaty i wpisy tajne w okienku nawigacji po lewej stronie i wybierz kartę Poświadczenia federacyjne. Wyświetlane są poświadczenia federacyjne skonfigurowane w aplikacji.

Usuwanie poświadczeń tożsamości federacyjnej z aplikacji

Znajdź rejestrację aplikacji w środowisku rejestracji aplikacji centrum administracyjnego firmy Microsoft Entra. Wybierz pozycję Certyfikaty i wpisy tajne w okienku nawigacji po lewej stronie i wybierz kartę Poświadczenia federacyjne. Wyświetlane są poświadczenia federacyjne skonfigurowane w aplikacji.

Aby usunąć poświadczenia tożsamości federacyjnej, wybierz ikonę Usuń dla poświadczenia.

Wymagania wstępne

  • Utwórz rejestrację aplikacji w usłudze Microsoft Entra ID. Udziel aplikacji dostępu do zasobów platformy Azure przeznaczonych dla obciążenia oprogramowania zewnętrznego.
  • 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 centrum administracyjnym firmy Microsoft Entra. Przejdź do listy zarejestrowanych aplikacji i wybierz rejestrację aplikacji. W obszarze Overview-Essentials> pobierz identyfikator obiektu, identyfikator aplikacji (klienta) lub wartość identyfikatora URI identyfikatora aplikacji, która jest potrzebna w poniższych krokach.
  • Uzyskaj informacje o temacie 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

Uruchom polecenie az ad app federated-credential create, aby utworzyć nowe poświadczenia tożsamości federacyjnej w aplikacji.

Parametr id określa identyfikator URI identyfikatora, 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 usługi GitHub: https://token.actions.githubusercontent.com/. Ten wystawca stanie się zaufany przez aplikację platformy Azure.

temat identyfikuje organizację, repozytorium i środowisko usługi GitHub dla przepływu pracy funkcji GitHub Actions. Gdy przepływ pracy funkcji GitHub Actions żąda Platforma tożsamości Microsoft w celu wymiany tokenu usługi GitHub dla tokenu dostępu, wartości w poświadczeniu tożsamości federacyjnej są sprawdzane względem podanego tokenu usługi GitHub. Zanim platforma Azure przyzna token dostępu, żądanie musi być zgodne z warunkami zdefiniowanymi w tym miejscu.

  • 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 żądania ściągnięcia: repo:< Organization/Repository >:pull-request.
az ad app federated-credential create --id f6475511-fd81-4965-a00e-41e7792b7b9c --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 zarządzanego).

subject jest nazwą podmiotu w tokenach wystawionych na koncie usługi. Platforma Kubernetes używa następującego formatu dla nazw podmiotów: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.

name to nazwa poświadczeń federacyjnych, których nie można później zmienić.

odbiorcy wyświetlają 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 f6475511-fd81-4965-a00e-41e7792b7b9c --parameters credential.json
("credential.json" contains the following content)
{
    "name": "Kubernetes-federated-credential",
    "issuer": "https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/",
    "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 to nazwa poświadczeń federacyjnych, których nie można później zmienić.

id: identyfikator obiektu, identyfikator aplikacji (klienta) lub identyfikator URI aplikacji.

podmiot: musi być zgodny z oświadczeniem sub w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. W tym przykładzie korzystającym z usługi Google Cloud temat jest unikatowym identyfikatorem konta usługi, którego zamierzasz 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ą odnajdywania OIDC. Identyfikator Entra firmy Microsoft używa tego adresu URL wystawcy do pobrania kluczy niezbędnych do zweryfikowania tokenu. W przypadku usługi Google Cloud wystawca to "https://accounts.google.com".

odbiorców: 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 f6475511-fd81-4965-a00e-41e7792b7b9c --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świetlanie listy 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 aplikacji.

Parametr id określa identyfikator URI identyfikatora, identyfikator aplikacji lub identyfikator obiektu aplikacji.

az ad app federated-credential list --id f6475511-fd81-4965-a00e-41e7792b7b9c

Pobieranie poświadczeń tożsamości federacyjnej w aplikacji

Uruchom polecenie az ad app federated-credential show, aby uzyskać poświadczenia tożsamości federacyjnej w aplikacji.

Parametr id określa identyfikator URI identyfikatora, identyfikator aplikacji lub identyfikator obiektu aplikacji.

Identyfikator federated-credential-id określa identyfikator lub nazwę poświadczeń tożsamości federacyjnej.

az ad app federated-credential show --id f6475511-fd81-4965-a00e-41e7792b7b9c --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb

Usuwanie poświadczeń tożsamości federacyjnej z aplikacji

Uruchom polecenie az ad app federated-credential delete, aby usunąć poświadczenia tożsamości federacyjnej z aplikacji.

Parametr id określa identyfikator URI identyfikatora, identyfikator aplikacji lub identyfikator obiektu aplikacji.

Identyfikator federated-credential-id określa identyfikator lub nazwę poświadczeń tożsamości federacyjnej.

az ad app federated-credential delete --id f6475511-fd81-4965-a00e-41e7792b7b9c --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb

Wymagania wstępne

  • Aby uruchomić przykładowe skrypty, dostępne są dwie opcje:
    • Użyj usługi Azure Cloud Shell, którą można otworzyć za pomocą 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. Udziel aplikacji dostępu do zasobów platformy Azure przeznaczonych dla obciążenia oprogramowania zewnętrznego.
  • 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 firmy Microsoft Entra. Przejdź do listy zarejestrowanych aplikacji i wybierz rejestrację aplikacji. W obszarze Overview-Essentials> znajdź identyfikator obiektu.
  • Uzyskaj informacje o temacie i wystawcy dla zewnętrznego dostawcy tożsamości i obciążenia oprogramowania, które są 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:

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

  2. Zaloguj się do 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 wylogowanie Exit się z bieżącej sesji programu PowerShell.

  4. Zainstaluj wersję wstępną modułu Az.Resources , aby wykonać operacje poświadczeń tożsamości federacyjnej w tym artykule.

    Install-Module -Name Az.Resources -AllowPrerelease
    

Konfigurowanie poświadczeń tożsamości federacyjnej w aplikacji

Uruchom polecenie cmdlet New-AzADAppFederatedCredential, aby utworzyć nowe poświadczenia 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 usługi GitHub dla przepływu pracy funkcji GitHub Actions. Gdy przepływ pracy funkcji GitHub Actions żąda Platforma tożsamości Microsoft w celu wymiany tokenu usługi GitHub dla tokenu dostępu, wartości w poświadczeniu tożsamości federacyjnej są sprawdzane względem podanego tokenu usługi 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ę 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 żądania ściągnięcia: repo:< Organization/Repository >:pull-request.
  • Nazwa to nazwa poświadczenia federacyjnego, którego nie można później zmienić.
  • Odbiorcy wyświetlają 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).
  • Temat jest nazwą podmiotu w tokenach wystawionych na koncie 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świadczenia federacyjnego, którego nie można później zmienić.
  • Odbiorcy wyświetlają listę odbiorców, którzy mogą pojawić się w aud oświadczeniu tokenu zewnętrznego.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/' -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) wcześniej zarejestrowany w identyfikatorze Entra firmy Microsoft.
  • Nazwa to nazwa poświadczenia federacyjnego, którego nie można później zmienić.
  • Temat: musi być zgodny z oświadczeniem sub w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. W tym przykładzie korzystającym z usługi Google Cloud temat jest unikatowym identyfikatorem konta usługi, którego zamierzasz 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ą odnajdywania OIDC. Identyfikator Entra firmy Microsoft używa tego adresu URL wystawcy do pobrania kluczy niezbędnych do zweryfikowania tokenu. W przypadku usługi Google Cloud wystawca to "https://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świetlanie listy poświadczeń tożsamości federacyjnej w aplikacji

Uruchom polecenie cmdlet Get-AzADAppFederatedCredential, aby wyświetlić listę poświadczeń tożsamości federacyjnej dla aplikacji.

Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential

Pobieranie poświadczeń 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

Usuwanie poświadczeń 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

Wymagania wstępne

Utwórz rejestrację aplikacji w usłudze Microsoft Entra ID. Udziel aplikacji dostępu do zasobów platformy Azure przeznaczonych dla obciążenia oprogramowania zewnętrznego.

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 firmy Microsoft Entra. Przejdź do listy zarejestrowanych aplikacji i wybierz rejestrację aplikacji. W obszarze Overview-Essentials> znajdź identyfikator obiektu.

Uzyskaj informacje o temacie i wystawcy dla zewnętrznego dostawcy tożsamości i obciążenia oprogramowania, 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ługę Azure Cloud Shell i zaloguj się do dzierżawy, aby uruchomić polecenia programu Microsoft Graph z poziomu interfejsu wiersza polecenia az.

Konfigurowanie poświadczeń tożsamości federacyjnej w aplikacji

Funkcja GitHub Actions

Uruchom następującą metodę, aby utworzyć nowe poświadczenia tożsamości federacyjnej w aplikacji (określone przez identyfikator obiektu aplikacji). Wystawca identyfikuje usługę GitHub jako zewnętrznego wystawcę tokenu. temat identyfikuje organizację, repozytorium i środowisko usługi GitHub dla przepływu pracy funkcji GitHub Actions. Gdy przepływ pracy funkcji GitHub Actions żąda Platforma tożsamości Microsoft w celu wymiany tokenu usługi GitHub dla tokenu 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/f6475511-fd81-4965-a00e-41e7792b7b9c/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('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Testing",
  "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
  "issuer": "https://token.actions.githubusercontent.com",
  "name": "Testing",
  "subject": "repo:octo-org/octo-repo:environment:Production"
}

name: nazwa aplikacji platformy Azure.

wystawca: ścieżka do dostawcy OIDC usługi GitHub: https://token.actions.githubusercontent.com. Ten wystawca stanie się zaufany przez aplikację platformy Azure.

subject: Zanim platforma Azure przyzna token 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 żądania ściągnięcia: repo:< Organization/Repository >:pull-request.

odbiorcy wyświetlają 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:

  • 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).
  • subject jest nazwą podmiotu w tokenach wystawionych na koncie usługi. Platforma Kubernetes używa następującego formatu dla nazw podmiotów: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.
  • name to nazwa poświadczeń federacyjnych, których nie można później zmienić.
  • odbiorcy wyświetlają 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/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/","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('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Kubernetes service account federated credential",
  "id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
  "issuer": "https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/",
  "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):

  • name to nazwa poświadczeń federacyjnych, których nie można później zmienić.
  • ObjectID: identyfikator obiektu aplikacji (a nie identyfikator aplikacji (klienta) wcześniej zarejestrowany w identyfikatorze Entra firmy Microsoft.
  • podmiot: musi być zgodny z oświadczeniem sub w tokenie wystawionym przez zewnętrznego dostawcę tożsamości. W tym przykładzie korzystającym z usługi Google Cloud temat jest unikatowym identyfikatorem konta usługi, którego zamierzasz 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ą odnajdywania OIDC. Identyfikator Entra firmy Microsoft używa tego adresu URL wystawcy do pobrania kluczy niezbędnych do zweryfikowania tokenu. W przypadku usługi Google Cloud wystawca to "https://accounts.google.com".
  • odbiorcy wyświetlają 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('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Testing",
  "id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
  "issuer": "https://accounts.google.com"",
  "name": "GcpFederation",
  "subject": "112633961854638529490"
}

Wyświetlanie listy poświadczeń tożsamości federacyjnej w aplikacji

Uruchom następującą metodę, aby wyświetlić listę poświadczeń tożsamości federacyjnej dla aplikacji (określonych przez identyfikator obiektu aplikacji):

az rest -m GET -u 'https://graph.microsoft.com/applications/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials'

Otrzymasz odpowiedź podobną do:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials",
  "value": [
    {
      "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
      "issuer": "https://token.actions.githubusercontent.com/",
      "name": "Testing",
      "subject": "repo:octo-org/octo-repo:environment:Production"
    }
  ]
}

Pobieranie poświadczeń tożsamości federacyjnej w aplikacji

Uruchom następującą metodę, aby uzyskać poświadczenia tożsamości federacyjnej dla aplikacji (określone przez identyfikator obiektu aplikacji):

az rest -m GET -u 'https://graph.microsoft.com/applications/f6475511-fd81-4965-a00e-41e7792b7b9c//federatedIdentityCredentials/1aa3e6a7-464c-4cd2-88d3-90db98132755'

Otrzymasz odpowiedź podobną do:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials",
  "value": {
      "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
      "@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials('f6475511-fd81-4965-a00e-41e7792b7b9c')/f6475511-fd81-4965-a00e-41e7792b7b9c",
    "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
      "issuer": "https://token.actions.githubusercontent.com/",
      "name": "Testing",
      "subject": "repo:octo-org/octo-repo:environment:Production"
    }
}

Usuwanie poświadczeń 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/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials/1aa3e6a7-464c-4cd2-88d3-90db98132755'

Następne kroki

  • Aby dowiedzieć się, jak używać federacji tożsamości obciążenia dla platformy Kubernetes, zobacz Tożsamość obciążeń Microsoft Entra dla projektu open source platformy Kubernetes.
  • Aby dowiedzieć się, jak używać federacji tożsamości obciążenia dla funkcji GitHub Actions, zobacz Konfigurowanie przepływu pracy funkcji 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 o tym, jak identyfikator entra firmy Microsoft używa udzielenia poświadczeń klienta OAuth 2.0 i potwierdzenia klienta wystawionego przez innego dostawcę tożsamości w celu uzyskania tokenu.
  • Aby uzyskać informacje o wymaganym formacie JWTs utworzonym przez zewnętrznych dostawców tożsamości, przeczytaj o formacie asercji.