Dela via


Konfigurera en app för att lita på en extern identitetsprovider

I den här artikeln beskrivs hur du hanterar federerade identitetsautentiseringsuppgifter i ett program i Microsoft Entra-ID. Den federerade identitetsautentiseringsuppgiften skapar en förtroenderelation mellan ett program och en extern identitetsprovider (IdP).

Du kan sedan konfigurera en extern programvaruarbetsbelastning för att byta ut en token från den externa IdP:t mot en åtkomsttoken från Microsofts identitetsplattform. Den externa arbetsbelastningen kan komma åt Microsoft Entra-skyddade resurser utan att behöva hantera hemligheter (i scenarier som stöds). Mer information om arbetsflödet för tokenutbyte finns i om arbetsbelastningsidentitetsfederation.

I den här artikeln får du lära dig hur du skapar, listar och tar bort federerade identitetsautentiseringsuppgifter för ett program i Microsoft Entra-ID.

Viktiga överväganden och begränsningar

Om du vill skapa, uppdatera eller ta bort en federerad identitetsautentiseringsuppgift måste kontot som utför åtgärden ha rollen Programadministratör, Programutvecklare, Molnprogramadministratör eller Programägare. Behörigheten microsoft.directory/applications/credentials/update krävs för att uppdatera en federerad identitetsautentisering.

Högst 20 federerade identitetsuppgifter kan läggas till i ett program eller en användartilldelad hanterad identitet.

När du konfigurerar en federerad identitetsautentiseringsuppgift finns det flera viktiga uppgifter att tillhandahålla:

  • utfärdare och ämne är de viktigaste delarna av informationen som behövs för att konfigurera förtroenderelationen. Kombinationen av issuer och subject måste vara unik för appen. När den externa programvaruarbetsbelastningen begär Microsofts identitetsplattform att byta ut den externa token mot en åtkomsttoken, kontrolleras utfärdaren och ämnesvärdena för den federerade identitetsautentiseringsuppgiften mot och subject anspråken issuer som anges i den externa token. Om verifieringskontrollen godkänns utfärdar Microsofts identitetsplattform en åtkomsttoken till den externa programvaruarbetsbelastningen.

  • utfärdaren är URL:en för den externa identitetsprovidern och måste matcha anspråket issuer för den externa token som utbyts. Obligatoriska. Om anspråket issuer har inledande eller avslutande blanksteg i värdet blockeras tokenutbytet. Det här fältet har en teckengräns på 600 tecken.

  • ämne är identifieraren för den externa programvaruarbetsbelastningen och måste matcha (subject) anspråket sub för den externa token som utbyts. subjektet har inget fast format, eftersom varje IdP använder sitt eget – ibland ett GUID, ibland en kolonavgränsad identifierare, ibland godtyckliga strängar. Det här fältet har en teckengräns på 600 tecken.

    Viktigt!

    Ämnesinställningsvärdena måste exakt matcha konfigurationen i GitHub-arbetsflödeskonfigurationen. Annars tittar Microsofts identitetsplattform på den inkommande externa token och avvisar utbytet för en åtkomsttoken. Du får inget fel. Utbytet misslyckas utan fel.

    Viktigt!

    Om du av misstag lägger till felaktig extern arbetsbelastningsinformation i ämnesinställningen skapas den federerade identitetsautentiseringsuppgiften utan fel. Felet blir inte uppenbart förrän tokenutbytet misslyckas.

  • målgrupper visar de målgrupper som kan visas i den externa token. Obligatoriska. Du måste lägga till ett enstaka målgruppsvärde som har en gräns på 600 tecken. Det rekommenderade värdet är "api://AzureADTokenExchange". Det står vad Microsofts identitetsplattform måste acceptera i anspråket aud i den inkommande token.

  • name är den unika identifieraren för den federerade identitetsautentiseringsuppgiften. Obligatoriska. Det här fältet har en teckengräns på 3–120 tecken och måste vara URL-vänligt. Alfanumeriska tecken, bindestreck eller understreck stöds. Det första tecknet får endast vara alfanumeriskt.  Den är oföränderlig när den har skapats.

  • beskrivning är den användardefinierade beskrivningen av de federerade identitetsautentiseringsuppgifterna. Valfritt. Beskrivningen verifieras inte eller kontrolleras inte av Microsoft Entra-ID. Det här fältet har en gräns på 600 tecken.

