1

我正在尝试将主体 ID 列表解析为用户/服务名称等详细信息。我有以下代码 -

from azure.common.credentials import ServicePrincipalCredentials
from azure.graphrbac import GraphRbacManagementClient

TENANT = 'something.onmicrosoft.com'
TENANT_ID = '...'
CLIENT_ID = '...'
SECRET = '...'
List_of_Principal_IDs= ['...','...']
credentials = ServicePrincipalCredentials(
    client_id=CLIENT_ID,
    secret=SECRET,
    tenant=TENANT_ID,
    resource="https://graph.windows.net"
)
client = GraphRbacManagementClient(credentials, TENANT)

我尝试按照其中一个stackoverflow 页面上的建议进行操作,但遇到了错误(见下文)。任何有关我如何将这些主体 ID 解析为人类可理解格式的指导都将不胜感激。

users = client.users.list(
         filter=f"principal_id eq '{List_of_Principal_IDs[0]}'"
     )
test = users.next()

错误 -

azure.graphrbac.models.graph_error_py3.GraphErrorException:属性“principal_id”不作为声明的属性或扩展属性存在。

users = client.objects.get_objects_by_object_ids(List_of_Principal_IDs[0])
user = users.next()

错误 -

msrest.exceptions.SerializationError:无法构建模型:无法反序列化为对象:类型,AttributeError:“str”对象没有属性“get”,DeserializationError:无法反序列化为对象:类型,AttributeError:“str”对象有没有属性'get'

4

1 回答 1

1

azure.graphrbac.models.graph_error_py3.GraphErrorException:属性“principal_id”不作为声明的属性或扩展属性存在。

关于这个错误,在users 的属性principal_id中不存在。如果我没有误解的话,就是用户的意思。但是 Object_id 不支持,你需要使用get方法而不是list方法。principal_idObject IDfilter

user = client.users.get(upn_or_object_id)

msrest.exceptions.SerializationError:无法构建模型:无法反序列化为对象:类型,AttributeError:“str”对象没有属性“get”,DeserializationError:无法反序列化为对象:类型,AttributeError:“str”对象有没有属性'get'

get_objects_by_object_ids需要GetObjectsParameters类的参数,而不仅仅是一个列表。

objects = graphrbac_client.objects.get_objects_by_object_ids({
    'object_ids': [list of object ids],
    'types': [list of object types]
})
于 2020-11-17T06:15:05.243 回答