Implementatiehandleiding voor tokenbeveiliging - Web-apps (preview)

In deze handleiding worden de stappen beschreven die nodig zijn voor het implementeren en afdwingen van tokenbeveiliging voor aanmeldingssessietokens die worden gebruikt door webtoepassingen (browsertoepassingen) die toegang hebben tot Azure Resource Manager (ARM).

Zie Tokenbeveiliging in Microsoft Entra voorwaardelijke toegang voor een overzicht van tokenbeveiliging en ondersteunde platforms. Raadpleeg de overzichtsdocumentatie voordat u deze implementatiehandleiding gebruikt.

Note

Tokenbeveiliging voor webtoepassingen is momenteel beschikbaar als preview-versie. Preview-functies zijn nog in ontwikkeling en hun mogelijkheden kunnen na verloop van tijd veranderen. Deze functies zijn beschikbaar vóór een officiële release zodat klanten vroeg toegang kunnen krijgen en feedback kunnen geven.

Note

Omdat ondersteuning voor webtoepassingen in preview is, raden we u aan eerst Token Protection te implementeren voor systeemeigen toepassingen, waaronder het afdwingen van het beleid voor ten minste een testgroep gebruikers, voordat u deze preview voor webtoepassingen probeert. Zie de implementatiehandleidingen voor Windows- en Apple-apparaten voor hulp.

Prerequisites

Voor het gebruik van deze functie zijn Microsoft Entra ID P1-licenties vereist. Zie Algemeen beschikbare functies van Microsoft Entra ID vergelijken als u een licentie zoekt die bij uw vereisten past.

Ondersteunde toepassingen, resources en browsers

Applications

  • Azure-portal
  • Microsoft Intune-beheercentrum
  • Microsoft Entra-beheercentrum
  • Microsoft Engage Center
  • Microsoft Engage Hub

Alleen de voorgaande webtoepassingen worden ondersteund. De toegang van gebruikers tot andere webtoepassingen die toegang hebben tot ARM, wordt geblokkeerd wanneer beleid wordt afgedwongen. De belangrijkste webtoepassingen die toegang hebben tot ARM, maar die niet worden ondersteund , zijn onder andere:

  • Microsoft 365-beveiligings- en compliancecentrum
  • Microsoft AppSource
  • Azure Data Factory
  • AI Studio-app Azure
  • Azure Synapse Studio
  • Microsoft Power BI
  • Microsoft Ontwikkelaarsportal
  • Azure OpenAI Studio
  • Power Platform-beheercentrum

Ondersteunde bronnen

  • Azure Resource Manager (ARM), geconfigureerd in voorwaardelijke toegang als de Windows Azure Service Management API-resource.

Ondersteunde platforms en browsers

Platform Ondersteunde browsers Apparaatvereiste
Windows 11 (build 26100.8246 / 26200.8246 of hoger) Microsoft Edge, Google Chrome Microsoft Entra toegevoegd, hybride toegevoegd of geregistreerd1
macOS Microsoft Edge, Google Chrome Alleen met MDM beheerd

1 Sommige apparaatregistratietypen worden niet ondersteund. Zie de lijst met niet-ondersteunde apparaatregistratietypen.

Tokenbeveiliging inschakelen voor ARM op Windows en macOS

Volg deze aanbevelingen om de kans op gebruikersonderbreking vanwege incompatibiliteit van apps, browsers of apparaten te minimaliseren:

  • Begin met een testgroep gebruikers en breid na verloop van tijd uit.
  • Maak een beleid voor voorwaardelijke toegang voor tokenbeveiliging in de modus alleen voor rapporten voordat u dit afdwingt.
  • Leg zowel interactieve als niet-interactieve aanmeldingslogboeken vast.
  • Analyseer deze logboeken lang genoeg om normaal gebruik van toepassingen te behandelen. Instructies voor het analyseren en begrijpen van gebruikersimpact worden beschreven in de volgende secties.
  • Voeg bekende, betrouwbare gebruikers toe aan een gebruikersgroep en dwing het beleid af.

Dit proces helpt bij het beoordelen van de gereedheid van uw gebruikers voor het afdwingen van tokenbeveiliging.

Stap 1: Apparaten van eindgebruikers configureren

Voltooi het volgende op elk apparaat handmatig of via Groepsbeleid of Intune.