Jokertecken stöds inte i något federerat egenskapsvärde för identitetsautentiseringsuppgifter.

Mer information om regioner som stöds, tid för att sprida federerade uppdateringar av autentiseringsuppgifter, utfärdare som stöds med mera finns i Viktiga överväganden och begränsningar för federerade identitetsautentiseringsuppgifter.

Förutsättningar

Skapa en appregistrering i Microsoft Entra-ID. Ge din app åtkomst till de Azure-resurser som din externa programvaruarbetsbelastning riktar in sig på.

Hitta objekt-ID:t för appen (inte programmets (klient)-ID:t), som du behöver i följande steg. Du hittar objekt-ID:t för appen i administrationscentret för Microsoft Entra. Gå till listan över appregistreringar och välj din appregistrering. I Overview-Essentials hittar du objekt-ID>:t.

Hämta ämnes- och utfärdarinformation för din externa IdP- och programvaruarbetsbelastning, som du behöver i följande steg.

Konfigurera en federerad identitetsautentiseringsuppgift i en app

GitHub Actions

Följ dessa steg för att lägga till en federerad identitet för GitHub-åtgärder:

  1. Hitta din appregistrering i appregistreringsupplevelsen i administrationscentret för Microsoft Entra. Välj Certifikat och hemligheter i det vänstra navigeringsfönstret, välj fliken Federerade autentiseringsuppgifter och välj Lägg till autentiseringsuppgifter.

  2. I listrutan Federerade autentiseringsuppgifter väljer du GitHub actions deploying Azure resources (GitHub actions deploying Azure resources).

  3. Ange organisation och lagringsplats för ditt GitHub Actions-arbetsflöde.

  4. För Entitetstyp väljer du Miljö, Gren, Pull-begäran eller Tagg och anger värdet. Värdena måste exakt matcha konfigurationen i GitHub-arbetsflödet. Mönstermatchning stöds inte för grenar och taggar. Ange en miljö om ditt push-arbetsflöde körs mot många grenar eller taggar. Mer information finns i exemplen.

  5. Lägg till ett namn för de federerade autentiseringsuppgifterna.

  6. Fälten Utfärdare, Målgrupper och Ämnesidentifierare fylls i automatiskt baserat på de värden som du har angett.

  7. Välj Lägg till för att konfigurera federerade autentiseringsuppgifter.

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

Använd följande värden från din Microsoft Entra-programregistrering för ditt GitHub-arbetsflöde:

  • AZURE_CLIENT_ID program-ID :t (klient)

  • AZURE_TENANT_ID katalog-ID :t (klientorganisation)

    Följande skärmbild visar hur du kopierar program-ID och klientorganisations-ID.

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

  • AZURE_SUBSCRIPTION_ID ditt prenumerations-ID. Om du vill hämta prenumerations-ID:t öppnar du Prenumerationer i Azure-portalen och letar upp din prenumeration. Kopiera sedan prenumerations-ID :t.

Exempel på entitetstyp

Grenexempel

För ett arbetsflöde som utlöses av en push- eller pull-begärandehändelse på huvudgrenen:

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

Ange en entitetstyp för Branch och ett GitHub-grennamn för "main".

Miljöexempel

För Jobb som är knutna till en miljö med namnet "produktion":

on:
  push:
    branches:
      - main

jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: deploy
        # ...deployment-specific steps

Ange en entitetstyp för miljö och ett GitHub-miljönamn för "produktion".

Taggexempel

Till exempel för ett arbetsflöde som utlöses av en push-överföring till taggen med namnet "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.*

Ange en entitetstyp för tagg och ett GitHub-taggnamn för "v2".

Exempel på pull-begäran

