アクセス レビュー API を使用してアクセス レビューのスコープを構成する

Microsoft Entra アクセス レビュー API を 使用すると、ユーザー、サービス プリンシパル、またはグループがテナント内の Microsoft Entra リソースに対して持つアクセスをプログラムで確認できます。

accessReviewScheduleDefinition リソースの scope プロパティで確認するように Microsoft Entra リソースを構成します。 次のリソースは、アクセス レビューのスコープを構成するための設定を公開します。

関連情報 説明 アクセス レビュー シナリオの例
accessReviewQueryScope 関連リソースのリソースまたはグループにアクセスできるプリンシパルの完全なセットまたはサブセットを確認する場合に最適です。
  • グループに割り当てられたユーザーのメンバーシップ。直接メンバーまたは直接メンバーと推移的メンバー。
  • 1 つのグループへのゲスト ユーザー アクセス。
  • すべての Microsoft 365 グループへのゲスト ユーザー アクセス。
  • 特権ロールに割り当てられたサービス プリンシパル。
  • エンタイトルメント管理アクセス パッケージへのユーザーとサービス プリンシパルのアクセス。
accessReviewInactiveUsersQueryScope accessReviewQueryScope から継承します。 非アクティブなユーザーのみがレビューされる場合に使用されます。 非アクティブ状態は、 inactiveDuration プロパティによって指定されます。
  • 非アクティブなユーザーのみのグループ メンバーシップ
    principalResourceMembershipsScope accessReviewScope から継承します。 プリンシパル リソースの一意のプールを構成するリソースへのプリンシパルのアクセスを確認するのに最適です。
    • 1 つの Microsoft 365 グループ 1 つの特権 Microsoft Entra ロールへの 3 つの特定のプリンシパルへのアクセス。

      この記事では、3 つの派生リソースの種類を構成して、アクセス レビューのスコープを設定する方法について説明します。

      accessReviewQueryScope と accessReviewInactiveUsersQueryScope を使用してスコープを構成する

      accessReviewQueryScope リソースの種類を使用してスコープを構成するには、クエリqueryRoot、および queryType プロパティの値を設定します。

      accessReviewInactiveUsersQueryScope には 、accessReviewQueryScope のすべてのプロパティが必要であり、 inactiveDuration プロパティが含まれています。

      例 1: グループへの直接的な割り当てと推移的な割り当てを持つすべてのユーザーを確認する

      シナリオ例: グループ A に、ユーザー AU1 と AU2 とグループ G1 の 3 つの直接メンバーがあるとします。 一方、グループ G1 には、ユーザー GU1 と GU2 の 2 つのメンバーがあります。 したがって、ユーザー GU1 と GU2 は、入れ子になったグループ G1 の推移的なメンバーです。 レビューには、ユーザー AU1、AU2、GU1、GU2 の 4 つのオブジェクトが含まれています。

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

      例 2: グループへの直接的な割り当てと推移的な割り当てを使用して、非アクティブなすべてのユーザーを確認する

      このレビューは非アクティブなユーザーに適用されるため、 accessReviewInactiveUsersQueryScope リソースを使用し、 @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: グループに直接割り当てられているすべてのユーザーとグループを確認する

      次の例では、ユーザーまたは他のグループであるグループの直接メンバーのみにレビューのスコープを設定します。 このスコープでは、次の操作を行います。

      • 直接ユーザーがレビューに含まれます。
      • 直接グループがレビューに含まれます。
      • グループの推移的なメンバー 、つまり入れ子になったグループのメンバーはレビューに含まれません。

      シナリオ例: グループ A に、ユーザー AU1 と AU2 とグループ G1 の 3 つの直接メンバーがあるとします。 一方、グループ G1 には、ユーザー GU1 と GU2 の 2 つのメンバーがあります。 したがって、ユーザー GU1 と GU2 は、入れ子になったグループ G1 の推移的なメンバーです。 このレビューの対象となるオブジェクトは、ユーザー AU1 と AU2、グループ G1 の 3 つだけです。

      "scope": {
          "query": "/groups/{groupId}/members",
          "queryType": "MicrosoftGraph"
      }
      

      例 5: Microsoft 365 グループに直接割り当てられているすべてのユーザーを確認する

      このレビューはすべての Microsoft 365 グループに適用されるため、レビューする Microsoft 365 グループを指定するように instanceEnumerationScope を構成します。 動的メンバーシップまたはロール割り当て可能なグループは、このレビューには含まれません。

      "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 グループに適用されるため、レビューする Microsoft 365 グループを指定するように instanceEnumerationScope を構成します。 動的メンバーシップまたはロール割り当て可能なグループは、このレビューには含まれません。

      "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 リソースを使用し、 @odata.type 型 プロパティを値 #microsoft.graph.accessReviewInactiveUsersQueryScopeで指定します。 また、このレビューはすべての Microsoft 365 グループに適用されるため、確認する Microsoft 365 グループを指定するように instanceEnumerationScope を構成します。 動的メンバーシップまたはロール割り当て可能なグループは、このレビューには含まれません。

      "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: 共有チャネルを持つチームを除く、チームに直接割り当てられているすべてのゲスト ユーザーを確認する

      このレビューは Teams に関連付けられているすべての Microsoft 365 グループに適用されるため、確認する Teams に関連付けられた Microsoft 365 グループを指定するように instanceEnumerationScope を構成します。 動的メンバーシップまたはロール割り当て可能なグループは、このレビューには含まれません。

      このレビューには、共有チャネルを持つチームの 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: チームに直接割り当てられている非アクティブなゲスト ユーザーをすべて確認する

      このレビューは Teams に関連付けられているすべての Microsoft 365 グループに適用されるため、確認する Teams に関連付けられた Microsoft 365 グループを指定するように instanceEnumerationScope を構成します。 動的メンバーシップまたはロール割り当て可能なグループは、このレビューには含まれません。

      このレビューには、共有チャネルを持つチームの 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: グループに直接割り当てられている非アクティブなゲスト ユーザーをすべて確認する

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

      例 14: チームに割り当てられているすべてのユーザーを確認する (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 直接接続ユーザーとチームを確認するには、resourceScopes オブジェクトで /teams/{groupId}/channels?$filter=(membershipType eq 'shared')query パターンを指定する必要があります。 例 8 や 9 など、 すべてのチーム レビューには、共有チャネル内の B2B 直接接続ユーザーとチームは含まれません。

      注:

      B2B 直接接続ユーザーとチームのアクセス レビューは、シングルステージ アクセス レビューでのみサポートされ、マルチステージ アクセス レビューではサポートされません。

      例 15: ディレクトリ ロールに割り当てられているすべてのゲスト ユーザーを確認する

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

      例 16: アプリケーションへの直接または推移的な割り当てを持つすべてのユーザーを確認する

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