Как разделить экспорт всех Принципалов обслуживания в арендаторе AAD? - PullRequest
0 голосов
/ 15 января 2019

Нам необходимо периодически экспортировать информацию обо всех принципах обслуживания арендатора AAD. Мы ожидаем, что число будет большим, поэтому нам нужно разделить экспорт. При экспорте пользователей из Microsoft Graph мы смогли разбить на основе первой буквы mailNickname, используя startswith(mailNickname, '<letter>') в качестве фильтра, но попробовав это на appId и id с ServicePrincipals с ошибкой Request_UnsupportedQuery. Есть ли другой способ, которым мы могли бы использовать распараллеливание экспорта данных?

без запроса: https://graph.microsoft.com/beta/servicePrincipals?$filter=accountEnabled eq true and startswith(appId, '0')&$select=id,appId,displayName&$top=999

1 Ответ

0 голосов
/ 16 января 2019

То, что вы пытаетесь, похоже на подход, которым я здесь поделился (не стесняйтесь экспериментировать с этим кодом):

https://github.com/piotrci/Microsoft-Graph-Efficient-Operations/blob/master/Microsoft-Graph-Efficient-Operations/ScenarioImplementations/UserScenarios.cs

Фильтрация по идентификаторам обычно не поддерживается ресурсами Graph. В моем коротком эксперименте я смог использовать displayName servicePrincipal для разделения коллекции.

Обратите внимание, что такой подход не гарантирует равномерного разделения. Кроме того, в вашем сценарии (периодический полный экспорт) эта оптимизация необходима?

Предложение: рассмотрите возможность использования дельта-запроса Graph, чтобы выполнить полный экспорт один раз, а затем получать только дельта-изменения. Это может быть гораздо лучшая оптимизация, если вы ожидаете большой объем, но ограниченный отток ресурсов.

https://graph.microsoft.com/beta/servicePrincipals/delta

https://docs.microsoft.com/en-us/graph/delta-query-overview

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...