För ett arbetsflöde som utlöses av en pull-begärandehändelse anger du en entitetstyp för Pull-begäran

Kubernetes

Hitta din appregistrering i appregistreringsupplevelsen i administrationscentret för Microsoft Entra. Välj Certifikat och hemligheter i det vänstra navigeringsfönstret, välj fliken Federerade autentiseringsuppgifter och välj Lägg till autentiseringsuppgifter.

Välj Scenariot Kubernetes accessing Azure resources (Kubernetes åtkomst till Azure-resurser ) i listrutan.

Fyll i fälten Cluster issuer URL, Namespace, Service account name och Name :

  • Url för kluster utfärdare är OIDC-utfärdarens URL för det hanterade klustret eller URL:en för OIDC-utfärdaren för ett självhanterat kluster.
  • Namnet på tjänstkontot är namnet på Kubernetes-tjänstkontot, som tillhandahåller en identitet för processer som körs i en podd.
  • Namnområde är namnområdet för tjänstkontot.
  • Namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.

Andra identitetsprovidrar

Hitta din appregistrering i appregistreringsupplevelsen i administrationscentret för Microsoft Entra. Välj Certifikat och hemligheter i det vänstra navigeringsfönstret, välj fliken Federerade autentiseringsuppgifter och välj Lägg till autentiseringsuppgifter.

Välj scenariot Annan utfärdare i den nedrullningsbara menyn.

Ange följande fält (med en programvaruarbetsbelastning som körs i Google Cloud som exempel):

  • Namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
  • Ämnesidentifierare: måste matcha anspråket sub i den token som utfärdats av den externa identitetsprovidern. I det här exemplet med Google Cloud är ämnet unikt ID för det tjänstkonto som du planerar att använda.
  • Utfärdare: måste matcha anspråket iss i den token som utfärdats av den externa identitetsprovidern. En URL som uppfyller OIDC Discovery-specifikationen. Microsoft Entra ID använder den här utfärdarens URL för att hämta de nycklar som krävs för att verifiera token. För Google Cloud är utfärdaren "https://accounts.google.com".

Visa en lista över autentiseringsuppgifter för federerad identitet i en app

Hitta din appregistrering i appregistreringsupplevelsen i administrationscentret för Microsoft Entra. Välj Certifikat och hemligheter i det vänstra navigeringsfönstret och välj fliken Federerade autentiseringsuppgifter . De federerade autentiseringsuppgifter som har konfigurerats i din app visas.

Ta bort en federerad identitetsautentiseringsuppgift från en app

Hitta din appregistrering i appregistreringsupplevelsen i administrationscentret för Microsoft Entra. Välj Certifikat och hemligheter i det vänstra navigeringsfönstret och välj fliken Federerade autentiseringsuppgifter . De federerade autentiseringsuppgifter som har konfigurerats i din app visas.

Om du vill ta bort en federerad identitetsautentiseringsuppgift väljer du ikonen Ta bort för autentiseringsuppgifterna.

Förutsättningar

  • Skapa en appregistrering i Microsoft Entra-ID. Ge din app åtkomst till de Azure-resurser som din externa programvaruarbetsbelastning riktar in sig på.
  • Leta upp objekt-ID, app-ID (klient)-ID eller identifierar-URI för appen, som du behöver i följande steg. Du hittar dessa värden i administrationscentret för Microsoft Entra. Gå till listan över registrerade program och välj din appregistrering. I Overview-Essentials hämtar du värdet objekt-ID, program-ID (klient) eller program-ID> som du behöver i följande steg.
  • Hämta ämnes- och utfärdarinformation för din externa IdP- och programvaruarbetsbelastning, som du behöver i följande steg.

Konfigurera en federerad identitetsautentiseringsuppgift i en app

Kör kommandot az ad app federated-credential create för att skapa en ny federerad identitetsautentiseringsuppgift i din app.

Parametern id anger identifierar-URI, program-ID eller objekt-ID för programmet. Parametern parameters anger parametrarna i JSON-format för att skapa den federerade identitetsautentiseringsuppgiften.

