【问题标题】:AzureDevops - get-AzureRMroleassignment - [error]Exception of type 'Microsoft.Rest.Azure.CloudException' was thrownAzureDevops - get-AzureRMroleassignment - [错误] 类型为“Microsoft.Rest.Azure.CloudException”的异常被抛出
【发布时间】:2019-09-20 15:07:23
【问题描述】:

我在 azure-powershell 中创建了 I 脚本,脚本包含 c cmd-let --> get-azureRMroleAssignment,这是主要问题,前段时间我遇到了类似的问题。我使用了 RunAsAccount,并提到 RunAsAccount 在 Azure AD 上没有读取权限,并且在使用 Get-AzureRmRoleAssignment 时此权限是必需的,因为它是必需的,因此您可以将存储在角色分配上的 ObjectID 转换为其相应的电子邮件/用户主体名称。我在 AzureAD 中授予了所需的权限,并且 id 解决了这个问题,那是我使用自动化帐户和 Runbook 的时候。现在我正在使用 Azure devops 管道,我正在连接到 AzureAD,请看下面的代码。我面临着类似的问题 --> ##[error]Exception of type 'Microsoft.Rest.Azure.CloudException' was thrown. 在 Azure AD 中,我添加了 Read.DuirectoryData 权限的应用程序注册,然后尝试在 Azure AD 中同意它 --> 企业应用程序 --> 权限,然后我单击“授予管理员同意...”按钮,并获得了具有我权限的窗口,我确认并获得了下一个窗口,再次确认应用程序权限并且窗口冻结。我尝试再次运行管道,但没有任何改变,得到相同的错误消息。

# Set urls for taking with MS graph
$AdTokenUrl = "https://login.microsoftonline.com/$TenantId/oauth2/token"
$Resource = "https://graph.windows.net/"
Write-Debug "AD url is: $AdTokenUrl"

# Set the body of the REST API call 
$Body = @{
    grant_type = "client_credentials"
    client_id = $ClientId
    client_secret = $ClientSecret
    resource = $Resource
}

# Execute REST API call and capture token
$Response = Invoke-RestMethod -Method "Post" -Uri $AdTokenUrl -ContentType "application/x-www-form-urlencoded" -Body $Body
$Token = $Response.access_token

# Connect to AzureAD using -AadAccessToken parameter retrieved from graph API
Connect-AzureAD -AadAccessToken $Token -AccountId $ClientId -TenantId $TenantId

我检查了我的 Azure 广告 --> 应用注册 --> API 权限,我可以看到以下状态:

【问题讨论】:

  • 嗨,最近怎么样?以下答案是否可以帮助您解决问题?如果您仍然遇到一些问题,请发表评论,以便我们仍然可以为您提供帮助。

标签: azure azure-devops azure-active-directory azure-powershell


【解决方案1】:

这并没有专门解决您的 API 问题,但是您是否有机会授予 Azure Devops 服务原则对目录的读取权限?这样您就不需要单独进行身份验证或 API 调用。然后,您应该能够在您的 azure powershell 脚本中本机运行 Get-AzureRMroleAssignment

编辑:即使出于测试目的,这样做也是值得的。确认功能后,如果需要,重构回 API 调用

【讨论】:

  • 嗨,是的,这不是 API 的问题,这是这个 cmd-let 的问题。正如我所提到的,我为此 Azure devops 原则添加了广告所需的权限,但问题仍然存在。
【解决方案2】:

解决方案是使用“Powershell 脚本”任务,而不是“Azure Powershell 脚本”任务。 ,现在管道按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多