我正在使用terraform部署功能应用程序,并且该功能应用程序具有系统管理的身份。我的功能应用程序需要能够使用目录,添加用户,创建组,添加组成员等。在门户中,我可以为该托管身份分配活动目录角色,并且可以正常工作。我希望能够以编程方式执行此操作。我已经看过cli和powershell命令,并且有向角色添加用户角色的命令,但是这些只是rbac角色,而不是目录角色。我的想法是我可以使用graph API来做到这一点,但是我还没有找到一种方法来做到这一点。
我能够连接到图api,下面的代码允许我向用户添加目录角色,但不能向服务原理添加目录角色。 (我的托管身份)
import requests
client_id = <client_id>
client_secret = <client_secret>
tokenPayload = {
'grant_type': 'client_credentials',
'client_id': client_id,
'client_secret': client_secret,
'resource': 'https://graph.microsoft.com',
}
r = requests.post('https://login.microsoftonline.com/<my_tenant>/oauth2/token', data=tokenPayload)
headers = {
'User-Agent': 'python_tutorial/1.0',
'Authorization': 'Bearer {0}'.format(r.json()['access_token']),
'Accept': 'application/json',
'Content-Type': 'application/json'
}
rolePayload = {
'@odata.id': 'https://graph.microsoft.com/v1.0/directoryObjects/<id_of_my_managed_identity>'
}
servicePrinciples = requests.post(
'https://graph.microsoft.com/v1.0/directoryRoles/<role_i_want_to_add_my_managed_identity_to>/members/$ref',
json=rolePayload, headers=headers)
print(servicePrinciples.text)
我期望它将角色添加到托管标识中,而我收到此消息。
{
"error": {
"code": "Request_BadRequest",
"message": "Unsupported directory object class 'ServicePrincipal' specified by resource identifier.",
"innerError": {
"request-id": "87ce7a2f-ebf7-402d-a987-c3823eee92f4",
"date": "2019-08-23T04:21:24"
}
}
}
任何帮助将不胜感激。
答案 0 :(得分:0)
v1.0不支持。
请使用测试版:
Post https://graph.microsoft.com/beta/directoryRoles/<role_i_want_to_add_my_managed_identity_to>/members/$ref
body:
{
'@odata.id': 'https://graph.microsoft.com/v1.0/directoryObjects/<id_of_my_managed_identity>'
}