GitHub Actions-exempel

Namnet anger namnet på din federerade identitetsautentiseringsuppgift.

Utfärdaren identifierar sökvägen till GitHub OIDC-providern: https://token.actions.githubusercontent.com/. Den här utfärdaren blir betrodd av ditt Azure-program.

ämne identifierar GitHub-organisationen, lagringsplatsen och miljön för ditt GitHub Actions-arbetsflöde. När GitHub Actions-arbetsflödet begär Microsofts identitetsplattform att byta ut en GitHub-token mot en åtkomsttoken, kontrolleras värdena i den federerade identitetsautentiseringsuppgiften mot den angivna GitHub-token. Innan Azure beviljar en åtkomsttoken måste begäran matcha de villkor som definieras här.

  • För jobb som är knutna till en miljö: repo:< Organization/Repository >:environment:< Name >
  • För Jobb som inte är knutna till en miljö inkluderar du referenssökvägen för gren/tagg baserat på referenssökvägen som används för att utlösa arbetsflödet: repo:< Organization/Repository >:ref:< ref path>. Exempel: repo:n-username/ node_express:ref:refs/heads/my-branch eller repo:n-username/ node_express:ref:refs/tags/my-tag.
  • För arbetsflöden som utlöses av en pull-begärandehändelse: 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"
    ]
}

Kubernetes-exempel

utfärdaren är url:en för utfärdaren av tjänstkontot (OIDC-utfärdarens URL för det hanterade klustret eller URL:en för OIDC-utfärdaren för ett självhanterat kluster).

ämne är ämnesnamnet i de token som utfärdats till tjänstkontot. Kubernetes använder följande format för ämnesnamn: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.

name är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.

målgrupper visar de målgrupper som kan visas i den externa token. Fältet är obligatoriskt. Det rekommenderade värdet är "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"
    ]
}

Exempel på andra identitetsprovidrar

Du kan konfigurera en federerad identitetsautentiseringsuppgift i en app och skapa en förtroenderelation med andra externa identitetsprovidrar. I följande exempel används en programvaruarbetsbelastning som körs i Google Cloud som exempel:

name är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.

id: objekt-ID, program-ID (klient)-ID eller identifierar-URI för appen.

ämne: måste matcha anspråket sub i den token som utfärdats av den externa identitetsprovidern. I det här exemplet med Google Cloud är ämnet unikt ID för det tjänstkonto som du planerar att använda.

utfärdare: måste matcha anspråket iss i den token som utfärdats av den externa identitetsprovidern. En URL som uppfyller OIDC Discovery-specifikationen. Microsoft Entra ID använder den här utfärdarens URL för att hämta de nycklar som krävs för att verifiera token. För Google Cloud är utfärdaren "https://accounts.google.com".

målgrupper: visar en lista över målgrupper som kan visas i den externa token. Fältet är obligatoriskt. Det rekommenderade värdet är "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"
    ]
}

Visa en lista över autentiseringsuppgifter för federerad identitet i en app

Kör kommandot az ad app federated-credential list för att visa en lista över autentiseringsuppgifterna för federerad identitet i din app.

Id-parametern anger identifierar-URI, program-ID eller objekt-ID för programmet.

az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444

Hämta en federerad identitetsautentiseringsuppgift i en app

Kör kommandot az ad app federated-credential show för att hämta en federerad identitetsautentiseringsuppgift i din app.

Id-parametern anger identifierar-URI, program-ID eller objekt-ID för programmet.

ID:t för federerade autentiseringsuppgifter anger ID:t eller namnet på den federerade identitetens autentiseringsuppgifter.

az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb

Ta bort en federerad identitetsautentiseringsuppgift från en app

Kör kommandot az ad app federated-credential delete för att ta bort en federerad identitetsautentisering från din app.

Id-parametern anger identifierar-URI, program-ID eller objekt-ID för programmet.

ID:t för federerade autentiseringsuppgifter anger ID:t eller namnet på den federerade identitetens autentiseringsuppgifter.

az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb

