Delen via


Microsoft Entra ID Graph API uitfasering

De Microsoft Entra-id (voorheen Azure Active Directory of Azure AD) Graph API-service wordt buiten gebruik gesteld. Deze buitengebruikstelling maakt deel uit van een bredere inspanning om het Microsoft Entra ID-platform te stroomlijnen en de ontwikkelaarservaring van Microsoft Entra ID te verbeteren.

Beperkende maatregelen

De buitengebruikstelling van Graph API is van invloed op alle Azure Stack Hub-klanten die Entra-id gebruiken als id-provider. Hiervoor moet u het script uitvoeren dat in dit artikel is opgenomen voor alle betrokken toepassingen. Als u toepassingen hebt die nog steeds toegang nodig hebben tot de Graph-API's, stelt het script een vlag in waarmee deze toepassingen worden geconfigureerd voor een extensie waarmee deze specifieke toepassingen de verouderde Graph API kunnen blijven aanroepen.

Met het PowerShell-script in dit artikel wordt voor elke toepassing een vlag ingesteld voor het configureren van de Graph API-extensie voor elke Entra ID-id-provider van Azure Stack Hub.

Om ervoor te zorgen dat uw Azure Stack Hub-omgevingen die gebruikmaken van Entra ID als id-provider blijven functioneren, moet u dit script eind februari 2025 uitvoeren.

Notitie

Als u het toevoegen van deze vlag na februari 2025 uitstellen, mislukt de verificatie. U kunt dit script vervolgens uitvoeren om ervoor te zorgen dat uw Azure Stack Hub naar behoefte functioneert.

Het script uitvoeren

Voer het volgende PowerShell-script uit in uw Entra ID-omgeving die door Azure Stack Hub wordt gebruikt als de basismap (de belangrijkste id-provider van uw Azure Stack Hub), evenals de Entra ID-omgeving waarnaar u uw Azure Stack Hub-systeem hebt geregistreerd. Dit kan een andere map zijn dan uw basismap. Het script communiceert met Azure, dus u hoeft het niet uit te voeren op een specifieke computer. U hebt echter ten minste toepassingsbeheerder bevoegdheden in de respectieve Entra ID-tenant nodig om het script uit te voeren.

Zorg ervoor dat u het volgende script uitvoert met beheerdersbevoegdheden op de lokale computer:

# Install the Graph modules if necessary
#Install-Module Microsoft.Graph.Authentication
#Install-Module Microsoft.Graph.Applications
 
$ErrorActionPreference='Stop'
Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications
 
# Target your Azure Cloud instance name; use Get-MgEnvironment to list available clouds and Add-MgEnvironment to add new ones as needed for custom private/secure clouds
$envName = 'Global'

# Repeat this flow for each of your target directory tenants
$tenantId = 'MyTenantId'

# Sign in with admin permissions to read and write all application objects
Connect-MgGraph -Environment $envName -TenantId $tenantId -Scopes Application.ReadWrite.All
 
# Retrieve all applications in the current directory
Write-Host "Looking-up all applications in directory '$tenantId'..."
$applications = Get-MgApplication -All -Property id, displayName, appId, identifierUris, requiredResourceAccess, authenticationBehaviors
Write-Host "Found '$($applications.Count)' total applications in directory '$tenantId'"
 
# Find all the unique deployment GUIDs, each one representing an Azure Stack deployment or registration in the current directory
$deploymentGuids = $applications.IdentifierUris |
    Where-Object { $_ -like 'https://management.*' -or $_ -like 'https://adminmanagement.*' -or $_ -like 'https://azurebridge*' } |
    ForEach-Object { "$_".Split('/')[3] } |
    Select-Object -Unique
Write-Host "Found '$($deploymentGuids.Count)' total Azure Stack deployments or registrations in directory '$tenantId'"
 
# Find all the Azure Stack application objects for each deployment or registration
$azureStackApplications = @()
foreach ($application in $applications)
{
    foreach ($deploymentGuid in $deploymentGuids)
    {
        if (($application.IdentifierUris -join '') -like "*$deploymentGuid*")
        {
            $azureStackApplications += $application
            break
        }
    }
}
 
# Find which Azure Stack applications require access to the legacy Graph Service
$azureStackLegacyGraphApplications = $azureStackApplications |
    Where-Object {
        ($_.RequiredResourceAccess.ResourceAppId -contains '00000002-0000-0000-c000-000000000000') -or
        ($_.IdentifierUris | Where-Object { $_ -like 'https://azurebridge*' }) }
 
