Azure AD-以编程方式创建新的服务主体

时间:2019-06-01 16:10:55

标签: azure azure-active-directory service-principal

我正在编写一个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

enter image description here

运行python脚本时,我确实可以很好地登录(也可以使用这些凭据通过脚本提供大量其他资源),但是创建SP帐户时会出现权限错误,如您在此处看到的: / p>

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.

任何建议将不胜感激!

1 个答案:

答案 0 :(得分:2)

我已经做好了准备。您需要为您的sp分配Global administrator角色。 注意:这将需要几分钟的时间才能生效

enter image description here