Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En tjänst som körs i Google Cloud autentiserar normalt till Microsoft Entra ID med en lagrad Microsoft Entra programhemlighet så att den kan nå Azure resurser. Du måste skydda och rotera hemligheten och tjänsten drabbas av ett avbrott om hemligheten upphör att gälla innan du ersätter den.
Arbetsbelastningsidentitetsfederationen tar bort den lagrade hemligheten. Du konfigurerar ett Microsoft Entra program för att lita på den ID-token som Google utfärdar till ett Google Cloud-tjänstkonto, och din tjänst byter ut sin Google-utfärdade token mot en Microsoft Entra åtkomsttoken i stället för att lagra en autentiseringsuppgift.
I den här självstudien identifierar du ett Google Cloud-tjänstkonto, federerar det med ett Microsoft Entra-program och utbyter en Google-utfärdad ID-token för en Microsoft Entra åtkomsttoken som din arbetsbelastning använder för att anropa en Azure resurs, till exempel Azure Blob Storage.
Självstudien innehåller tre sekventiella delar som bygger på ett slutfört scenario. Varje del beror på utdata från delen före den.
I den här handledningen kommer du att:
- Identifiera ett Google Cloud-tjänstkonto och få dess unika ID.
- Konfigurera ett Microsoft Entra program för att lita på den Google-utfärdade token.
- Exchange en Google ID-token för en Microsoft Entra åtkomsttoken och få åtkomst till en Azure resurs.
Följande diagram visar federationsflödet för arbetsbelastningsidentitet: en arbetsbelastning hämtar en token från en extern identitetsprovider, utbyter den med Microsofts identitetsplattform för en åtkomsttoken och använder åtkomsttoken för att nå en Azure resurs. I den här självstudien är den externa identitetsprovidern Google Cloud och token är en Google-utfärdad ID-token.
Förutsättningar
- En Microsoft Entra klientorganisation och en Azure-prenumeration. Om du inte har en Azure-prenumeration, skapa ett gratis konto innan du börjar.
- Ett Google Cloud-projekt och en arbetsbelastning som körs på en Google Cloud-tjänst som kan hämta en ID-token för ett tjänstkonto, till exempel App Engine eller Compute Engine.
- Åtkomst till Google Cloud-konsolen med behörighet att visa tjänstkonton i IAM & Admin.
- Kommandoradsverktyget Azure CLI (
az) installerat och konfigurerat för att nå din klientorganisation. Du kan också slutföra de Microsoft Entra stegen i Microsoft Entra administrationscenter. - Behörighet att lägga till en federerad identitetsautentiseringsuppgift i en appregistrering eller hanterad identitet. Om du vill lägga till en federerad autentiseringsuppgift i en appregistrering måste ditt konto vara ägare till appen eller ha någon av rollerna Programadministratör, Programutvecklare eller Molnprogramadministratör eller ha behörigheten
microsoft.directory/applications/credentials/update.
Del 1: Identifiera ett Google Cloud-tjänstkonto
Din Google Cloud-arbetsbelastning behöver en identitet som Google kan utfärda token för. Google Cloud-tjänstkonton tillhandahåller den här identiteten. Använd standardtjänstkontot för ditt Google Cloud-projekt eller skapa ett dedikerat tjänstkonto för din arbetsbelastning.
Google utfärdar ID-token för ett tjänstkonto där anspråket sub (ämne) är tjänstkontots unika ID och anspråket (utfärdaren iss ) är https://accounts.google.com. Du använder båda värdena för att konfigurera förtroende för Microsoft Entra-programmet i del 2.
I Google Cloud-konsolen går du till IAM- ochadministratörstjänstkonton>.
Välj det tjänstkonto som din arbetsbelastning körs som.
Leta reda på dess unika ID på tjänstkontots information och kopiera värdet. Det här värdet är anspråket
subi de token som Google utfärdar för tjänstkontot.
Registrera det unika ID:t som <service-account-unique-id>. Du använder den som ämne för den federerade identitetsautentiseringsuppgiften i del 2.
Del 2: Konfigurera ett Microsoft Entra program för att lita på Google-token
I den här delen lägger du till en federerad identitetsautentiseringsuppgift i ett Microsoft Entra program så att Microsoft Entra ID litar på de ID-token som Google utfärdar för ditt tjänstkonto. En federerad identitetsautentiseringsuppgift behöver tre indata:
-
subject: måste matcha anspråketsubi den Google-utfärdade token – det unika ID:t för tjänstkontot,<service-account-unique-id>. -
issuer: måste matcha anspråketiss. För Google Cloud ärhttps://accounts.google.comdet här värdet . Utfärdaren måste följa OpenID Connect-identifieringsspecifikationen eftersom Microsoft Entra ID använder utfärdarens URL för att hämta nycklarna som verifierar token. -
audiences: måste matcha anspråketaud. Använd det Microsoft rekommenderade värdetapi://AzureADTokenExchange.
Ett Microsoft Entra program stöder ett begränsat antal federerade identitetsautentiseringsuppgifter. Den aktuella gränsen och andra begränsningar finns i Viktiga överväganden och begränsningar för federerade identitetsautentiseringsuppgifter.
Skapa en fil med namnet
credential.jsonmed följande innehåll. Ersätt<service-account-unique-id>med det unika ID som du kopierade i del 1.{ "name": "AccessFromGoogle", "issuer": "https://accounts.google.com", "subject": "<service-account-unique-id>", "audiences": ["api://AzureADTokenExchange"], "description": "Federated credential for a Google Cloud workload" }Lägg till den federerade identitetsautentiseringsuppgiften i din appregistrering. Ersätt
<your-app-id>med appregistreringens program-ID (klient-ID).az ad app federated-credential create --id <your-app-id> --parameters credential.json
Du kan också lägga till federerade autentiseringsuppgifter i Microsoft Entra administrationscenter. Gå till https://accounts.google.com som utfärdare och tjänstkontots unika ID som ämne. Detaljerade steg finns i Konfigurera en app för att lita på en extern identitetsprovider.
Använd följande kommando för att konfigurera autentiseringsuppgifterna för en användartilldelad hanterad identitet i stället för en appregistrering. Du behöver rollen Ägare eller Deltagare för den hanterade identiteten. Detaljerade steg finns i Konfigurera en användartilldelad hanterad identitet för att lita på en extern identitetsprovider.
az identity federated-credential create \
--name AccessFromGoogle \
--identity-name <your-identity-name> \
--resource-group <your-resource-group> \
--issuer https://accounts.google.com \
--subject <service-account-unique-id> \
--audience api://AzureADTokenExchange
Ge din app eller hanterade identitet åtkomst till de Azure resurser som din arbetsbelastning anropar, till exempel en rolltilldelning för ditt lagringskonto.
Del 3: Exchange en Google-token för en Microsoft Entra åtkomsttoken
I den här delen hämtar din arbetsbelastning en Google-utfärdad ID-token för sitt tjänstkonto och byter ut den mot en Microsoft Entra åtkomsttoken som används för att anropa en Azure resurs.
En Google Cloud-tjänst, till exempel App Engine eller Compute Engine, begär en ID-token för sitt tjänstkonto från Googles metadataserver. Google hanterar signeringsnycklarna, så din arbetsbelastning behöver inga lagrade nycklar.
Begär en Google ID-token från metadataservern. Målgruppen i begäran måste matcha den målgrupp som du konfigurerade för den federerade identitetsautentiseringsuppgiften,
api://AzureADTokenExchange. Följande Node.js kodfragment begär token och returnerar den som en sträng. Konceptet är detsamma på alla språk.async function getGoogleIdToken() { const endpoint = "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=api://AzureADTokenExchange"; const headers = { "Metadata-Flavor": "Google" }; const response = await fetch(endpoint, { method: "GET", headers }); return response.text(); }Exchange Google ID-token för en Microsoft Entra åtkomsttoken med hjälp
ClientAssertionCredentialav från Azure Identity SDK.ClientAssertionCredentialtar ett återanrop som returnerar den federerade försäkran – i det här fallet Google ID-token. Ange ditt Microsoft Entra klient-ID somtenantIdoch appregistreringens program-ID (klient)-ID somclientId.import { ClientAssertionCredential } from "@azure/identity"; const credential = new ClientAssertionCredential(tenantId, clientId, getGoogleIdToken);Använd autentiseringsuppgifterna med valfri Azure SDKs-klient. Om du till exempel vill anropa Azure Blob Storage:
const { BlobServiceClient } = require("@azure/storage-blob"); const blobClient = new BlobServiceClient(blobUrl, credential);
När klienten behöver en token anropas återanropet för att hämta en ny Google ID-token, byter Ut Google-token med Microsofts identitetsplattform för en åtkomsttoken och cachelagrar den resulterande åtkomsttoken. Eftersom ClientAssertionCredential tillhandahåller den federerade försäkran via ett återanrop lagrar din arbetsbelastning aldrig en hemlighet.
ClientAssertionCredentialär tillgängligt i Azure Identity SDK:er, inklusive .NET, Java, JavaScript, Python och Go. MSAL-biblioteken stöder även klientkontroller om du behöver kontroll på lägre nivå över tokenutbytet.
Din arbetsbelastning i Google Cloud kan nu komma åt Microsoft Entra skyddade resurser utan lagrade hemligheter.
Rensa resurser
Om du inte längre behöver de resurser som du skapade i den här självstudien tar du bort dem för att undvika löpande avgifter:
Ta bort den federerade identitetsautentiseringsuppgiften från din appregistrering:
az ad app federated-credential delete \ --id <your-app-id> \ --federated-credential-id AccessFromGoogleOm du har skapat ett dedikerat Google Cloud-tjänstkonto för den här självstudien tar du bort det i Google Cloud-konsolen under IAM- ochadministratörstjänstkonton>.
Ta bort rolltilldelningar som du har lagt till för att ge din app eller hanterade identitet åtkomst till Azure resurser.
Relaterat innehåll
- Identitetsfederation för arbetsbelastning
- Konfigurera en app för att lita på en extern identitetsprovider
- Konfigurera en användartilldelad hanterad identitet för att lita på en extern identitetsprovider
- Viktiga överväganden och begränsningar för federerade identitetsuppgifter
- Skapa en federeradIdentityCredential (Microsoft Graph)