Förutsättningar

  • Om du vill köra exempelskripten har du två alternativ:
    • Använd Azure Cloud Shell, som du kan öppna med hjälp av knappen Prova i det övre högra hörnet av kodblock.
    • Kör skript lokalt med Azure PowerShell enligt beskrivningen i nästa avsnitt.
  • Skapa en appregistrering i Microsoft Entra-ID. Ge din app åtkomst till de Azure-resurser som din externa programvaruarbetsbelastning riktar in sig på.
  • Hitta objekt-ID:t för appen (inte programmets (klient)-ID:t), som du behöver i följande steg. Du hittar objekt-ID:t för appen i administrationscentret för Microsoft Entra. Gå till listan över registrerade program och välj din appregistrering. I Overview-Essentials hittar du objekt-ID>:t.
  • Hämta ämnes- och utfärdarinformation för din externa IdP- och programvaruarbetsbelastning, som du behöver i följande steg.

Konfigurera Azure PowerShell lokalt

Så här använder du Azure PowerShell lokalt för den här artikeln i stället för att använda Cloud Shell:

  1. Installera den senaste versionen av Azure PowerShell om du inte redan har gjort det.

  2. Logga in på Azure.

    Connect-AzAccount
    
  3. Installera den senaste versionen av PowerShellGet.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    Du kan behöva Exit avsluta den aktuella PowerShell-sessionen när du har kört det här kommandot för nästa steg.

  4. Installera förhandsversionen av modulen Az.Resources för att utföra de federerade identitetsautentiseringsåtgärderna i den här artikeln.

    Install-Module -Name Az.Resources -AllowPrerelease
    

Konfigurera en federerad identitetsautentiseringsuppgift i en app

Kör cmdleten New-AzADAppFederatedCredential för att skapa en ny federerad identitetsautentisering i ett program.

GitHub Actions-exempel

  • ApplicationObjectId: objekt-ID för appen (inte programmets (klient)-ID:t) som du tidigare registrerade i Microsoft Entra-ID.
  • Utfärdaren identifierar GitHub som utfärdare av extern token.
  • Ämne identifierar GitHub-organisationen, lagringsplatsen och miljön för ditt GitHub Actions-arbetsflöde. När GitHub Actions-arbetsflödet begär Microsofts identitetsplattform att byta ut en GitHub-token mot en åtkomsttoken, kontrolleras värdena i den federerade identitetsautentiseringsuppgiften mot den angivna GitHub-token.
    • För jobb som är knutna till en miljö: repo:< Organization/Repository >:environment:< Name >
    • För Jobb som inte är knutna till en miljö inkluderar du referenssökvägen för gren/tagg baserat på referenssökvägen som används för att utlösa arbetsflödet: repo:< Organization/Repository >:ref:< ref path>. Exempel: repo:n-username/ node_express:ref:refs/heads/my-branch eller repo:n-username/ node_express:ref:refs/tags/my-tag.
    • För arbetsflöden som utlöses av en pull-begärandehändelse: repo:< Organization/Repository >:pull-request.
  • Namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
  • Målgruppen visar de målgrupper som kan visas i den externa token. Fältet är obligatoriskt. Det rekommenderade värdet är "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'

Kubernetes-exempel

  • ApplicationObjectId: objekt-ID för appen (inte programmets (klient)-ID:t) som du tidigare registrerade i Microsoft Entra-ID.
  • Utfärdaren är url:en för utfärdaren av tjänstkontot (OIDC-utfärdarens URL för det hanterade klustret eller URL:en för OIDC-utfärdaren för ett självhanterat kluster).
  • Ämne är ämnesnamnet i de token som utfärdas till tjänstkontot. Kubernetes använder följande format för ämnesnamn: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.
  • Namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
  • Målgruppen visar de målgrupper som kan visas i anspråket aud för den externa token.
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'

Exempel på andra identitetsprovidrar