Windows

  1. Zorg ervoor dat het apparaat wordt uitgevoerd Windows 11 build 26100.8246/ 26200.8246 of hoger.

  2. Schakel deze preview in door de volgende registerwaarde in te stellen:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\BrowserCore]
    "EnablePlatformAuth"=dword:00000001
    
  3. Installeer de browserextensie Microsoft Single Sign-On:

    • Google Chrome: Installeer Microsoft Single Sign On in de Chrome Web Store, selecteer Toevoegen aan Chrome>Add-extensie en bevestig dat deze wordt weergegeven op de werkbalk.
    • Microsoft Edge: Ga naaredge://extensions, schakel Extensies toestaan uit andere winkels in, installeer de Microsoft-extensie voor eenmalige aanmelding en bevestig dat deze is ingeschakeld.

macOS

  1. Installeer de Microsoft Bedrijfsportal of implementeer deze via uw MDM-oplossing. Bedrijfsportal fungeert als verificatiebroker voor Microsoft Entra aanmeldingen.
  2. Schakel registratie met hardware-ondersteuning in met een van de volgende opties:
  3. Installeer de Microsoft browserextensie voor eenmalige aanmelding in Microsoft Edge of Google Chrome, zoals beschreven in de vorige Windows sectie.

Wat u kunt verwachten na stap 1

