Я пишу скрипт Python для предоставления и настройки служб Azure. Я хотел бы предоставить нового субъекта-службы как часть сценария, но у меня возникли проблемы с разрешениями. Если я запущу эту команду в своем терминале (после azure login), она создаст субъект-службу:
az ad sp create-for-rbac --name Testapp
Я хочу добиться того же, но в своем скрипте Python, где я использую существующий субъект-службу для предоставления ресурсов. Звонки, которые я делаю, следующие:
call("az login --service-principal -u '%s' -p '%s' --tenant '%s'" % (args.client_id, args.client_sec, args.tenant_id), shell=True)
call("az ad sp create-for-rbac --name TestServicePrincipal", shell=True)
Аргументы — это учетные данные существующего субъекта-службы. Этот субъект-служба уже OWNER этой подписки, как вы можете видеть здесь:
При запуске моего скрипта Python я отлично вхожу в систему (также с этими учетными данными я могу предоставить кучу других ресурсов через скрипт), но я получаю ошибки разрешения при создании учетной записи SP, как вы можете видеть здесь:
synergies git:(master) ✗ python test.py -c 'testcustomer' -l 'eastus' -sid '1234' -cs '1234' -cid '1234' -tid '1234'
[
{
"cloudName": "AzureCloud",
"id": "1234",
"isDefault": true,
"name": "Free Trial",
"state": "Enabled",
"tenantId": "1234",
"user": {
"name": "1234",
"type": "servicePrincipal"
}
}
]
Changing "TestServicePrincipal" to a valid URI of "http://TestServicePrincipal", which is the required format used for service principal names
Insufficient privileges to complete the operation.
Любые советы будут высоко оценены!
Большое спасибо за подробный ответ @TonyJu, очень ценю время, которое вы потратили, чтобы помочь! Вы были правы, что у меня не было SP с предоставленными разрешениями для Application.ReadWrite.All, и было вполне разумно добавить его, и я думал, что все будет работать, однако я все еще получаю ту же ошибку: Insufficient privileges to complete the operation.. Я даже создал новое приложение SP и настроил его с необходимыми разрешениями, но все равно та же ошибка разрешения. Затем я попытался добавить еще кучу разрешений для Graph, но никакой разницы. Не уверен, что есть что-то еще?


Я отработал это на своей стороне. Вам нужно назначить Global administrator роль вашему sp. Примечание. Это вступит в силу через несколько минут..
Спасибо! У вас работает без ошибок? Я сделал, как вы предложили - создал новое приложение SP и назначил роль администратора приложения. Теперь, когда я запускаю скрипт, он по-прежнему будет выдавать ту же ошибку разрешения, но с большим контекстом, но в то же время он создаст приложение SP — пробовал несколько раз и всегда одна и та же проблема — ошибка, но SP создается. Creating service principal failed for appid 'http://petristesting2'. Trace followed: {'Cache-Control': 'no-cache', 'Pragma':....Insufficient privileges to complete the operation -> трассировка продолжается, просто не хватило места в комментарии.
@PetrHecko назначит роль глобального администратора sp, чтобы решить эту проблему.
Большое спасибо, глобальный администратор исправил последнюю проблему! @ Тони Джу
Просто дайте мне знать, если у вас есть другие опасения по этому поводу.