Verificatie en autorisatie met Microsoft Entra-id
In dit artikel wordt beschreven hoe u Azure Event Grid-publicatieclients verifieert met behulp van Microsoft Entra-id.
Overzicht
Het Microsoft Identity Platform biedt geïntegreerd verificatie- en toegangsbeheer voor resources en toepassingen die Microsoft Entra ID gebruiken als id-provider. Gebruik het Microsoft Identity Platform om ondersteuning voor verificatie en autorisatie in uw toepassingen te bieden. Het is gebaseerd op open standaarden zoals OAuth 2.0 en OpenID Connect en biedt hulpprogramma's en opensource-bibliotheken die ondersteuning bieden voor veel verificatiescenario's. Het biedt geavanceerde functies zoals voorwaardelijke toegang waarmee u beleidsregels kunt instellen waarvoor meervoudige verificatie is vereist of toegang vanaf specifieke locaties is toegestaan, bijvoorbeeld.
Een voordeel dat uw beveiligingshouding verbetert wanneer u Microsoft Entra ID gebruikt, is dat u referenties, zoals verificatiesleutels, niet hoeft op te slaan in de code of opslagplaatsen. In plaats daarvan vertrouwt u op het verkrijgen van OAuth 2.0-toegangstokens van het Microsoft-identiteitsplatform dat uw toepassing presenteert bij verificatie bij een beveiligde resource. U kunt uw toepassing voor het publiceren van gebeurtenissen registreren bij Microsoft Entra ID en een service-principal ophalen die is gekoppeld aan uw app die u beheert en gebruikt. In plaats daarvan kunt u beheerde identiteiten gebruiken, ofwel door het systeem toegewezen of door de gebruiker toegewezen, voor een nog eenvoudiger identiteitsbeheermodel, omdat sommige aspecten van de identiteitslevenscyclus voor u worden beheerd.
Met op rollen gebaseerd toegangsbeheer (RBAC) kunt u autorisatie zo configureren dat bepaalde beveiligingsprinciplen (identiteiten voor gebruikers, groepen of apps) specifieke machtigingen hebben voor het uitvoeren van bewerkingen via Azure-resources. Op deze manier moet aan de beveiligingsprincipaal die wordt gebruikt door een clienttoepassing die gebeurtenissen naar Event Grid verzendt, de RBAC-rol EventGrid-gegevenszender eraan zijn gekoppeld.
Beveiligingsprinciplen
Er zijn twee algemene categorieën beveiligingsprinciplen die van toepassing zijn bij het bespreken van verificatie van een Event Grid-publicatieclient:
- Beheerde identiteiten. Een beheerde identiteit kan worden toegewezen aan het systeem, dat u inschakelt voor een Azure-resource en is gekoppeld aan alleen die resource of aan de gebruiker die u expliciet maakt en een naam geeft. Door de gebruiker toegewezen beheerde identiteiten kunnen worden gekoppeld aan meer dan één resource.
- Toepassingsbeveiligingsprincipaal. Het is een type beveiligingsprincipaal dat een toepassing vertegenwoordigt, die toegang heeft tot resources die worden beveiligd door Microsoft Entra-id.
Ongeacht de gebruikte beveiligingsprincipaal, een beheerde identiteit of een toepassingsbeveiligingsprincipaal, gebruikt uw client die identiteit om te verifiëren vóór Microsoft Entra-id en een OAuth 2.0-toegangstoken te verkrijgen dat wordt verzonden met aanvragen bij het verzenden van gebeurtenissen naar Event Grid. Dat token is cryptografisch ondertekend en zodra Event Grid het ontvangt, wordt het token gevalideerd. De doelgroep (de beoogde ontvanger van het token) wordt bijvoorbeeld bevestigd als Event Grid (https://eventgrid.azure.net
onder andere). Het token bevat informatie over de clientidentiteit. Event Grid neemt die identiteit en valideert dat de client de rol eventGrid-gegevenszender heeft toegewezen. Meer precies valideert Event Grid dat de identiteit de Microsoft.EventGrid/events/send/action
machtiging heeft in een RBAC-rol die aan de identiteit is gekoppeld voordat de aanvraag voor het publiceren van gebeurtenissen kan worden voltooid.
Als u de Event Grid SDK gebruikt, hoeft u zich geen zorgen te maken over de details over het implementeren van de aanschaf van toegangstokens en het opnemen van tokens bij elke aanvraag voor Event Grid, omdat de Sdk's voor het Event Grid-gegevensvlak dat voor u doen.
Stappen voor clientconfiguratie voor het gebruik van Microsoft Entra-verificatie
Voer de volgende stappen uit om uw client te configureren voor het gebruik van Microsoft Entra-verificatie bij het verzenden van gebeurtenissen naar een onderwerp, domein of partnernaamruimte.
- Maak of gebruik een beveiligingsprincipaal die u wilt gebruiken om te verifiëren. U kunt een beheerde identiteit of een toepassingsbeveiligingsprincipaal gebruiken.
- Verwijs toestemming aan een beveiligingsprincipaal om gebeurtenissen te publiceren door de rol EventGrid-gegevenszender toe te wijzen aan de beveiligingsprincipaal.
- Gebruik de Event Grid SDK om gebeurtenissen te publiceren naar een Event Grid.
Verifiëren met een beheerde identiteit
Beheerde identiteiten zijn identiteiten die zijn gekoppeld aan Azure-resources. Beheerde identiteiten bieden een identiteit die toepassingen gebruiken bij het gebruik van Azure-resources die ondersteuning bieden voor Microsoft Entra-verificatie. Toepassingen kunnen de beheerde identiteit van de hostingresource zoals een virtuele machine of Azure-app-service gebruiken om Microsoft Entra-tokens te verkrijgen die worden weergegeven bij het publiceren van gebeurtenissen naar Event Grid. Wanneer de toepassing verbinding maakt, verbindt Event Grid de context van de beheerde entiteit met de client. Zodra deze is gekoppeld aan een beheerde identiteit, kan uw Event Grid-publicatieclient alle geautoriseerde bewerkingen uitvoeren. Autorisatie wordt verleend door een beheerde entiteit te koppelen aan een Event Grid RBAC-rol.
Beheerde identiteit biedt Azure-services met een automatisch beheerde identiteit in Microsoft Entra-id. In tegenstelling tot andere verificatiemethoden hoeft u geen toegangssleutels of Shared Access Signatures (SAS) op te slaan en te beveiligen in uw toepassingscode of configuratie, voor de identiteit zelf of voor de resources die u nodig hebt.
Als u uw gebeurtenispublicatieclient wilt verifiëren met behulp van beheerde identiteiten, moet u eerst beslissen over de hostservice voor uw clienttoepassing en vervolgens door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteiten in dat Azure-service-exemplaar inschakelen. U kunt bijvoorbeeld beheerde identiteiten inschakelen op een virtuele machine, een Azure-app Service of Azure Functions.
Zodra u een beheerde identiteit hebt geconfigureerd in een hostingservice, wijst u de machtiging toe om gebeurtenissen naar die identiteit te publiceren.
Verifiëren met behulp van een beveiligingsprincipaal van een clienttoepassing
Naast beheerde identiteiten is een andere identiteitsoptie het maken van een beveiligingsprincipaal voor uw clienttoepassing. Hiervoor moet u uw toepassing registreren bij Microsoft Entra ID. Het registreren van uw toepassing is een gebaar waarmee u identiteits- en toegangsbeheerbeheer delegeert aan Microsoft Entra ID. Volg de stappen in de sectie Een toepassing registreren en in de sectie Een clientgeheim toevoegen. Controleer de vereisten voordat u begint.
Zodra u een toepassingsbeveiligingsprincipal hebt en de bovenstaande stappen hebt gevolgd, wijst u de machtiging toe om gebeurtenissen naar die identiteit te publiceren.
Notitie
Wanneer u een toepassing registreert in de portal, worden er automatisch een toepassingsobject en een service-principal gemaakt in uw thuistenant. U kunt microsot Graph ook gebruiken om uw toepassing te registreren. Als u echter een toepassing registreert of maakt met behulp van de Microsoft Graph-API's, is het maken van het service-principal-object een afzonderlijke stap.
Machtiging toewijzen aan een beveiligingsprincipaal voor het publiceren van gebeurtenissen
De identiteit die wordt gebruikt om gebeurtenissen naar Event Grid te publiceren, moet beschikken over de machtiging Microsoft.EventGrid/events/send/action
waarmee gebeurtenissen naar Event Grid kunnen worden verzonden. Deze machtiging is opgenomen in de ingebouwde RBAC-rol Event Grid-gegevenszender. Deze rol kan worden toegewezen aan een beveiligingsprincipaal voor een bepaald bereik, dat een beheergroep, een Azure-abonnement, een resourcegroep of een specifiek Event Grid-onderwerp, domein of partnernaamruimte kan zijn. Volg de stappen in Azure-rollen toewijzen om een beveiligingsprincipaal toe te wijzen aan de rol EventGrid-gegevenszender en geef op die manier een toepassing met behulp van die beveiligingsprincipaal toegang tot het verzenden van gebeurtenissen. U kunt ook een aangepaste rol definiëren die de Microsoft.EventGrid/events/send/action
machtiging bevat en die aangepaste rol toewijzen aan uw beveiligingsprincipaal.
Nu RBAC-bevoegdheden zijn uitgevoerd, kunt u uw clienttoepassing bouwen om gebeurtenissen naar Event Grid te verzenden.
Notitie
Event Grid ondersteunt meer RBAC-rollen voor doeleinden dan het verzenden van gebeurtenissen. Zie Ingebouwde Rollen van Event Grid voor meer informatie.
Gebeurtenissen publiceren met behulp van client-SDK's van Event Grid
Gebruik de gegevensvlak-SDK van Event Grid om gebeurtenissen te publiceren naar Event Grid. De SDK van Event Grid ondersteunt alle verificatiemethoden, waaronder Microsoft Entra-verificatie.
Hier volgt de voorbeeldcode waarmee gebeurtenissen naar Event Grid worden gepubliceerd met behulp van de .NET SDK. U kunt het onderwerpeindpunt ophalen op de overzichtspagina voor uw Event Grid-onderwerp in Azure Portal. Het heeft de volgende notatie: 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);
Vereisten
Hieronder volgen de vereisten voor verificatie bij Event Grid.
- Installeer de SDK in uw toepassing.
- Installeer de Azure Identity-clientbibliotheek. De Event Grid SDK is afhankelijk van de Azure Identity-clientbibliotheek voor verificatie.
- Een onderwerp, domein of partnernaamruimte die is gemaakt waarnaar uw toepassing gebeurtenissen verzendt.
Gebeurtenissen publiceren met Microsoft Entra-verificatie
Als u gebeurtenissen wilt verzenden naar een onderwerp, domein of partnernaamruimte, kunt u de client op de volgende manier bouwen. De API-versie die voor het eerst ondersteuning biedt voor Microsoft Entra-verificatie is 2018-01-01
. Gebruik die API-versie of een recentere versie in uw toepassing.
Voorbeeld:
Met dit C#-codefragment maakt u een Event Grid-uitgeversclient met behulp van een toepassing (service-principal) met een clientgeheim om de DefaultAzureCredential-methode in te schakelen die u nodig hebt om de Azure.Identity-bibliotheek toe te voegen. Als u de officiële SDK gebruikt, verwerkt de SDK de versie voor u.
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());
Raadpleeg voor meer informatie de volgende artikelen:
- Azure Event Grid-clientbibliotheek voor Java
- Azure Event Grid-clientbibliotheek voor .NET
- Azure Event Grid-clientbibliotheek voor JavaScript
- Azure Event Grid-clientbibliotheek voor Python
Verificatie van handtekening voor sleutel en gedeelde toegang uitschakelen
Microsoft Entra-verificatie biedt een superieure ondersteuning voor verificatie dan wordt aangeboden door toegangssleutel- of SAS-tokenverificatie (Shared Access Signature). Met Microsoft Entra-verificatie wordt de identiteit gevalideerd op basis van De id-provider van Microsoft Entra. Als ontwikkelaar hoeft u geen sleutels in uw code te verwerken als u Microsoft Entra-verificatie gebruikt. U profiteert ook van alle beveiligingsfuncties die zijn ingebouwd in het Microsoft Identity-platform, zoals voorwaardelijke toegang waarmee u de beveiligingshouding van uw toepassing kunt verbeteren.
Zodra u Microsoft Entra-verificatie wilt gebruiken, kunt u verificatie uitschakelen op basis van toegangssleutels of SAS-tokens.
Notitie
Toegangssleutels of SAS-tokenverificatie is een vorm van lokale verificatie. U hoort soms verwijzen naar 'lokale verificatie' bij het bespreken van deze categorie verificatiemechanismen die niet afhankelijk zijn van Microsoft Entra-id. De API-parameter die wordt gebruikt om lokale verificatie uit te schakelen, wordt op de juiste manier disableLocalAuth
aangeroepen.
Azure Portal
Wanneer u een nieuw onderwerp maakt, kunt u lokale verificatie uitschakelen op het tabblad Geavanceerd van de pagina Onderwerp maken.
Voor een bestaand onderwerp voert u de volgende stappen uit om lokale verificatie uit te schakelen:
Ga naar de event grid-onderwerppagina voor het onderwerp en selecteer Ingeschakeld onder Lokale verificatie
Selecteer Uitgeschakeld in het pop-upvenster Lokale verificatie en selecteer OK.
Azure-CLI
De volgende CLI-opdracht laat zien hoe u een aangepast onderwerp kunt maken waarbij lokale verificatie is uitgeschakeld. De functie lokale verificatie uitschakelen is momenteel beschikbaar als preview en u moet api-versie 2021-06-01-preview
gebruiken.
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}"
Ter referentie zijn de volgende resourcetypewaarden die u kunt gebruiken op basis van het onderwerp dat u maakt of bijwerkt.
Onderwerptype | Brontype |
---|---|
Domeinen | Microsoft.EventGrid/domains |
Partnernaamruimte | Microsoft.EventGrid/partnerNamespaces |
Aangepast onderwerp | Microsoft.EventGrid/topics |
Azure PowerShell
Als u PowerShell gebruikt, gebruikt u de volgende cmdlets om een aangepast onderwerp te maken waarvoor lokale verificatie is uitgeschakeld.
Set-AzContext -SubscriptionId <SubscriptionId>
New-AzResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.EventGrid/topics -ApiVersion 2021-06-01-preview -ResourceName <TopicName> -Location <Location> -Properties @{disableLocalAuth=$true}
Notitie
- Zie Publicerende clients verifiëren met sleutels of SAS-tokens voor meer informatie over het gebruik van de toegangssleutel of shared access Signature-verificatie
- In dit artikel wordt verificatie behandeld bij het publiceren van gebeurtenissen naar Event Grid (inkomend verkeer van gebeurtenissen). Event Grid verifiëren bij het leveren van gebeurtenissen (uitgaand verkeer van gebeurtenissen) is het onderwerp van het artikel Gebeurtenislevering verifiëren bij gebeurtenis-handlers.
Resources
- SDK's voor gegevensvlak
- Java SDK: Migratiehandleiding voor GitHub-voorbeelden | | van vorige SDK-versie
- .NET SDK: Migratiehandleiding voor GitHub-voorbeelden | | van vorige SDK-versie
- Python SDK: Migratiehandleiding voor GitHub-voorbeelden | | van vorige SDK-versie
- JavaScript SDK: GitHub-voorbeeldmigratiehandleiding | | van vorige SDK-versie
- Event Grid SDK-blog
- Azure Identity-clientbibliotheek
- Meer informatie over beheerde identiteiten
- Meer informatie over het gebruik van beheerde identiteiten voor App Service en Azure Functions
- Meer informatie over toepassingen en service-principals
- Meer informatie over het registreren van een toepassing bij het Microsoft Identity-platform.
- Meer informatie over hoe autorisatie (RBAC-toegangsbeheer) werkt.
- Meer informatie over ingebouwde RBAC-rollen van Event Grid, met inbegrip van de rol Event Grid-gegevenszender . De rollenlijst van Event Grid.
- Meer informatie over het toewijzen van RBAC-rollen aan identiteiten.
- Meer informatie over het definiëren van aangepaste RBAC-rollen.
- Meer informatie over toepassings- en service-principalobjecten in Microsoft Entra-id.
- Meer informatie over toegangstokens van Microsoft Identity Platform.
- Meer informatie over OAuth 2.0-verificatiecodestroom en Microsoft Identity Platform