アクセス レビュー API を使用してアクセス レビューのスコープを構成する
Microsoft Entra アクセス レビュー API を使用すると、ユーザー、サービス プリンシパル、またはグループがテナント内のリソースをMicrosoft Entraする必要があるアクセスをプログラムで確認できます。
accessReviewScheduleDefinition リソースの scope プロパティで確認するように、Microsoft Entra リソースを構成します。 次のリソースは、アクセス レビューのスコープを構成するための設定を公開します。
関連情報 | 説明 | アクセス レビュー シナリオの例 |
---|---|---|
accessReviewQueryScope | 関連リソースのリソースまたはグループにアクセスできるプリンシパルの完全なセットまたはサブセットを確認する場合に最適です。 |
|
accessReviewInactiveUsersQueryScope | accessReviewQueryScope から継承します。 非アクティブなユーザーのみがレビューされる場合に使用されます。 非アクティブ状態は、 inactiveDuration プロパティによって指定されます。 |
|
principalResourceMembershipsScope | accessReviewScope から継承します。 プリンシパル と リソースの一意のプールを構成するリソースへのプリンシパルのアクセスを確認するのに最適です。 |
|
この記事では、3 つの派生リソースの種類を構成して、アクセス レビューのスコープを設定する方法について説明します。
accessReviewQueryScope と accessReviewInactiveUsersQueryScope を使用してスコープを構成する
accessReviewQueryScope リソースの種類を使用してスコープを構成するには、クエリ、queryRoot、および queryType プロパティの値を設定します。
accessReviewInactiveUsersQueryScope には 、accessReviewQueryScope のすべてのプロパティが必要であり、 inactiveDuration プロパティが含まれています。
例
注:
このセクションの例では、Microsoft Graph APIがサポートする principalScopes と resourceScopes の唯一の有効な組み合わせを示します。
例 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: チームに割り当てられているすべてのユーザーを確認する (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 直接接続ユーザーとチームのアクセス レビューは、シングルステージ アクセス レビューでのみサポートされ、マルチステージ アクセス レビューではサポートされません。
例 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 リソースへのアクセスを確認する方法については、チュートリアルを参照してください