Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Graph API hizmeti Microsoft Entra ID (eski adıyla Azure Active Directory veya Azure AD)kullanımdan kaldırılmakta. Bu kullanımdan kaldırma, Microsoft Entra ID platformunu kolaylaştırmaya ve Microsoft Entra ID geliştirici deneyimini geliştirmeye yönelik daha geniş bir çabanın bir parçasıdır.
Risk azaltma adımları
Graph API'sinin kullanımdan kaldırılması, kimlik sağlayıcısı olarak Entra Id kullanan tüm Azure Stack Hub müşterilerini etkiler ve etkilenen tüm uygulamalar için bu makalede yer alan betiği çalıştırmanızı gerektirir. Graph API'lerine sürekli erişim gerektiren uygulamalarınız varsa betik, bu uygulamaların eski Graph API'sini çağırmaya devam etmesini sağlayan bir uzantı için bu uygulamaları yapılandıran bir bayrak ayarlar.
Bu makalede sağlanan PowerShell betiği, Azure Stack Hub'ın her Entra ID kimlik sağlayıcısı için Graph API uzantısını yapılandırmak üzere her uygulama için bir bayrak ayarlar.
Kimlik sağlayıcısı olarak Entra Id kullanan Azure Stack Hub ortamlarınızın çalışmaya devam etmesini sağlamak için bu betiği Şubat 2025 sonuna kadar çalıştırmanız gerekir.
Not
Bu bayrağı Şubat 2025'in ötesine eklemeyi geciktirdiğinizde kimlik doğrulaması başarısız olur. Azure Stack Hub'ınızın gerektiği gibi çalıştığından emin olmak için bu betiği çalıştırabilirsiniz.
Betiği çalıştır
Azure Stack Hub tarafından kullanılan ve Azure Stack Hub sisteminizi kaydettiğiniz Entra ID ortamında, Azure Stack Hub'ınızın ana kimlik sağlayıcısı olarak görev yapan ana dizin olarak aşağıdaki PowerShell betiğini çalıştırın. Bu, giriş dizininizden farklı bir dizin olabilir. Betik Azure ile etkileşim kurar, bu nedenle betiği belirli bir makinede çalıştırmanız gerekmez. Betiği çalıştırmak için ilgili Entra ID kiracısında en az uygulama yöneticisi yetkilerine sahip olmalısınız.
Aşağıdaki betiği yerel makinede yönetici ayrıcalıklarıyla çalıştırdığınızdan emin olun:
# 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 }
}
}
Betik aşağıdaki örnek çıkışı görüntüler:
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)
Tüm uygulamaların güncelleştirildiğini doğrulamak için betiği ikinci kez çalıştırın. Tüm uygulamalar başarıyla güncelleştirildiyse betik aşağıdaki çıkışı döndürmelidir:
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
Komutun aşağıdaki çıktısı Get-MgEnvironment , Graph modülünü yüklediğinizde dahil edilen varsayılan bulut örneklerini gösterir:
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