Я пытаюсь вызвать api управления привилегированными идентификационными данными (https://api.azrbac.mspim.azure.com/api/v2/privilegedAccess
) в лазурном конвейере. У меня есть следующий код для вызова метода register
, но он не работает, но я не могу понять, что не так. Позвольте мне сначала показать код:
install-module azureadpreview -Force
import-module azureadpreview
$context = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile.DefaultContext
$graphToken = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, "https://graph.microsoft.com").AccessToken
$pimToken = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, "<what do i enter here?>").AccessToken
$aadToken = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, "https://graph.windows.net").AccessToken
Connect-AzureAD -AadAccessToken $aadToken -AccountId $context.Account.Id -TenantId $context.tenant.id -MsAccessToken $graphToken
Write-Output "Create PIM role"
$Group = New-AzureADMSGroup -DisplayName "TestPIMGroup" -Description "TestForPim" -MailEnabled $false -SecurityEnabled $true -MailNickName "NOTUSED" -IsAssignableToRole $true
Write-Output "Test api call"
$Headers = @{
"Accept" = "*/*"
"Accept-Language" = "en"
"Authorization" = "Bearer {0}" -f $pimToken
"Content-Type" = "application/json"
}
$Body = @{
externalId = $Group.Id
} | ConvertTo-Json
$URL = 'https://api.azrbac.mspim.azure.com/api/v2/privilegedAccess/aadGroups/resources/register'
Write-Output "Body: $Body"
$HeaderJson = $Headers | ConvertTo-Json
Write-Output "Headers: $HeaderJson"
try {
$QueryResponse = Invoke-RestMethod -Uri $URL -Headers $Headers -Method POST -Body $Body
}
catch {
$_.Exception.Response
$result = $_.Exception.Response.GetResponseStream()
$reader = New-Object System.IO.StreamReader($result)
$reader.BaseStream.Position = 0
$reader.DiscardBufferedData()
$responseBody = $reader.ReadToEnd();
$responseBody
exit 1
}
$QueryResponse.value
Итак, я пытаюсь создать группу PIM и разрешить ей привилегированный доступ. Модуль azureadpreview
имеет функции для создания группы PIM, поэтому я использую ее. Это прекрасно работает. Метод получения токена для субъекта-службы, который я получил от этот пост.
Теперь, чтобы включить привилегированный доступ к нему, мне нужно напрямую вызвать API, потому что, похоже, для него нет какой-либо команды powershell. Здесь все усложняется. Вызов API возвращает внутреннюю ошибку сервера 500, единственная ошибка в теле - an error has occurred
. Так что на самом деле это мне ни о чем не говорит. Итак, я начал расследование:
- Когда я не передаю токен, я получаю несанкционированное исключение
- Когда я передаю чушь в качестве токена, я получаю внутреннюю ошибку сервера. Это указывало мне на то, что с токеном что-то не так. Я думаю, что что-то не так с тегом аудитории в токене.
- Я перепробовал все типы URL-адресов в токене, и все они показывают мне 500 в качестве ответа.
- Я записал вызов api, который браузер сделал на лазурном портале при выполнении того же вызова. Я прочитал токен из этого запроса, и он дал мне какое-то руководство как aud. Когда я использую этот гид, он дал мне
Unauthorized
ответ
Может ли кто-нибудь помочь мне в моей ситуации?
ограничение ответа:
Мне нужно получить доступ к pim api, повторно используя принципала службы, который я уже использую в своем конвейере Azure, через мое подключение к службе. Поэтому я не ищу ответов о создании сертификатов в лазурном и аутентификации с его помощью.
Изменить: некоторая справочная информация:
- https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/42203638-allow-privileged-access-for-groups-to-be-enabled-f
- https://feedback.azure.com/forums/34192--general-feedback/suggestions/42644962-possibility-for-azure-ad-privileged-access-groups
- https://github.com/MicrosoftDocs/azure-docs/issues/70296#issuecomment-776069283