Настройка область проверок доступа с помощью API проверок доступа
API Microsoft Entra проверок доступа позволяют программно проверять доступ, который пользователи, субъекты-службы или группы должны Microsoft Entra ресурсов в клиенте.
Вы настраиваете ресурсы Microsoft Entra для просмотра в свойстве область ресурса accessReviewScheduleDefinition. Следующие ресурсы предоставляют параметры для настройки область проверки доступа:
Ресурс | Описание | Примеры сценариев проверки доступа |
---|---|---|
accessReviewQueryScope | Лучше всего применяться при проверке полного набора или подмножества субъектов, имеющих доступ к ресурсу или группе связанных ресурсов. |
|
accessReviewInactiveUsersQueryScope | Наследует от accessReviewQueryScope. Используется при проверке только неактивных пользователей. Их неактивное состояние определяется свойством inactiveDuration . |
|
principalResourceMembershipsScope | Наследует от accessReviewScope. Лучше всего подходит для проверки доступа субъектов к ресурсам, где вы настраиваете уникальные пулы субъектов и ресурсов. |
|
Из этой статьи вы узнаете, как область проверки доступа, настроив три производных типа ресурсов.
Настройка область с помощью accessReviewQueryScope и accessReviewInactiveUsersQueryScope
Чтобы настроить область с помощью типа ресурса accessReviewQueryScope, задайте значения свойств query, queryRoot и queryType.
accessReviewInactiveUsersQueryScope требует всех свойств accessReviewQueryScope и включает свойство inactiveDuration .
Примеры
Примечание.
В примерах в этом разделе показаны только допустимые сочетания principalScopes и resourceScopes, поддерживаемые Microsoft API Graph.
Пример 1. Проверка всех пользователей с прямым и транзитивным назначением группе
Пример сценария: Предположим, что группа А имеет три прямых члена : пользователи AU1 и AU2 и группа G1. Группа G1, с другой стороны, состоит из двух участников — пользователей GU1 и GU2. Таким образом, пользователи GU1 и GU2 являются транзитивными членами вложенной группы G1. В обзор включены четыре объекта: users AU1, AU2, GU1 и GU2.
"scope": {
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/groups/{groupId}/transitiveMembers",
"queryType": "MicrosoftGraph"
}
Пример 2. Проверка всех неактивных пользователей с прямым и транзитивным назначением группе
Так как эта проверка применяется к неактивным пользователям, используйте ресурс accessReviewInactiveUsersQueryScope и укажите свойство type @odata.type со значением #microsoft.graph.accessReviewInactiveUsersQueryScope
.
"scope": {
"@odata.type": "#microsoft.graph.accessReviewInactiveUsersQueryScope",
"inactiveDuration": "P30D",
"query": "/groups/{groupId}/transitiveMembers",
"queryType": "MicrosoftGraph"
}
Пример 3. Проверка всех гостевых пользователей с прямым и транзитивным назначением группе
"scope": {
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/groups/{groupId}/transitiveMembers/?$filter=(userType eq 'Guest')",
"queryType": "MicrosoftGraph"
}
Пример 4. Проверка всех пользователей и групп с прямым назначением группе
В следующем примере проверка ограничивается только непосредственными участниками группы, которые являются пользователями или другими группами. В этом область:
- Прямые пользователи включаются в проверку.
- Прямые группы включаются в проверку.
- Транзитивные члены групп, т. е. члены вложенных групп, не включаются в проверку.
Пример сценария: Предположим, что группа А имеет три прямых члена : пользователи AU1 и AU2 и группа G1. Группа G1, с другой стороны, состоит из двух участников — пользователей GU1 и GU2. Таким образом, пользователи GU1 и GU2 являются транзитивными членами вложенной группы G1. В этой проверке используются только три объекта: пользователи AU1 и AU2, а также группа G1.
"scope": {
"query": "/groups/{groupId}/members",
"queryType": "MicrosoftGraph"
}
Пример 5. Проверка всех пользователей с прямым назначением любой группе Microsoft 365
Так как эта проверка применяется ко всем группам Microsoft 365, настройте instanceEnumerationScope , чтобы указать группы Microsoft 365 для проверки. Группы, имеющие динамическое членство или назначаемые роли, не включены в эту проверку.
"instanceEnumerationScope": {
"query": "/groups?$filter=(groupTypes/any(c:c eq 'Unified'))",
"queryType": "MicrosoftGraph"
},
"scope": {
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "./members/microsoft.graph.user",
"queryType": "MicrosoftGraph"
}
Пример 6. Проверка всех гостевых пользователей с прямым назначением любой группе Microsoft 365
Так как эта проверка применяется ко всем группам Microsoft 365, настройте instanceEnumerationScope , чтобы указать группы Microsoft 365 для проверки. Группы, имеющие динамическое членство или назначаемые роли, не включены в эту проверку.
"instanceEnumerationScope": {
"query": "/groups?$filter=(groupTypes/any(c:c eq 'Unified'))",
"queryType": "MicrosoftGraph"
},
"scope": {
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "./members/microsoft.graph.user/?$filter=(userType eq 'Guest')",
"queryType": "MicrosoftGraph"
}
Пример 7. Проверка всех неактивных гостевых пользователей с прямым назначением любой группе Microsoft 365
Так как эта проверка применяется к неактивным пользователям, используйте ресурс accessReviewInactiveUsersQueryScope и укажите свойство type @odata.type со значением #microsoft.graph.accessReviewInactiveUsersQueryScope
. Кроме того, так как эта проверка применяется ко всем группам Microsoft 365, настройте instanceEnumerationScope , чтобы указать группы Microsoft 365 для проверки. Группы, имеющие динамическое членство или назначаемые роли, не включены в эту проверку.
"instanceEnumerationScope": {
"query": "/groups?$filter=(groupTypes/any(c:c eq 'Unified'))",
"queryType": "MicrosoftGraph"
},
"scope": {
"@odata.type": "#microsoft.graph.accessReviewInactiveUsersQueryScope",
"query": "./members/microsoft.graph.user/?$filter=(userType eq 'Guest')",
"queryType": "MicrosoftGraph",
"inactiveDuration": "P30D"
}
Пример 8. Проверка всех гостевых пользователей с прямым назначением командам, за исключением команд с общими каналами
Так как эта проверка применяется ко всем группам Microsoft 365, связанным с Teams, настройте instanceEnumerationScope , чтобы указать группы Microsoft 365, связанные с Teams, для проверки. Группы, имеющие динамическое членство или назначаемые роли, не включены в эту проверку.
Эта проверка не включает пользователей прямого подключения B2B в командах с общими каналами. Сведения о включении пользователей прямого подключения B2B в команды с общими каналами см. в статье Пример 14. Проверка всех пользователей, назначенных команде, включая пользователей прямого подключения B2B в команде с общими каналами.
"instanceEnumerationScope": {
"query": "/groups?$filter=(groupTypes/any(c:c eq 'Unified') and resourceProvisioningOptions/Any(x:x eq 'Team')')",
"queryType": "MicrosoftGraph"
},
"scope": {
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "./members/microsoft.graph.user/?$filter=(userType eq 'Guest')",
"queryType": "MicrosoftGraph"
}
Пример 9. Проверка всех неактивных гостевых пользователей с прямым назначением командам
Так как эта проверка применяется ко всем группам Microsoft 365, связанным с Teams, настройте instanceEnumerationScope , чтобы указать группы Microsoft 365, связанные с Teams, для проверки. Группы, имеющие динамическое членство или назначаемые роли, не включены в эту проверку.
Эта проверка не включает пользователей прямого подключения B2B в командах с общими каналами. Сведения о включении пользователей прямого подключения B2B в команды с общими каналами см. в статье Пример 14. Проверка всех пользователей, назначенных команде, включая пользователей прямого подключения B2B в команде с общими каналами.
"instanceEnumerationScope": {
"query": "/groups?$filter=(groupTypes/any(c:c eq 'Unified') and resourceProvisioningOptions/Any(x:x eq 'Team')')",
"queryType": "MicrosoftGraph"
},
"scope": {
"@odata.type": "#microsoft.graph.accessReviewInactiveUsersQueryScope",
"query": "./members/microsoft.graph.user/?$filter=(userType eq 'Guest')",
"queryType": "MicrosoftGraph",
"inactiveDuration": "P30D"
}
Пример 10. Проверка всех назначений пакетов доступа управления правами
"scope": {
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/identityGovernance/entitlementManagement/accessPackageAssignments?$filter=(accessPackageId eq '{package id}' and assignmentPolicyId eq '{id}' and catalogId eq 'id')",
"queryType": "MicrosoftGraph"
}
Пример 11. Проверка всех субъектов-служб, назначенных привилегированной роли
"scope": {
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/roleManagement/directory/roleAssignmentScheduleInstances?$expand=principal&$filter=(isof(principal,'microsoft.graph.servicePrincipal') and roleDefinitionId eq '{role ID}')",
"queryType": "MicrosoftGraph"
}
Пример 12. Проверка пользователей, назначенных роли администратора Microsoft Entra
Пример 12.1. Проверка всех пользователей с активными или соответствующими назначениями роли каталога
"scope": {
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/roleManagement/directory/roleDefinitions/{role ID}",
"queryType": "MicrosoftGraph"
}
Пример 12.2. Проверка всех пользователей с соответствующими назначениями роли каталога
"scope": {
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/roleManagement/directory/roleEligibilityScheduleInstances?$expand=principal&$filter=(isof(principal,'microsoft.graph.user') and roleDefinitionId eq '{role ID}')",
"queryType": "MicrosoftGraph"
}
Пример 12.2. Проверка всех пользователей с активными назначениями роли каталога
"scope": {
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/roleManagement/directory/roleAssignmentScheduleInstances?$expand=principal&$filter=(assignmentType eq 'Assigned' and isof(principal,'microsoft.graph.user') and roleDefinitionId eq '{role ID}')",
"queryType": "MicrosoftGraph"
}
Используйте principalResourceMembershipsScope для настройки область
PrincipalResourceMembershipsScope предоставляет свойства principalScopes и resourceScopes для поддержки более специализированных параметров конфигурации для область объекта accessReviewScheduleDefinition. Эти возможности включают проверку доступа для нескольких субъектов или групп субъектов к нескольким ресурсам.
Пример 13. Проверка всех пользователей, назначенных команде, включая пользователей прямого подключения B2B в команде с общими каналами
В этом примере область проверки доступа — это все пользователи, являющиеся членами команды или назначенные общему каналу в команде. К ним относятся внутренние пользователи, прямые и транзитивные пользователи, пользователи службы совместной работы B2B и пользователи прямого подключения B2B.
"scope": {
"@odata.type": "#microsoft.graph.principalResourceMembershipsScope",
"principalScopes": [
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/users",
"queryType": "MicrosoftGraph",
"queryRoot": null
}
],
"resourceScopes": [
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/groups/{groupId}/transitiveMembers",
"queryType": "MicrosoftGraph",
"queryRoot": null
},
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/teams/{groupId}/channels?$filter=(membershipType eq 'shared')",
"queryType": "MicrosoftGraph",
"queryRoot": null
}
]
}
Чтобы просмотреть пользователей и команды прямого подключения B2B в общих каналах, необходимо указать /teams/{groupId}/channels?$filter=(membershipType eq 'shared')
шаблон запроса в объекте resourceScopes. Обзор всех команд , например примеры 8 и 9, не включает пользователей и команды прямого подключения B2B в общих каналах.
Примечание.
Проверка доступа пользователей и команд прямого подключения B2B поддерживается только для одноэтапных проверок доступа, а не для многоэтапных проверок доступа.
Пример 14. Проверка всех гостевых пользователей, назначенных роли каталога
"scope": {
"@odata.type": "#microsoft.graph.principalResourceMembershipsScope",
"principalScopes": [
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/users?$filter=(userType eq 'Guest')",
"queryType": "MicrosoftGraph"
}
],
"resourceScopes": [
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/roleManagement/directory/roleDefinitions/{role id}",
"queryType": "MicrosoftGraph"
}
]
}
Пример 15. Проверка всех пользователей с прямым или транзитивным назначением приложению
"scope": {
"@odata.type": "#microsoft.graph.principalResourceMembershipsScope",
"principalScopes": [
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/v1.0/users",
"queryType": "MicrosoftGraph",
"queryRoot": null
},
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "./members/microsoft.graph.user",
"queryType": "MicrosoftGraph",
"queryRoot": "/v1.0/groups"
}
],
"resourceScopes": [
{
"@odata.type": "#microsoft.graph.accessReviewQueryScope",
"query": "/v1.0/servicePrincipals/{servicePrincipalId}",
"queryType": "MicrosoftGraph",
"queryRoot": null
}
]
}
Связанные материалы
- Назначение рецензентов для определения проверки доступа
- Ознакомьтесь с руководствами, чтобы узнать, как использовать API проверок доступа для проверки доступа к Microsoft Entra ресурсам