Ange följande parametrar (med hjälp av en programvaruarbetsbelastning som körs i Google Cloud som exempel):

  • ObjectID: objekt-ID:t för appen (inte programmets (klient)-ID:t) som du tidigare registrerade i Microsoft Entra-ID.
  • Namn är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
  • Ämne: måste matcha anspråket sub i den token som utfärdats av den externa identitetsprovidern. I det här exemplet med Google Cloud är ämnet unikt ID för det tjänstkonto som du planerar att använda.
  • Utfärdare: måste matcha anspråket iss i den token som utfärdats av den externa identitetsprovidern. En URL som uppfyller OIDC Discovery-specifikationen. Microsoft Entra ID använder den här utfärdarens URL för att hämta de nycklar som krävs för att verifiera token. För Google Cloud är utfärdaren "https://accounts.google.com".
  • Målgrupper: måste matcha anspråket aud i den externa token. Av säkerhetsskäl bör du välja ett värde som är unikt för token som är avsett för Microsoft Entra-ID. Det rekommenderade värdet är "api://AzureADTokenExchange".
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'

Visa en lista över autentiseringsuppgifter för federerad identitet i en app

Kör cmdleten Get-AzADAppFederatedCredential för att visa en lista över autentiseringsuppgifterna för federerad identitet för ett program.

Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential

Hämta en federerad identitetsautentiseringsuppgift i en app

Kör cmdleten Get-AzADAppFederatedCredential för att hämta de federerade identitetsautentiseringsuppgifterna efter ID från ett program.

Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId

Ta bort en federerad identitetsautentiseringsuppgift från en app

Kör cmdleten Remove-AzADAppFederatedCredential för att ta bort en federerad identitetsautentisering från ett program.

Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId

Förutsättningar

Skapa en appregistrering i Microsoft Entra-ID. Ge din app åtkomst till de Azure-resurser som din externa programvaruarbetsbelastning riktar in sig på.

Hitta objekt-ID:t för appen (inte programmets (klient)-ID:t), som du behöver i följande steg. Du hittar objekt-ID:t för appen i administrationscentret för Microsoft Entra. Gå till listan över registrerade program och välj din appregistrering. I Overview-Essentials hittar du objekt-ID>:t.

Hämta ämnes- och utfärdarinformation för din externa IdP- och programvaruarbetsbelastning, som du behöver i följande steg.

Microsoft Graph-slutpunkten (https://graph.microsoft.com) exponerar REST-API:er för att skapa, uppdatera, ta bort federeradeIdentityCredentials i program. Starta Azure Cloud Shell och logga in på din klientorganisation för att köra Microsoft Graph-kommandon från AZ CLI.

Konfigurera en federerad identitetsautentiseringsuppgift i en app

GitHub Actions

Kör följande metod för att skapa en ny federerad identitetsautentiseringsuppgift i din app (anges av appens objekt-ID). Utfärdaren identifierar GitHub som utfärdare av extern token. ämne identifierar GitHub-organisationen, lagringsplatsen och miljön för ditt GitHub Actions-arbetsflöde. När GitHub Actions-arbetsflödet begär Microsofts identitetsplattform att byta ut en GitHub-token mot en åtkomsttoken, kontrolleras värdena i den federerade identitetsautentiseringsuppgiften mot den angivna GitHub-token.

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"]}'

Och du får svaret:

{
  "@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"
}

name: Namnet på ditt Azure-program.

issuer: Sökvägen till GitHub OIDC-providern: https://token.actions.githubusercontent.com. Den här utfärdaren blir betrodd av ditt Azure-program.

ämne: Innan Azure beviljar en åtkomsttoken måste begäran matcha de villkor som definieras här.

  • För jobb som är knutna till en miljö: repo:< Organization/Repository >:environment:< Name >
  • För Jobb som inte är knutna till en miljö inkluderar du referenssökvägen för gren/tagg baserat på referenssökvägen som används för att utlösa arbetsflödet: repo:< Organization/Repository >:ref:< ref path>. Exempel: repo:n-username/ node_express:ref:refs/heads/my-branch eller repo:n-username/ node_express:ref:refs/tags/my-tag.
  • För arbetsflöden som utlöses av en pull-begärandehändelse: repo:< Organization/Repository >:pull-request.

målgrupper visar de målgrupper som kan visas i den externa token. Fältet är obligatoriskt. Det rekommenderade värdet är "api://AzureADTokenExchange".

Kubernetes-exempel

Kör följande metod för att konfigurera en federerad identitetsautentiseringsuppgift i en app och skapa en förtroenderelation med ett Kubernetes-tjänstkonto. Ange följande parametrar:

  • utfärdaren är url:en för utfärdaren av tjänstkontot (OIDC-utfärdarens URL för det hanterade klustret eller URL:en för OIDC-utfärdaren för ett självhanterat kluster).
  • ämne är ämnesnamnet i de token som utfärdats till tjänstkontot. Kubernetes använder följande format för ämnesnamn: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.
  • name är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
  • målgrupper visar de målgrupper som kan visas i den externa token. Fältet är obligatoriskt. Det rekommenderade värdet är "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"]}'

