AzureDevops - get-AzureRMroleassignment - [ошибка] Было сгенерировано исключение типа «Microsoft.Rest.Azure.CloudException» - PullRequest
0 голосов
/ 20 сентября 2019

Я создал свой скрипт в Azure-PowerShell, скрипт содержит C cmd-let -> get-azureRMroleAssignment, и это главная проблема, некоторое время назад у меня была похожая проблема.Я использовал RunAsAccount и упомянул, что у RunAsAccount не было прав на чтение в Azure AD, и это разрешение является обязательным при использовании Get-AzureRmRoleAssignment, поскольку оно необходимо, чтобы вы могли преобразовать ObjectID, хранящийся в назначениях ролей, в соответствующие им имена электронной почты / userprincipalnames.Я предоставил необходимые разрешения в AzureAD, и id решил проблему, и это было, когда я использовал учетные записи автоматизации и Runbook.Сейчас я использую конвейеры Devure для Azure, я подключаюсь к 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 и вижу статус ниже: enter image description here

1 Ответ

0 голосов
/ 21 сентября 2019

Это конкретно не решает вашу проблему с API, но есть ли шанс, что вы можете предоставить принципу службы Azure Devops доступ для чтения к каталогу?Тогда вам не нужно отдельно проходить аутентификацию или вызывать API.После этого вы просто сможете запустить Get-AzureRMroleAssignment в своем скрипте Azure PowerShell.

РЕДАКТИРОВАТЬ: Это будет стоить сделать даже для целей тестирования.Как только функциональность подтверждена, рефакторинг возвращается к вызову API, если требуется

...