使用 Microsoft Graph API 配置访问Graph范围

Azure AD 访问评审 API 允许你以编程方式查看用户、服务主体或组对 Azure AD 资源的访问权限。

要审阅的资源在访问评审 accessReviewScheduleDefinition资源的 scope 属性中配置。 此属性的类型为 accessReviewScope,这是一个抽象类型,继承自以下资源,可用于配置将针对其访问的资源或资源组。

资源 说明 示例场景
accessReviewQueryScope 最适用于查看有权访问资源或相关资源组的完整主体集或子集。
  • 分配给组的用户的成员身份。
  • 来宾用户访问一个组。
  • 来宾用户访问租户Microsoft 365组。
  • 分配给特权角色的服务主体。
  • 对权利管理访问包的用户和服务主体访问权限。
accessReviewInactiveUsersQueryScope 继承自 accessReviewQueryScope。 仅在查看非活动用户时使用。 非活动状态由 inactiveDuration 属性 指定。
  • 仅非活动用户的组成员身份。
    principalResourceMembershipsScope 最适用于查看主体对配置唯一主体和资源池的资源的访问权限。
    • 查看跨 1 个组和 1 个Microsoft 365 1 个特权 Azure AD 角色的 3 个特定主体的访问权限。

      本文将使用这些类型的 accessReviewScope 将各种 Azure AD 资源配置为访问评审的范围。 这可以帮助您自动执行主动审阅并控制对组织中资源的访问权限。

      使用 accessReviewQueryScope 配置作用域

      若要使用 accessReviewQueryScope 类型配置范围,请设置其 query、queryRootqueryType 属性的值。 有关这些属性的说明,请参阅 accessReviewQueryScope 资源类型。

      示例 1:查看分配给组的所有用户

      "scope": {
          "@odata.type": "#microsoft.graph.accessReviewQueryScope",
          "query": "/groups/{group id}/transitiveMembers",
          "queryType": "MicrosoftGraph"
      }
      

      若要仅 查看分配给该组 的非活动用户,请:

      "scope": {
          "@odata.type": "#microsoft.graph.accessReviewInactiveUsersQueryScope",
          "inactiveDuration": "P30D",
          "query": "/groups/{group id}/transitiveMembers",
          "queryType": "MicrosoftGraph"
      }
      

      示例 2:查看分配给组的来宾用户

      "scope": {
          "@odata.type": "#microsoft.graph.accessReviewQueryScope",
          "query": "/groups/{group id}/transitiveMembers/microsoft.graph.user/?$count=true&$filter=(userType eq 'Guest')",    
          "queryType": "MicrosoftGraph"
      }
      

      示例 3:查看分配给所有组Microsoft 365用户

      "instanceEnumerationScope": {
          "query": "/groups?$filter=(groupTypes/any(c:c+eq+'Unified'))&$count=true ",
          "queryType": "MicrosoftGraph"
      },
      "scope": {
          "@odata.type": "#microsoft.graph.accessReviewQueryScope",
          "query": "./members/microsoft.graph.user/?$count=true&$filter=(userType eq 'Guest')",
          "queryType": "MicrosoftGraph"
      }
      

      由于此审阅适用于所有Microsoft 365组,因此请配置 instanceEnumerationScope 以指定Microsoft 365组。

      示例 4:查看分配给所有用户的所有来宾Teams

      "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"
      }
          
      Because this review is applied on all Teams-enabled Microsoft 365 groups, configure the **instanceEnumerationScope** to specify the Teams-enabled Microsoft 365 groups to review.
      
      ### Example 5: Review access of all inactive guest users to all groups
      
      ```http
      "scope": {
          "@odata.type": "#microsoft.graph.accessReviewInactiveUsersQueryScope",
          "query": "./members/microsoft.graph.user/?$count=true&$filter=(userType eq 'Guest')",
          "queryType": "MicrosoftGraph",
          "inactiveDuration": "P30D"
      }
      

      由于此审阅适用于非活动用户,请使用 accessReviewInactiveUsersQueryScope 资源并使用值 **指定 @odata.type** 类型属性 #microsoft.graph.accessReviewInactiveUsersQueryScope

      示例 6:查看分配给所有团队的所有非活动来宾用户

      "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"
      }
      

      由于此审查适用于所有团队,因此请配置 instanceEnumerationScope 属性以指定所有团队。

      示例 7:审阅权利管理访问包分配

      "scope": {
          "@odata.type": "#microsoft.graph.accessReviewQueryScope",
          "query": "/identityGovernance/entitlementManagement/accessPackageAssignments?$filter=(accessPackageId eq '{package id}' and assignmentPolicyId eq '{id}')",
          "queryType": "MicrosoftGraph"
      }
      

      示例 8:检查分配给特权角色的所有服务主体

      "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"
      }
      

      示例 9:查看分配给特权角色的所有用户 (包括的所有活动分配和符合条件的)

      "scope": {
          "@odata.type": "#microsoft.graph.accessReviewQueryScope",
          "query": "/roleManagement/directory/roleDefinitions/{role ID}",
          "queryType": "MicrosoftGraph"
      }
      

      示例 10:检查具有特权角色的合格分配权限的所有用户

      "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"
      }
      

      示例 11:检查所有具有特权角色的活动分配的用户

      "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 公开 principalScopesresourceScopes 属性,以支持 针对 accessReviewScheduleDefinition 作用域的更定制的配置选项。 这包括查看多个主体或主体组对多个资源的访问权限。

      示例 1:查看所有非活动来宾用户对全部组的访问权限

      "scope": {
          "@odata.type": "#microsoft.graph.principalResourceMembershipsScope",
          "principalScopes": [
              {
                  "@odata.type": "#microsoft.graph.accessReviewInactiveUsersQueryScope",
                  "query": "/users?$filter=(userType eq 'Guest')",
                  "queryType": "MicrosoftGraph",
                  "inactiveDuration": "P30D"
              }
          ],
          "resourceScopes": [
              {
                  "@odata.type": "#microsoft.graph.accessReviewQueryScope",
                  "query": "/groups",
                  "queryType": "MicrosoftGraph"
              }
          ]
      }
      

      此示例中,主体是处于非活动状态的所有来宾用户,其不活动期计算为自访问评审实例的开始日期起 30 天。

      示例 2:查看所有来宾用户对目录角色的访问权限

      "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"
              }
          ]
      }
      

      另请参阅