【问题标题】:Access error when attempting to elevate access in AAD via Azure REST API尝试通过 Azure REST API 在 AAD 中提升访问权限时出现访问错误
【发布时间】:2023-04-11 09:30:01
【问题描述】:

根据此处的 Microsoft 文档:https://docs.microsoft.com/en-us/azure/role-based-access-control/elevate-access-global-admin#rest-api

通过发出此 POST 请求,您可以将您的权限从 AAD 提升到 Azure RBAC。此请求成功后会将用户添加到“用户访问管理员”角色。

我正在尝试为具有服务主体的应用程序执行此操作,该服务主体是我的租户中的全局管理员,但是我收到了错误:

Invoke-RestMethod : {"error":{"code":"AuthorizationFailed","message":"The client '1234567890' with object id
'1234567890' does not have authorization to perform action 'Microsoft.Authorization/elevateAccess/read' over scope
'/providers/Microsoft.Authorization' or the scope is invalid. If access was recently granted, please refresh your credentials."}}

我的代码在这里:

    $TenantId = "12345"
    $ClientId = "1234567890" 
    $ClientSecret = "test12345" 
    $Resource = "https://management.core.windows.net/"
    $RequestAccessTokenUri = "https://login.microsoftonline.com/$TenantId/oauth2/token"  
    $body = "grant_type=client_credentials&client_id=$ClientId&client_secret=$ClientSecret&resource=$Resource"
    $Token = Invoke-RestMethod -Method Post -Uri $RequestAccessTokenUri -Body $body -ContentType 'application/x-www-form-urlencoded'
    $Token
    $Header = @{}
    $Header.Add("Authorization","$($Token.token_type) "+ " " + "$($Token.access_token)")
    Invoke-RestMethod -Headers $Header https://management.azure.com/providers/Microsoft.Authorization/elevateAccess?api-version=2016-07-01 -verbose

如果我的 SP 是全局管理员,为什么会出现权限错误?

【问题讨论】:

    标签: azure powershell rest azure-active-directory


    【解决方案1】:

    目前不支持使用服务主体为自己提升访问权限。

    您需要使用另一个在根范围内具有提升访问权限的全局管理员帐户来为服务主体执行此操作。

    换句话说,我们无法使用 Azure REST API Global Administrator - Elevate Access 来完成此操作。

    建议使用Azure PowerShell

    供您参考的样本:

    $tenantid = ""
    
    $subscriptionid = ""
    
    $servicePrincipalName = ""
    
    Connect-AzAccount -Tenant $tenantid -Subscription $subscriptionid
    
    Get-AzRoleAssignment | where {$_.RoleDefinitionName -eq "User Access Administrator" -and $_.Scope -eq "/"}
    
    $servicePrincipal = Get-AzADServicePrincipal -DisplayName $servicePrincipalName
    
    New-AzRoleAssignment -RoleDefinitionName "User Access Administrator" -ApplicationId $servicePrincipal.ApplicationId -Scope "/"
    

    【讨论】:

      猜你喜欢
      • 2015-04-11
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 2020-03-15
      • 2021-05-29
      • 2021-10-30
      相关资源
      最近更新 更多