Och du får svaret:

{
  "@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"
}

Exempel på andra identitetsprovidrar

Kör följande metod för att konfigurera en federerad identitetsautentiseringsuppgift i en app och skapa en förtroenderelation med en extern identitetsprovider. Ange följande parametrar (med hjälp av en programvaruarbetsbelastning som körs i Google Cloud som exempel):

  • name är namnet på den federerade autentiseringsuppgiften, som inte kan ändras senare.
  • ObjectID: objekt-ID:t för appen (inte programmets (klient)-ID:t) som du tidigare registrerade i Microsoft Entra-ID.
  • ämne: måste matcha anspråket sub i den token som utfärdats av den externa identitetsprovidern. I det här exemplet med Google Cloud är ämnet unikt ID för det tjänstkonto som du planerar att använda.
  • utfärdare: måste matcha anspråket iss i den token som utfärdats av den externa identitetsprovidern. En URL som uppfyller OIDC Discovery-specifikationen. Microsoft Entra ID använder den här utfärdarens URL för att hämta de nycklar som krävs för att verifiera token. För Google Cloud är utfärdaren "https://accounts.google.com".
  • målgrupper visar de målgrupper som kan visas i den externa token. Fältet är obligatoriskt. Det rekommenderade värdet är "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"]}'

Och du får svaret:

{
  "@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"
}

Visa en lista över autentiseringsuppgifter för federerad identitet i en app

Kör följande metod för att lista de federerade identitetsautentiseringsuppgifterna för en app (anges av appens objekt-ID):

az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'

Och du får ett svar som liknar:

{
  "@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"
    }
  ]
}

Hämta en federerad identitetsautentiseringsuppgift i en app

Kör följande metod för att hämta en federerad identitetsautentiseringsuppgift för en app (anges av appens objekt-ID):

az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'

Och du får ett svar som liknar:

{
  "@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"
    }
}

Ta bort en federerad identitetsautentiseringsuppgift från en app

Kör följande metod för att ta bort en federerad identitetsautentiseringsuppgift från en app (anges av appens objekt-ID):

az rest -m DELETE  -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'

Nästa steg

  • Information om hur du använder arbetsbelastningsidentitetsfederation för Kubernetes finns i Microsoft Entra Workload ID for Kubernetes öppen källkod project.
  • Information om hur du använder arbetsbelastningsidentitetsfederation för GitHub Actions finns i Konfigurera ett GitHub Actions-arbetsflöde för att hämta en åtkomsttoken.
  • Läs GitHub Actions-dokumentationen om du vill veta mer om hur du konfigurerar ditt GitHub Actions-arbetsflöde för att få en åtkomsttoken från Microsofts identitetsprovider och få åtkomst till Azure-resurser.
  • Mer information finns i hur Microsoft Entra ID använder OAuth 2.0-klientautentiseringsuppgifterna och ett klientintyg som utfärdats av en annan IdP för att hämta en token.
  • Information om det nödvändiga formatet för JWT:er som skapats av externa identitetsprovidrar finns i kontrollformatet.