Zodra het apparaat voldoet aan de vereisten en configuratie, worden verificatieaanvragen van ondersteunde toepassingen en browsers niet meer volledig voltooid in de browser en worden in plaats daarvan afgehandeld door de platformverificatiebroker. Dit gedrag stelt deze toepassingen in staat om apparaatgebonden aanmeldingstokens te gebruiken, zoals PRIMAIRE vernieuwingstokens (PRT's) en voldoen aan het beleid voor voorwaardelijke toegang voor tokenbeveiliging.

Plan het volgende:

  • Sta ten minste 24 uur toe dat de wijziging van kracht wordt. De overstap naar verificatie op basis van broker is niet direct nadat het registerwaarde, de extensie of het Platform SSO-profiel is toegepast. Ga pas naar stap 2 als dit venster is verstreken, of uw rapportgegevens tonen niet nauwkeurig de gereedheid.
  • De overgang wordt in de meeste gevallen automatisch uitgevoerd. Gebruikers ondernemen over het algemeen geen actie; bestaande browsersessies blijven werken terwijl de wijziging wordt doorgegeven.
  • Sommige gebruikers zien een kort aanmeldingsdialoogvenster. Tijdens de preview zien gebruikers die toegang hebben tot de Azure-portal mogelijk kort de tekst 'Aanmelden... " bericht waarin staat dat er een nieuw venster wordt geopend. Er wordt geen nieuw venster weergegeven en er is geen actie van de gebruiker vereist en aanmelding wordt zelfstandig voltooid. U kunt dit gedrag eventueel vooraf doorgeven aan uw testgroep, zodat deze niet wordt gerapporteerd als een fout.

Stap 2: Het beleid voor voorwaardelijke toegang maken in de modus Alleen-rapport

Nadat u 24 uur hebt gewacht nadat u stap 1 hebt voltooid, kunt u een beleid blijven instellen in de modus alleen voor rapporten om de gereedheid voor afdwinging te controleren.

  1. Meld u aan bij de Microsoft Entra-beheercentrum als ten minste een beheerder voor voorwaardelijke toegang.
  2. Blader naar Entra ID>Voorwaarde toegangsbeleid>, selecteer vervolgens Nieuw beleid en geef het beleid een naam.
  3. Neem onder Toewijzingsgebruikers> uw test- of testgebruikers op. Neem geen toegang tot noodgevallen of break-glass-accounts van uw organisatie op.
  4. Selecteer onder Resources voor doelresources>(voorheen cloud-apps)>Selecteer>resourcesen selecteer Windows Azure Service Management-API.
  5. Stel onder Voorwaarden>apparaatplatformenconfigureren in op Ja en neem Windows, macOS of beide op.
  6. Stel onder Voorwaarden>Client-appsconfigureren in op Ja en neem browser op. Zorg ervoor dat u mobiele apps en desktopclients niet selecteert voor deze preview.
  7. Selecteer onder Toegangsbeheersessie>de optie Tokenbeveiliging vereisen voor aanmeldingssessies en selecteer vervolgens Selecteren.
  8. Stel Beleid inschakelen in op Alleen-rapportage en selecteer Aanmaken.

Tip

Omdat beleid voor voorwaardelijke toegang dat tokenbeveiliging vereist, momenteel alleen beschikbaar is voor Windows- en Apple-apparaten, is het noodzakelijk om uw omgeving te beveiligen tegen mogelijke bypass van beleid wanneer een aanvaller mogelijk afkomstig is van een ander platform.

Daarnaast moet u het volgende beleid configureren:

Stap 3: De gereedheid voor afdwingen met logboeken en metrische gegevens controleren

Nadat het alleen-rapportbeleid is ingesteld en wordt uitgevoerd, moet u de Policy-impact analyseren, uw loginlogboeken bekijken en onderzoek doen met Log Analytics om de gereedheid voor afdwinging te controleren.

Aanmeldingslogboeken

Token Protection gerelateerde aanmeldingsgebeurtenissen weergeven in het beheercentrum:

  1. Meld u aan bij het Microsoft Entra-beheercentrum als ten minste een beheerder voor voorwaardelijke toegang.
  2. Blader naar Entra IDBewaking & gezondheidAanmeldingslogboeken.
  3. Voeg de kolom Statuscode voor de aanmeldsessie toe aan uw weergave om snel gerelateerde aanmeldingsgebeurtenissen weer te geven. Filter ook op de Azure Resource Manager resource en stel client-app in op Browser om de aanmeldingsaanvragen met betrekking tot deze preview te isoleren.
  4. Selecteer de aanmeldingsgebeurtenis die u onderzoekt.
  5. Controleer de tabbladen Voorwaardelijke toegang en Alleen rapporten , afhankelijk van de beleidsstatus en selecteer uw tokenbeveiligingsbeleid.
  6. Controleer onder Sessiebeheer of aan de beleidsvereisten is voldaan.
  7. Selecteer het tabblad Basisgegevens en controleer het veld Tokenbeveiliging - Aanmeldingssessie voor meer informatie.

De aanmeldingslogboeken bevatten een tokenProtectionStatusDetails eigenschap die aangeeft of een aanvraag gebruikmaakt van een apparaatgebonden token:

"tokenProtectionStatusDetails": {
  "signInSessionStatus": "bound | unbound",
  "signInSessionStatusCode": <code>
}

Note

Alleen in macOS wordt gebruikers op apparaten die zijn geregistreerd bij Microsoft Entra ID voordat het tokenbeveiligingsbeleid is afgedwongen, gevraagd om opnieuw te verifiëren zodra het beleid wordt afgedwongen. Ze voltooien een eenmalige upgrade van apparaatregistratie, bereikt door zich opnieuw aan te melden, om toegang te krijgen tot resources. U kunt deze gebruikers identificeren op basis van statuscodes 1003 en 1004. Omdat gebruikers met deze status zichzelf kunnen herstellen, komen ze in aanmerking voor het afdwingen van beleid.

Statuscodes voor aanmeldingssessies

Raadpleeg de volgende statuscodes om te begrijpen waarom een aanvraag wordt weergegeven als niet-afhankelijk of om te bepalen op welke gebruikers u het beleid kunt toepassen.

Statuscode Description Vereiste actie
1002 Niet-afhankelijk: aanvraag is niet afhankelijk vanwege het ontbreken van Microsoft Entra ID apparaatstatus. De gebruiker moet het apparaat registreren of eraan deelnemen.
1003 Niet-afhankelijk: apparaat niet geregistreerd met beveiligde referenties (verouderde registratie). Windows: deze fout kan worden veroorzaakt door een niet-ondersteund apparaatregistratietype of omdat het apparaat niet is geregistreerd met nieuwe aanmeldingsreferenties.
macOS: Gebruiker voert een eenmalige upgrade van apparaatregistratie uit (zelfherstelbaar).
1004 (alleen macOS) Niet-afhankelijk: apparaatregistratie wordt niet ondersteund door hardware. Gebruiker voert een eenmalige upgrade van apparaatregistratie uit (zelfherstelbaar).
1005 Niet-afhankelijk: niet-opgegeven reden. Varieert; onderzoek met de correlatie-id.
1006 Niet-afhankelijk: de versie van het besturingssysteem wordt niet ondersteund. Gebruiker werkt het besturingssysteem bij naar Windows 11 build 26100.8246/ 26200.8246 of hoger, of naar een ondersteunde macOS-versie.
1007 Niet-afhankelijk– niet door hardware ondersteund; de aangemelde gebruiker is niet de geregistreerde eigenaar van het apparaat. Gebruiker registreert opnieuw of de geregistreerde eigenaar voert de upgrade uit.
1008 Niet-afhankelijk: client gebruikt geen verificatiebroker, zoals WAM. De client is niet geïntegreerd met de platformbroker of de broker of extensie is niet geïnstalleerd. Voor browsers installeert en schakelt u de Microsoft extensie voor één Sign-On in en schakelt u platformverificatie in.

Tip

Voor het browserscenario zijn 1008 en 1002 de codes die u het vaakst ziet tijdens de onboarding. Dit betekent meestal dat de Microsoft browserextensie voor één Sign-On ontbreekt of is uitgeschakeld, dat platformverificatie niet is ingeschakeld (op Windows is de EnablePlatformAuth registerwaarde niet ingesteld), een niet-ondersteunde browser zoals Firefox of Safari wordt gebruikt, of de app biedt geen ondersteuning voor tokenbeveiliging.

Zelfherstelbare gebruikers identificeren (alleen macOS)

In macOS zijn codes 1003 en 1004 zelfherstelbaar via een eenmalige upgrade voor apparaatregistratie.

Als u aanvragen wilt identificeren die compatibel zijn of kunnen worden bijgewerkt met gebruikersactie, filtert u op:

  • signInSessionStatus == boundof,
  • signInSessionStatus == unbound met signInSessionStatusCode of 10031004.

Voorbeeld van Microsoft Graph query voor niet-interactieve aanmeldingen:

GET https://graph.microsoft.com/beta/auditLogs/signIns?$filter=(
  signInEventTypes/any(t: t eq 'nonInteractiveUser')
  and resourceDisplayName eq 'Azure Resource Manager'
  and (tokenProtectionStatusDetails/signInSessionStatusCode eq 1003
    or tokenProtectionStatusDetails/signInSessionStatusCode eq 1004
    or tokenProtectionStatusDetails/signInSessionStatus eq 'bound'))

