エンタープライズ アプリケーションに付与されるアクセス許可の確認
この記事では、Microsoft Entra テナントのアプリケーションに付与されているアクセス許可を確認する方法について説明します。 悪意のあるアプリケーションが検出された場合、またはアプリケーションに必要以上のアクセス許可が付与されている場合は、アクセス許可の確認が必要になることがあります。 Microsoft Graph API と既存バージョンの PowerShell を使用して、アプリケーションに付与されたアクセス許可を取り消す方法について説明します。
この記事に含まれる手順は、ユーザーまたは管理者の同意によって Microsoft Entra テナントに追加されたすべてのアプリケーションに適用されます。 アプリケーションへの同意の詳細については、ユーザーと管理者の同意に関する説明を参照してください。
前提条件
アプリケーションに付与されたアクセス許可を確認するには、次のものが必要です。
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- 次のいずれかのロール: クラウド アプリケーション管理者、アプリケーション管理者。
- 管理者ではないサービス プリンシパル所有者は、更新トークンを無効にできます。
Microsoft Entra 管理センターでアクセス許可を確認および取り消す
ヒント
この記事の手順は、開始するポータルによって若干異なる場合があります。
Microsoft Entra 管理センターにアクセスして、アプリに付与されたアクセス許可を表示できます。 管理者が組織全体に付与したアクセス許可を取り消したり、コンテキスト PowerShell スクリプトを取得して他のアクションを実行したりできます。
取り消された、または削除されたアクセス許可を復元する方法については、「アプリケーションに付与されたアクセス許可を復元する」をご覧ください。
組織全体または特定のユーザーまたはグループに対して付与されているアプリケーションのアクセス許可を監視するには:
- クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
- [ID]>[アプリケーション]>[エンタープライズ アプリケーション]>[すべてのアプリケーション] に移動します。
- アクセスを制限するアプリケーションを選択します。
- [アクセス許可] を選択します。
- 組織全体に適用されるアクセス許可を表示するには、[管理者の同意] タブを選択します。特定のユーザーまたはグループに付与されたアクセス許可を表示するには、[ユーザーの同意] タブを選択します。
- 所定のアクセス許可の詳細を表示するには、一覧からアクセス許可を選択します。 [アクセス許可の詳細] ウィンドウが開きます。
アプリケーションに付与されたアクセス許可を確認した後で、組織全体に対して管理者によって付与されたアクセス許可を取り消すことができます。
Note
ポータルを使用して [ユーザーの同意] タブでアクセス許可を取り消すことはできません。 これらのアクセス許可は、Microsoft Graph API 呼び出しまたは PowerShell コマンドレットを使用して取り消すことができます。 詳細については、この記事の「PowerShell」タブおよび「Microsoft Graph」タブを参照してください。
[管理者の同意] タブでアクセス許可を取り消すには:
- [管理者の同意] タブでアクセス許可の一覧を表示します。
- 削除するアクセス許可を選択してから、そのアクセス許可の [...] コントロールを選択します。
- [アクセス許可の取り消し] を選択します。
Azure AD PowerShell を使用してアクセス許可を確認および取り消す
次の Azure AD PowerShell スクリプトを使用すると、アプリケーションに付与されているすべてのアクセス許可が取り消されます。 少なくともクラウド アプリケーション管理者としてサインインする必要があります。
Connect-AzureAD
# Get Service Principal using objectId
$sp = Get-AzureADServicePrincipal -ObjectId "<ServicePrincipal objectID>"
# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants = Get-AzureADOAuth2PermissionGrant -All $true| Where-Object { $_.clientId -eq $sp.ObjectId }
# Remove all delegated permissions
$spOAuth2PermissionsGrants | ForEach-Object {
Remove-AzureADOAuth2PermissionGrant -ObjectId $_.ObjectId
}
# Get all application permissions for the service principal
$spApplicationPermissions = Get-AzureADServiceAppRoleAssignedTo -ObjectId $sp.ObjectId -All $true | Where-Object { $_.PrincipalType -eq "ServicePrincipal" }
# Remove all application permissions
$spApplicationPermissions | ForEach-Object {
Remove-AzureADServiceAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.objectId
}
Azure AD PowerShell を使用して更新トークンを無効にする
次のスクリプトを使って、アプリケーションに対するユーザーまたはグループの appRoleAssignments を削除します。
Connect-AzureAD
# Get Service Principal using objectId
$sp = Get-AzureADServicePrincipal -ObjectId "<ServicePrincipal objectID>"
# Get Azure AD App role assignments using objectID of the Service Principal
$assignments = Get-AzureADServiceAppRoleAssignment -ObjectId $sp.ObjectId -All $true | Where-Object {$_.PrincipalType -eq "User"}
# Revoke refresh token for all users assigned to the application
$assignments | ForEach-Object {
Revoke-AzureADUserAllRefreshToken -ObjectId $_.PrincipalId
}
Microsoft Graph PowerShell を使用してアクセス許可を確認および取り消す
次の Microsoft Graph PowerShell スクリプトを使用すると、アプリケーションに付与されているすべてのアクセス許可が取り消されます。 少なくともクラウド アプリケーション管理者としてサインインする必要があります。
Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalID "<ServicePrincipal objectID>"
Example: Get-MgServicePrincipal -ServicePrincipalId 'aaaaaaaa-bbbb-cccc-1111-222222222222'
# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants= Get-MgOauth2PermissionGrant -All| Where-Object { $_.clientId -eq $sp.Id }
# Remove all delegated permissions
$spOauth2PermissionsGrants |ForEach-Object {
Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $_.Id
}
# Get all application permissions for the service principal
$spApplicationPermissions = Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $Sp.Id -All | Where-Object { $_.PrincipalType -eq "ServicePrincipal" }
# Remove all application permissions
$spApplicationPermissions | ForEach-Object {
Remove-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $Sp.Id -AppRoleAssignmentId $_.Id
}
Microsoft Graph PowerShell を使用して更新トークンを無効にする
次のスクリプトを使って、アプリケーションに対するユーザーまたはグループの appRoleAssignments を削除します。
Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalID "<ServicePrincipal objectID>"
Example: Get-MgServicePrincipal -ServicePrincipalId 'aaaaaaaa-bbbb-cccc-1111-222222222222'
# Get Azure AD App role assignments using objectID of the Service Principal
$spApplicationPermissions = Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalID $sp.Id -All | Where-Object { $_.PrincipalType -eq "ServicePrincipal" }
# Revoke refresh token for all users assigned to the application
$spApplicationPermissions | ForEach-Object {
Remove-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $_.PrincipalId -AppRoleAssignmentId $_.Id
}
Microsoft Graph を使用してアクセス許可を確認および取り消す
アクセス許可を確認するには、少なくともクラウド アプリケーション管理者として Graph エクスプローラーにサインインします。
次のアクセス許可に同意する必要があります。
Application.ReadWrite.All
、Directory.ReadWrite.All
、DelegatedPermissionGrant.ReadWrite.All
、AppRoleAssignment.ReadWrite.All
。
デリゲートされたアクセス許可
次のクエリを実行し、アプリケーションに付与されたアクセス許可を確認します。
objectID を使ってサービス プリンシパルを取得します。
GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}
例:
GET https://graph.microsoft.com/v1.0/servicePrincipals/00001111-aaaa-2222-bbbb-3333cccc4444
サービス プリンシパルのすべての委任されたアクセス許可を取得する
GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}/oauth2PermissionGrants
oAuth2PermissionGrants ID を使って、委任されたアクセス許可を削除します。
DELETE https://graph.microsoft.com/v1.0/oAuth2PermissionGrants/{id}
アプリケーションのアクセス許可
次のクエリを実行して、アプリケーションに付与されたアプリケーション アクセス許可を確認します。
サービス プリンシパルのすべてのアプリケーションのアクセス許可を取得する
GET https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipal-id}/appRoleAssignments
appRoleAssignment ID を使ってアプリケーションのアクセス許可を削除する
DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{resource-servicePrincipal-id}/appRoleAssignedTo/{appRoleAssignment-id}
Microsoft Graph を使用して更新トークンを無効にする
次のクエリを実行して、アプリケーションに対するユーザーまたはグループの appRoleAssignments を削除します。
objectID を使ってサービス プリンシパルを取得します。
GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}
例:
GET https://graph.microsoft.com/v1.0/servicePrincipals/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
サービス プリンシパルの objectID を使って、Microsoft Entra アプリのロールの割り当てを取得します。
GET https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipal-id}/appRoleAssignedTo
appRoleAssignment ID を使って、アプリケーションに割り当てられているユーザーやグループの更新トークンを取り消します。
DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipal-id}/appRoleAssignedTo/{appRoleAssignment-id}
Note
現在の付与されているアクセス許可を取り消しても、ユーザーがアプリケーションの要求したアクセス許可に再同意することは阻止できません。 動的な同意を通じて、アプリケーションがアクセス許可を要求することをブロックする必要があります。 ユーザーによる同意もすべてブロックしたい場合は、ユーザーがアプリケーションに同意する方法の構成に関するページを参照してください。
考慮すべきその他の認可
委任されたアクセス許可とアプリケーションのアクセス許可は、保護されたリソースへのアクセスをアプリケーションとユーザーに許可する唯一の方法ではありません。 管理者は、機密情報へのアクセスを許可している他の認可システムを把握しておく必要があります。 Microsoft でのさまざまな認可システムの例としては、Microsoft Entra 組み込みロール、Exchange RBAC、Teams のリソース固有の同意などがあります。