エンタープライズ アプリケーションに付与されるアクセス許可の確認

この記事では、Microsoft Entra テナントのアプリケーションに付与されているアクセス許可を確認する方法について説明します。 悪意のあるアプリケーションが検出された場合、またはアプリケーションに必要以上のアクセス許可が付与されている場合は、アクセス許可の確認が必要になることがあります。 Microsoft Graph API と既存バージョンの PowerShell を使用して、アプリケーションに付与されたアクセス許可を取り消す方法について説明します。

この記事に含まれる手順は、ユーザーまたは管理者の同意によって Microsoft Entra テナントに追加されたすべてのアプリケーションに適用されます。 アプリケーションへの同意の詳細については、ユーザーと管理者の同意に関する説明を参照してください。

前提条件

アプリケーションに付与されたアクセス許可を確認するには、次のものが必要です。

  • アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます
  • グローバル管理者ロール、クラウド アプリケーション管理者ロール、アプリケーション管理者ロールのいずれか。
  • 管理者ではないサービス プリンシパル所有者は、更新トークンを無効にできます。

アクセス許可の復元

取り消された、または削除されたアクセス許可を復元する方法については、「アプリケーションに付与されたアクセス許可を復元する」をご覧ください。

アクセス許可の確認と取り消し

ヒント

この記事の手順は、開始するポータルによって若干異なる場合があります。

Microsoft Entra 管理センターにアクセスして、アプリに付与されたアクセス許可を表示できます。 管理者が組織全体に付与したアクセス許可を取り消したり、コンテキスト PowerShell スクリプトを取得して他のアクションを実行したりできます。

組織全体または特定のユーザーまたはグループに対して付与されているアプリケーションのアクセス許可を監視するには:

  1. クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
  2. [ID]>[アプリケーション]>[エンタープライズ アプリケーション]>[すべてのアプリケーション] に移動します。
  3. アクセスを制限するアプリケーションを選択します。
  4. [アクセス許可] を選択します。
  5. 組織全体に適用されるアクセス許可を表示するには、[管理者の同意] タブを選択します。特定のユーザーまたはグループに付与されたアクセス許可を表示するには、[ユーザーの同意] タブを選択します。
  6. 所定のアクセス許可の詳細を表示するには、一覧からアクセス許可を選択します。 [アクセス許可の詳細] ウィンドウが開きます。 アプリケーションに付与されたアクセス許可を確認した後で、組織全体に対して管理者によって付与されたアクセス許可を取り消すことができます。

    Note

    ポータルを使用して [ユーザーの同意] タブでアクセス許可を取り消すことはできません。 これらのアクセス許可は、Microsoft Graph API 呼び出しまたは PowerShell コマンドレットを使用して取り消すことができます。 詳細については、この記事の「PowerShell」タブおよび「Microsoft Graph」タブを参照してください。

[管理者の同意] タブでアクセス許可を取り消すには:

  1. [管理者の同意] タブでアクセス許可の一覧を表示します。
  2. 削除するアクセス許可を選択してから、そのアクセス許可の [...] コントロールを選択します。 Screenshot shows how to revoke admin consent.
  3. [アクセス許可の取り消し] を選択します。

アクセス許可の確認と取り消し

次の 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
}

更新トークンを無効にする

次のスクリプトを使って、アプリケーションに対するユーザーまたはグループの 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 スクリプトを使用すると、アプリケーションに付与されているすべてのアクセス許可が取り消されます。 少なくともクラウド アプリケーション管理者としてサインインする必要があります。

Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"

# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalID "$ServicePrincipalID"

Example: Get-MgServicePrincipal -ServicePrincipalId '22c1770d-30df-49e7-a763-f39d2ef9b369'

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

更新トークンを無効にする

次のスクリプトを使って、アプリケーションに対するユーザーまたはグループの appRoleAssignments を削除します。

Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"

# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalID "$ServicePrincipalID"

Example: Get-MgServicePrincipal -ServicePrincipalId '22c1770d-30df-49e7-a763-f39d2ef9b369'

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

アクセス許可の確認と取り消し

アクセス許可を確認するには、少なくともクラウド アプリケーション管理者として Graph エクスプローラーにサインインします。

次のアクセス許可に同意する必要があります。

Application.ReadWrite.AllDirectory.ReadWrite.AllDelegatedPermissionGrant.ReadWrite.AllAppRoleAssignment.ReadWrite.All

デリゲートされたアクセス許可

次のクエリを実行し、アプリケーションに付与されたアクセス許可を確認します。

  1. objectID を使ってサービス プリンシパルを取得します。

    GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}
    

    例:

    GET https://graph.microsoft.com/v1.0/servicePrincipals/00063ffc-54e9-405d-b8f3-56124728e051
    
  2. サービス プリンシパルのすべての委任されたアクセス許可を取得する

    GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}/oauth2PermissionGrants
    
  3. oAuth2PermissionGrants ID を使って、委任されたアクセス許可を削除します。

    DELETE https://graph.microsoft.com/v1.0/oAuth2PermissionGrants/{id}
    

アプリケーションのアクセス許可

次のクエリを実行して、アプリケーションに付与されたアプリケーション アクセス許可を確認します。

  1. サービス プリンシパルのすべてのアプリケーションのアクセス許可を取得する

    GET https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipal-id}/appRoleAssignments
    
  2. appRoleAssignment ID を使ってアプリケーションのアクセス許可を削除する

    DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{resource-servicePrincipal-id}/appRoleAssignedTo/{appRoleAssignment-id}
    

更新トークンを無効にする

次のクエリを実行して、アプリケーションに対するユーザーまたはグループの appRoleAssignments を削除します。

  1. objectID を使ってサービス プリンシパルを取得します。

    GET https://graph.microsoft.com/v1.0/servicePrincipals/{id}
    

    例:

    GET https://graph.microsoft.com/v1.0/servicePrincipals/57443554-98f5-4435-9002-852986eea510
    
  2. サービス プリンシパルの objectID を使って、Microsoft Entra アプリのロールの割り当てを取得します。

    GET https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipal-id}/appRoleAssignedTo
    
  3. appRoleAssignment ID を使って、アプリケーションに割り当てられているユーザーやグループの更新トークンを取り消します。

    DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipal-id}/appRoleAssignedTo/{appRoleAssignment-id}
    

注意

現在の付与されているアクセス許可を取り消しても、ユーザーのアプリケーションへの再同意は停止されません。 ユーザーの同意をブロックしたい場合は、ユーザーがアプリケーションに同意する方法の構成に関するページを参照してください。

次の手順