# Find which of those applications need to have their authentication behaviors patched to allow access to legacy Graph
$azureStackLegacyGraphApplicationsToUpdate = $azureStackLegacyGraphApplications | Where-Object {
    $oldLocationSet = $false -eq $_.AdditionalProperties.authenticationBehaviors.blockAzureADGraphAccess
    $newLocationNotSet = $false -eq $_.AuthenticationBehaviors.BlockAzureAdGraphAccess
    return (-not $oldLocationSet -and -not $newLocationNotSet)
}
 
# Update the applications that require their authentication behaviors patched to allow access to legacy Graph
Write-Host "Found '$($azureStackLegacyGraphApplicationsToUpdate.Count)' total Azure Stack applications which need permission to continue calling Legacy Microsoft Graph Service"
$count = 0
foreach ($application in $azureStackLegacyGraphApplicationsToUpdate)
{
    $count++
    Write-Host "$count/$($azureStackLegacyGraphApplicationsToUpdate.Count) - Updating application '$($application.DisplayName)' (appId=$($application.AppId)) (id=$($application.Id))"
    Update-MgApplication -ApplicationId $application.Id -BodyParameter @{
        authenticationBehaviors = @{ blockAzureADGraphAccess = $false }
    }
}

In het script wordt de volgende voorbeelduitvoer weergegeven:

Looking-up all applications in directory '<ID>'... 
Found '###' total applications in directory '<ID>'
Found '1' total Azure Stack deployments in directory '<app ID>'
Found '16' total Azure Stack applications which need permission to continue calling Legacy Microsoft Graph Service
1/16 - Updating application 'Azure Stack - AKS' (appId=<app ID>) (id=<ID>)
2/16 - Updating application 'Azure Stack - Hubs' (appId=<app ID>) (id=<ID>)
3/16 - Updating application 'Azure Stack - Portal Administration' (appId=<app ID>) (id=<app>)
4/16 - Updating application 'Azure Stack - RBAC Administration' (appId=<app ID>) (id=ID)
5/16 - Updating application 'Azure Stack - Container Registry' (appId=<app ID>) (id=ID)
6/16 - Updating application 'Azure Stack - RBAC' (appId=<app ID>) (id=ID)
7/16 - Updating application 'Azure Stack - Hubs Administration' (appId=<app ID>) (id=ID)
8/16 - Updating application 'Azure Stack - Deployment Provider' (appId=<app ID>) (id=ID)
9/16 - Updating application 'Azure Stack - Deployment' (appId=<app ID>) (id=ID)
10/16 - Updating application 'Azure Stack - KeyVault' (appId=<app ID>) (id=ID)
11/16 - Updating application 'Azure Stack' (appId=<app ID>) (id=ID)
12/16 - Updating application 'Azure Stack - Administration' (appId=<app ID>) (id=ID)
13/16 - Updating application 'Azure Stack - Policy Administration' (appId=<app ID>) (id=ID)
14/16 - Updating application 'Azure Stack - Policy' (appId=<app ID>) (id=ID)
15/16 - Updating application 'Azure Stack - Portal' (appId=<app ID>) (id=ID)
16/16 - Updating application 'Azure Stack - KeyVault Administration ' (appId=<app ID>) (id=ID) 

Voer het script een tweede keer uit om te controleren of alle toepassingen zijn bijgewerkt. Het script moet de volgende uitvoer retourneren als alle toepassingen zijn bijgewerkt:

Looking-up all applications in directory '<ID>'...
Found '####' total applications in directory '<ID>>'
Found '1' total Azure Stack deployments in directory '<ID>>'
Found '0' total Azure Stack applications which need permission to continue calling Legacy Microsoft Graph Service 

In de volgende uitvoer van de Get-MgEnvironment opdracht ziet u de standaardcloudexemplaren die zijn opgenomen bij het installeren van de Graph-module:

C:\> Get-MgEnvironment

Name     AzureADEndpoint                   GraphEndpoint                           Type    
----     ---------------                   -------------                           ----    
USGovDoD https://login.microsoftonline.us  https://dod-graph.microsoft.us          Built-in
Germany  https://login.microsoftonline.de  https://graph.microsoft.de              Built-in
USGov    https://login.microsoftonline.us  https://graph.microsoft.us              Built-in
China    https://login.chinacloudapi.cn    https://microsoftgraph.chinacloudapi.cn Built-in
Global   https://login.microsoftonline.com https://graph.microsoft.com             Built-in

Volgende stappen

opmerkingen bij de release van Azure Stack Hub