Azure AD - создание нового субъекта-службы программным способом

Я пишу сценарий 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.

Мы будем благодарны за любые советы!


person Petr Hecko    schedule 01.06.2019    source источник
comment
Просто дайте мне знать, если у вас есть другие опасения по этому поводу.   -  person Tony Ju    schedule 03.06.2019
comment
Большое спасибо за подробный ответ @TonyJu, очень признательны за время, которое вы потратили на помощь! Вы были правы, что у меня не было SP с предоставленными разрешениями для Application.ReadWrite.All, и было разумно добавить его, и я думал, что все будет работать, однако я все еще получаю ту же ошибку: Insufficient privileges to complete the operation.. Я даже создал новое приложение SP и настроил его с необходимыми разрешениями, но все еще та же ошибка разрешения. Затем я попытался добавить еще несколько разрешений для Graph, но без разницы. Не уверены, что есть еще что-нибудь?   -  person Petr Hecko    schedule 03.06.2019


Ответы (1)


Я решил это со своей стороны. Вам необходимо назначить Global administrator роль вашему sp. Примечание. Это займет несколько минут.

введите здесь описание изображения

person Tony Ju    schedule 03.06.2019
comment
Спасибо! У вас работает без ошибок? Я сделал, как вы предложили - создал новое приложение SP и назначил ему роль администратора приложения. Теперь, когда я запускаю скрипт, он по-прежнему выдает ту же ошибку разрешения, но с дополнительным контекстом, но в то же время он создает приложение SP - пробовал несколько раз и всегда одна и та же проблема - ошибка, но создается SP. Creating service principal failed for appid 'http://petristesting2'. Trace followed: {'Cache-Control': 'no-cache', 'Pragma':....Insufficient privileges to complete the operation - ›трассировка продолжается, просто недостаточно места в комментарии. - person Petr Hecko; 03.06.2019
comment
@PetrHecko назначить роль глобального администратора sp, чтобы решить эту проблему. - person Tony Ju; 03.06.2019
comment
Большое спасибо, глобальный администратор исправил последнюю проблему! @ Тони Джу - person Petr Hecko; 03.06.2019