Wanneer Token Protection wordt afgedwongen voor deze gebruikers, wordt ze gevraagd zich opnieuw aan te melden en kunnen ze toegang krijgen tot resources zodra ze klaar zijn met verifiëren.

Log Analytics

U kunt ook Log Analytics gebruiken om query's uit te voeren op interactieve en niet-interactieve aanmeldingslogboeken voor aanvragen die zijn geblokkeerd vanwege een afdwingingsfout in Token Protection. Deze query's zijn alleen voorbeelden en kunnen worden gewijzigd. Ze filteren op de Azure Resource Manager resource en voegen metrische gereedheidsgegevens toe, zodat u harde blokken kunt onderscheiden van zelfherstelbare blokken.

Aanvragen per toepassing

De volgende voorbeeldquery doorzoekt de niet-interactieve aanmeldingslogboeken voor de afgelopen zeven dagen, waarbij geblokkeerde versus toegestane aanvragen voor ARM per toepassing worden gemarkeerd en blokken worden gemarkeerd die gebruikers zelf kunnen herstellen. Schakel in SigninLogs plaats daarvan in om interactieve browser-aanmeldingen te controleren.

// Select the log to query (SigninLogs or AADNonInteractiveUserSignInLogs)
// SigninLogs
AADNonInteractiveUserSignInLogs
// Adjust the time range below
| where TimeGenerated > ago(7d)
| project Id, ConditionalAccessPolicies, Status, UserPrincipalName, AppDisplayName,
    ResourceDisplayName, TokenProtectionStatusDetails
| where ConditionalAccessPolicies != "[]"
| where ResourceDisplayName == "Azure Resource Manager"
// Add UserPrincipalName if you want to filter to a specific user
// | where UserPrincipalName == "<user_principal_name>"
| mv-expand todynamic(ConditionalAccessPolicies)
| where ConditionalAccessPolicies["enforcedSessionControls"] contains '["Binding"]'
    or ConditionalAccessPolicies["enforcedSessionControls"] contains '["SignInTokenProtection"]'
| where ConditionalAccessPolicies.result != "reportOnlyNotApplied"
    and ConditionalAccessPolicies.result != "notApplied"
| extend SessionNotSatisfyResult = ConditionalAccessPolicies["sessionControlsNotSatisfied"]
| extend Result = case(
    SessionNotSatisfyResult contains 'SignInTokenProtection'
        or SessionNotSatisfyResult contains 'Binding', 'Block', 'Allow')
