Autentisering och auktorisering med Microsoft Entra-ID
I den här artikeln beskrivs hur du autentiserar Azure Event Grid-publiceringsklienter med hjälp av Microsoft Entra-ID.
Översikt
Microsoft Identity-plattformen tillhandahåller en integrerad autentiserings- och åtkomstkontrollhantering för resurser och program som använder Microsoft Entra-ID som identitetsprovider. Använd Microsofts identitetsplattform för att tillhandahålla stöd för autentisering och auktorisering i dina program. Den baseras på öppna standarder som OAuth 2.0 och OpenID Connect och erbjuder verktyg och bibliotek med öppen källkod som stöder många autentiseringsscenarier. Den innehåller avancerade funktioner som villkorsstyrd åtkomst som gör att du kan ange principer som kräver multifaktorautentisering eller tillåta åtkomst från specifika platser, till exempel.
En fördel som förbättrar din säkerhetsinställning när du använder Microsoft Entra-ID är att du inte behöver lagra autentiseringsuppgifter, till exempel autentiseringsnycklar, i koden eller lagringsplatserna. I stället förlitar du dig på förvärv av OAuth 2.0-åtkomsttoken från Microsofts identitetsplattform som ditt program presenterar när du autentiserar till en skyddad resurs. Du kan registrera ditt händelsepubliceringsprogram med Microsoft Entra-ID och hämta ett huvudnamn för tjänsten som är associerat med din app som du hanterar och använder. I stället kan du använda hanterade identiteter, antingen systemtilldelade eller användartilldelade, för en ännu enklare modell för identitetshantering eftersom vissa aspekter av identitetens livscykel hanteras åt dig.
Med rollbaserad åtkomstkontroll (RBAC) kan du konfigurera auktorisering på ett sätt som gör att vissa säkerhetsobjekt (identiteter för användare, grupper eller appar) har specifika behörigheter för att köra åtgärder över Azure-resurser. På så sätt måste säkerhetsobjektet som används av ett klientprogram som skickar händelser till Event Grid ha RBAC-rollen EventGrid Data Sender associerad med den.
Säkerhetsobjekt
Det finns två breda kategorier av säkerhetsobjekt som är tillämpliga när du diskuterar autentisering av en Event Grid-publiceringsklient:
- Hanterade identiteter. En hanterad identitet kan vara systemtilldelad, som du aktiverar på en Azure-resurs och som endast är associerad med den resursen, eller den användartilldelade, som du uttryckligen skapar och namnger. Användartilldelade hanterade identiteter kan associeras till mer än en resurs.
- Programmets säkerhetsobjekt. Det är en typ av säkerhetsobjekt som representerar ett program som har åtkomst till resurser som skyddas av Microsoft Entra-ID.
Oavsett vilket säkerhetsobjekt som används, en hanterad identitet eller ett programsäkerhetsobjekt använder klienten den identiteten för att autentisera före Microsoft Entra-ID och hämta en OAuth 2.0-åtkomsttoken som skickas med begäranden när händelser skickas till Event Grid. Denna token är kryptografiskt signerad och när Event Grid tar emot den verifieras token. Målgruppen (den avsedda mottagaren av token) bekräftas till exempel vara Event Grid (https://eventgrid.azure.net
), bland annat. Token innehåller information om klientidentiteten. Event Grid tar den identiteten och verifierar att klienten har rollen EventGrid Data Sender tilldelad till sig. Mer exakt kontrollerar Event Grid att identiteten har behörigheten Microsoft.EventGrid/events/send/action
i en RBAC-roll som är associerad med identiteten innan händelsepubliceringsbegäran kan slutföras.
Om du använder Event Grid SDK behöver du inte bekymra dig om information om hur du implementerar förvärv av åtkomsttoken och hur du inkluderar den med varje begäran till Event Grid eftersom Event Grid-dataplanets SDK:er gör det åt dig.
Klientkonfigurationssteg för att använda Microsoft Entra-autentisering
Utför följande steg för att konfigurera klienten så att den använder Microsoft Entra-autentisering när händelser skickas till ett ämne, en domän eller ett partnernamnområde.
- Skapa eller använd ett säkerhetsobjekt som du vill använda för att autentisera. Du kan använda en hanterad identitet eller ett programsäkerhetsobjekt.
- Bevilja behörighet till ett säkerhetsobjekt för att publicera händelser genom att tilldela rollen EventGrid Data Sender till säkerhetsobjektet.
- Använd Event Grid SDK för att publicera händelser till ett Event Grid.
Autentisera med en hanterad identitet
Hanterade identiteter är identiteter som är associerade med Azure-resurser. Hanterade identiteter ger en identitet som program använder när de använder Azure-resurser som stöder Microsoft Entra-autentisering. Program kan använda den hanterade identiteten för värdresursen som en virtuell dator eller Azure App Service för att hämta Microsoft Entra-token som visas med begäran när händelser publiceras till Event Grid. När programmet ansluter binder Event Grid den hanterade entitetens kontext till klienten. När den är associerad med en hanterad identitet kan din Event Grid-publiceringsklient utföra alla auktoriserade åtgärder. Auktorisering beviljas genom att associera en hanterad entitet till en Event Grid RBAC-roll.
Hanterad identitet tillhandahåller Azure-tjänster med en automatiskt hanterad identitet i Microsoft Entra-ID. Till skillnad från andra autentiseringsmetoder behöver du inte lagra och skydda åtkomstnycklar eller signaturer för delad åtkomst (SAS) i programkoden eller konfigurationen, varken för själva identiteten eller för de resurser som du behöver komma åt.
Om du vill autentisera din händelsepubliceringsklient med hanterade identiteter bestämmer du dig först för att vara värd för Azure-tjänsten för klientprogrammet och aktiverar sedan systemtilldelade eller användartilldelade hanterade identiteter på den Azure-tjänstinstansen. Du kan till exempel aktivera hanterade identiteter på en virtuell dator, en Azure App Service eller Azure Functions.
När du har konfigurerat en hanterad identitet i en värdtjänst tilldelar du behörigheten att publicera händelser till den identiteten.
Autentisera med ett säkerhetsobjekt för ett klientprogram
Förutom hanterade identiteter är ett annat identitetsalternativ att skapa ett säkerhetsobjekt för klientprogrammet. Därför måste du registrera ditt program med Microsoft Entra-ID. Att registrera ditt program är en gest genom vilken du delegerar identitets- och åtkomsthanteringskontroll till Microsoft Entra-ID. Följ stegen i avsnittet Registrera ett program och i avsnittet Lägg till en klienthemlighet. Se till att granska förutsättningarna innan du börjar.
När du har ett programsäkerhetsobjekt och följt ovanstående steg tilldelar du behörighet att publicera händelser till den identiteten.
Kommentar
När du registrerar ett program i portalen skapas ett programobjekt och ett huvudnamn för tjänsten automatiskt i din hemklientorganisation. Du kan också använda Microsot Graph för att registrera ditt program. Men om du registrerar eller skapar ett program med hjälp av Microsoft Graph-API:erna är det ett separat steg att skapa objektet för tjänstens huvudnamn.
Tilldela behörighet till ett säkerhetsobjekt för att publicera händelser
Identiteten som används för att publicera händelser till Event Grid måste ha den behörighet Microsoft.EventGrid/events/send/action
som gör att den kan skicka händelser till Event Grid. Den behörigheten ingår i den inbyggda RBAC-rollen Event Grid Data Sender. Den här rollen kan tilldelas ett säkerhetsobjekt för ett visst omfång, som kan vara en hanteringsgrupp, en Azure-prenumeration, en resursgrupp eller ett specifikt Event Grid-ämne, domän eller partnernamnområde. Följ stegen i Tilldela Azure-roller för att tilldela ett säkerhetsobjekt rollen EventGrid Data Sender och på så sätt bevilja ett program åtkomst med det säkerhetsobjektet för att skicka händelser. Du kan också definiera en anpassad roll som innehåller behörigheten Microsoft.EventGrid/events/send/action
och tilldela den anpassade rollen till ditt säkerhetsobjekt.
Med RBAC-privilegier som tagits hand om kan du nu skapa ditt klientprogram för att skicka händelser till Event Grid.
Kommentar
Event Grid stöder fler RBAC-roller i andra syften än att skicka händelser. Mer information finns i Inbyggda roller i Event Grid.
Publicera händelser med Event Grids klient-SDK:er
Använd Event Grids SDK för dataplanet för att publicera händelser till Event Grid. Event Grids SDK stöder alla autentiseringsmetoder, inklusive Microsoft Entra-autentisering.
Här är exempelkoden som publicerar händelser till Event Grid med hjälp av .NET SDK. Du kan hämta ämnesslutpunkten på sidan Översikt för ditt Event Grid-ämne i Azure Portal. Det är i formatet: https://<TOPIC-NAME>.<REGION>-1.eventgrid.azure.net/api/events
.
ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredential();
EventGridPublisherClient client = new EventGridPublisherClient( new Uri("<TOPIC ENDPOINT>"), managedIdentityCredential);
EventGridEvent egEvent = new EventGridEvent(
"ExampleEventSubject",
"Example.EventType",
"1.0",
"This is the event data");
// Send the event
await client.SendEventAsync(egEvent);
Förutsättningar
Följande är kraven för att autentisera till Event Grid.
- Installera SDK:et i ditt program.
- Installera Azure Identity-klientbiblioteket. Event Grid SDK är beroende av Azure Identity-klientbiblioteket för autentisering.
- Ett ämne, en domän eller ett partnernamnområde som ditt program skickar händelser till.
Publicera händelser med Microsoft Entra-autentisering
Om du vill skicka händelser till ett ämne, en domän eller ett partnernamnområde kan du skapa klienten på följande sätt. DEN API-version som först gav stöd för Microsoft Entra-autentisering är 2018-01-01
. Använd den API-versionen eller en senare version i ditt program.
Exempel:
Det här C#-kodfragmentet skapar en Event Grid-utgivarklient med hjälp av ett program (tjänstens huvudnamn) med en klienthemlighet för att aktivera metoden DefaultAzureCredential som du behöver för att lägga till Azure.Identity-biblioteket. Om du använder den officiella SDK:t hanterar SDK:t versionen åt dig.
Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", "");
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", "");
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", "");
EventGridPublisherClient client = new EventGridPublisherClient(new Uri("your-event-grid-topic-domain-or-partner-namespace-endpoint"), new DefaultAzureCredential());
Mer information finns i följande artiklar:
- Azure Event Grid-klientbibliotek för Java
- Azure Event Grid-klientbibliotek för .NET
- Azure Event Grid-klientbibliotek för JavaScript
- Azure Event Grid-klientbibliotek för Python
Inaktivera nyckel och signaturautentisering för delad åtkomst
Microsoft Entra-autentisering ger ett överlägset autentiseringsstöd än vad som erbjuds av åtkomstnyckel eller SAS-tokenautentisering (Signatur för delad åtkomst). Med Microsoft Entra-autentisering verifieras identiteten mot Microsoft Entra-identitetsprovidern. Som utvecklare behöver du inte hantera nycklar i koden om du använder Microsoft Entra-autentisering. Du kommer också att dra nytta av alla säkerhetsfunktioner som är inbyggda i Microsoft Identity-plattformen, till exempel villkorsstyrd åtkomst som kan hjälpa dig att förbättra programmets säkerhetsställning.
När du har bestämt dig för att använda Microsoft Entra-autentisering kan du inaktivera autentisering baserat på åtkomstnycklar eller SAS-token.
Kommentar
Acess-nycklar eller SAS-tokenautentisering är en form av lokal autentisering. du hör ibland referera till "lokal autentisering" när du diskuterar den här kategorin av autentiseringsmekanismer som inte förlitar sig på Microsoft Entra-ID. API-parametern som används för att inaktivera lokal autentisering anropas på lämpligt sätt. disableLocalAuth
Azure Portal
När du skapar ett nytt ämne kan du inaktivera lokal autentisering på fliken Avancerat på sidan Skapa ämne.
För ett befintligt ämne följer du de här stegen för att inaktivera lokal autentisering:
Gå till sidan Event Grid-ämne för ämnet och välj Aktiverad under Lokal autentisering
I popup-fönstret Lokal autentisering väljer du Inaktiverad och sedan OK.
Azure CLI
Följande CLI-kommando visar hur du skapar ett anpassat ämne med lokal autentisering inaktiverad. Funktionen inaktivera lokal autentisering är för närvarande tillgänglig som en förhandsversion och du måste använda API-versionen 2021-06-01-preview
.
az resource create --subscription <subscriptionId> --resource-group <resourceGroup> --resource-type Microsoft.EventGrid/topics --api-version 2021-06-01-preview --name <topicName> --location <location> --properties "{ \"disableLocalAuth\": true}"
Som referens är följande resurstypsvärden som du kan använda enligt det ämne som du skapar eller uppdaterar.
Ämnestyp | Resurstyp |
---|---|
Domäner | Microsoft.EventGrid/domains |
Partnernamnområde | Microsoft.EventGrid/partnerNamespaces |
Anpassat ämne | Microsoft.EventGrid/topics |
Azure PowerShell
Om du använder PowerShell använder du följande cmdletar för att skapa ett anpassat ämne med lokal autentisering inaktiverad.
Set-AzContext -SubscriptionId <SubscriptionId>
New-AzResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.EventGrid/topics -ApiVersion 2021-06-01-preview -ResourceName <TopicName> -Location <Location> -Properties @{disableLocalAuth=$true}
Kommentar
- Mer information om hur du använder åtkomstnyckeln eller signaturautentisering för delad åtkomst finns i Autentisera publiceringsklienter med nycklar eller SAS-token
- Den här artikeln handlar om autentisering vid publicering av händelser till Event Grid (händelse ingress). Autentisera Event Grid när händelser levereras (händelseutgående) är föremål för artikeln Autentisera händelseleverans till händelsehanterare.
Resurser
- SDK:er för dataplan
- Java SDK: Migreringsguide för GitHub-exempel | | från tidigare SDK-version
- .NET SDK: Migreringsguide för GitHub-exempel | | från tidigare SDK-version
- Python SDK: Migreringsguide för GitHub-exempel | | från tidigare SDK-version
- JavaScript SDK: Migreringsguide för GitHub-exempel | | från tidigare SDK-version
- Event Grid SDK-blogg
- Azure Identity-klientbibliotek
- Lär dig mer om hanterade identiteter
- Lär dig hur du använder hanterade identiteter för App Service och Azure Functions
- Lär dig mer om program och tjänstens huvudnamn
- Lär dig mer om att registrera ett program med Microsoft Identity-plattformen.
- Läs mer om hur auktorisering (RBAC-åtkomstkontroll) fungerar.
- Lär dig mer om inbyggda RBAC-roller i Event Grid, inklusive rollen Event Grid Data Sender . Event Grids rolllista.
- Lär dig mer om att tilldela RBAC-roller till identiteter.
- Lär dig mer om hur du definierar anpassade RBAC-roller.
- Lär dig mer om objekt för program och tjänstens huvudnamn i Microsoft Entra-ID.
- Läs mer om åtkomsttoken för Microsoft Identity Platform.
- Läs mer om OAuth 2.0-autentiseringskodflöde och Microsoft Identity Platform