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 этой подписки, как вы можете видеть здесь:

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

При запуске моего скрипта 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.

Любые советы будут высоко оценены!

Просто дайте мне знать, если у вас есть другие опасения по этому поводу.

Tony Ju 03.06.2019 07:47

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

Petr Hecko 03.06.2019 08:10
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
2
2
1 298
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я отработал это на своей стороне. Вам нужно назначить 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 -> трассировка продолжается, просто не хватило места в комментарии.

Petr Hecko 03.06.2019 10:09

@PetrHecko назначит роль глобального администратора sp, чтобы решить эту проблему.

Tony Ju 03.06.2019 10:28

Большое спасибо, глобальный администратор исправил последнюю проблему! @ Тони Джу

Petr Hecko 03.06.2019 17:39

Другие вопросы по теме