| extend parsedBindingDetails = parse_json(TokenProtectionStatusDetails)
| extend bindingStatusCode = tostring(parsedBindingDetails["signInSessionStatusCode"])
| extend IsSelfRemediable = Result == "Block"
    and (bindingStatusCode == "1003" or bindingStatusCode == "1004")
| summarize by Id, UserPrincipalName, AppDisplayName, Result, IsSelfRemediable
| summarize Requests = count(),
    Users = dcount(UserPrincipalName),
    Allow = countif(Result == "Allow"),
    Block = countif(Result == "Block"),
    BlockSelfRemediable = countif(IsSelfRemediable == true),
    BlockedUsers = dcountif(UserPrincipalName, Result == "Block"),
    BlockedUsersSelfRemediable = dcountif(UserPrincipalName, IsSelfRemediable == true)
    by AppDisplayName
| extend PctAllowed = round(100.0 * Allow / (Allow + Block), 2)
| extend PctEnforceable = round(100.0 * (Allow + BlockSelfRemediable) / (Allow + Block), 2)
| project AppDisplayName, Requests, Users, Allow, Block,
    BlockSelfRemediable, BlockedUsers, BlockedUsersSelfRemediable,
    PctAllowed, PctEnforceable
| sort by Requests desc
Aanvragen per gebruiker

De volgende query bekijkt de niet-interactieve aanmeldingslogboeken voor de afgelopen zeven dagen, waarbij geblokkeerde versus toegestane aanvragen voor ARM per gebruiker worden gemarkeerd, met dezelfde zelfherstelbare en afdwingbare metrische gegevens.

// Per-user query for the Azure portal -> ARM web app scenario
// SigninLogs
AADNonInteractiveUserSignInLogs
// Adjust the time range below
| where TimeGenerated > ago(7d)
| project Id, ConditionalAccessPolicies, UserPrincipalName, AppDisplayName,
    ResourceDisplayName, TokenProtectionStatusDetails
| where ConditionalAccessPolicies != "[]"
| where ResourceDisplayName == "Azure Resource Manager"
// Add UserPrincipalName if you want to filter to a specific user
// | where UserPrincipalName == "<user_principal_name>"
| mv-expand todynamic(ConditionalAccessPolicies)
| where ConditionalAccessPolicies["enforcedSessionControls"] contains '["Binding"]'
    or ConditionalAccessPolicies["enforcedSessionControls"] contains '["SignInTokenProtection"]'
| where ConditionalAccessPolicies.result != "reportOnlyNotApplied"
    and ConditionalAccessPolicies.result != "notApplied"
| extend SessionNotSatisfyResult = ConditionalAccessPolicies.sessionControlsNotSatisfied
| extend Result = case(
    SessionNotSatisfyResult contains 'SignInTokenProtection'
        or SessionNotSatisfyResult contains 'Binding', 'Block', 'Allow')
| extend parsedBindingDetails = parse_json(TokenProtectionStatusDetails)
| extend bindingStatusCode = tostring(parsedBindingDetails["signInSessionStatusCode"])
| extend IsSelfRemediable = Result == "Block"
    and (bindingStatusCode == "1003" or bindingStatusCode == "1004")
| summarize by Id, UserPrincipalName, AppDisplayName, ResourceDisplayName, Result, IsSelfRemediable
| summarize Requests = count(),
    Allow = countif(Result == "Allow"),
    Block = countif(Result == "Block"),
    BlockSelfRemediable = countif(IsSelfRemediable == true)
    by UserPrincipalName, AppDisplayName, ResourceDisplayName
| extend PctAllowed = round(100.0 * Allow / (Allow + Block), 2)
| extend PctEnforceable = round(100.0 * (Allow + BlockSelfRemediable) / (Allow + Block), 2)
| project UserPrincipalName, AppDisplayName, ResourceDisplayName,
    Requests, Allow, Block, BlockSelfRemediable,
    PctAllowed, PctEnforceable
| sort by UserPrincipalName asc

Stap 4: Het beleid afdwingen

Nadat u de aanmeldingsgegevens hebt bekeken en hebt bevestigd dat uw doelgebruikers en apparaten gereed zijn, verplaatst u de wisselknop Beleid inschakelen van alleen rapport naar Aan.