Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O serviço Microsoft Entra ID (anteriormente Azure Ative Directory ou Azure AD) Graph API está sendo desativado. Essa aposentadoria faz parte de um esforço mais amplo para simplificar a plataforma Microsoft Entra ID e melhorar a experiência do desenvolvedor do Microsoft Entra ID.
Etapas de mitigação
A desativação da API do Graph afeta todos os clientes do Azure Stack Hub que usam o Entra ID como provedor de identidade e exige que você execute o script incluído neste artigo para todos os aplicativos afetados. Se você tiver aplicativos que precisam de acesso contínuo às APIs do Graph, o script define um sinalizador que configura esses aplicativos para uma extensão que permite que esses aplicativos específicos continuem chamando a API do Graph herdada.
O script do PowerShell fornecido neste artigo define um sinalizador para cada aplicativo para configurar a extensão da API do Graph para cada provedor de identidade do Entra ID do Azure Stack Hub.
Para garantir que seus ambientes do Azure Stack Hub que usam o Entra ID como um provedor de identidade continuem funcionando, você deve executar esse script até o final de fevereiro de 2025.
Observação
Se você atrasar a adição desse sinalizador para além de fevereiro de 2025, a autenticação falhará. Em seguida, você pode executar esse script para garantir que seu Azure Stack Hub funcione conforme necessário.
Executar o script
Execute o seguinte script do PowerShell em seu ambiente Entra ID usado pelo Azure Stack Hub como o diretório base (o provedor de identidade principal do seu Azure Stack Hub), bem como o ambiente Entra ID no qual você registrou seu sistema Azure Stack Hub. Este pode ser um diretório diferente do seu diretório pessoal. O script interage com o Azure, portanto, você não precisa executá-lo em uma máquina específica. No entanto, você precisa de pelo menos privilégios de administrador do aplicativo no respetivo locatário do Entra ID para executar o script.
Certifique-se de executar o seguinte script com privilégios de administrador na máquina local:
# 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 }
}
}
O script exibe a seguinte saída de exemplo:
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)
Execute o script uma segunda vez para verificar se todos os aplicativos foram atualizados. O script deve retornar a seguinte saída se todos os aplicativos foram atualizados com êxito:
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
A saída a seguir do comando mostra as Get-MgEnvironment
instâncias de nuvem padrão que são incluídas quando você instala o módulo Graph:
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