次の方法で共有


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

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

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

前提条件

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

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

Microsoft Entra 管理センターでアクセス許可を確認および取り消す

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

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

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

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

    注記

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

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

  1. [管理者の同意] タブでアクセス許可の一覧を表示します。
  2. 削除するアクセス許可を選択してから、そのアクセス許可の [...] コントロールを選択します。 管理者の同意を取り消す方法のスクリーンショット。
  3. [アクセス許可の取り消し] を選択します。

Microsoft Entra PowerShell を使用してアクセス許可を確認および取り消す

次の Microsoft Entra PowerShell スクリプトを使用して、アプリケーションに付与されたすべてのアクセス許可を取り消します。 少なくともクラウド アプリケーション管理者としてサインインする必要があります。

Connect-Entra -scopes "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All", "AppRoleAssignment.ReadWrite.All" 

# Get Service Principal using objectId
$app_name = "<app-displayName>"
$sp = Get-EntraServicePrincipal -Filter "displayName eq '$app_name'"

# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants = Get-EntraOAuth2PermissionGrant -All | Where-Object { $_.clientId -eq $sp.ObjectId }

# Remove all delegated permissions granted to the service principal
$spOAuth2PermissionsGrants | ForEach-Object {
    Remove-EntraOAuth2PermissionGrant -ObjectId $_.ObjectId
}

# Get all application permissions for the service principal
$spApplicationPermissions = Get-EntraServicePrincipalAppRoleAssignment -ObjectId $sp.ObjectId -All | Where-Object { $_.PrincipalType -eq "ServicePrincipal" }

# Remove all application permissions
$spApplicationPermissions | ForEach-Object {
    Remove-EntraServicePrincipalAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.objectId
}

Microsoft Entra PowerShell を使用してすべてのユーザーとグループの割り当てを削除する

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

connect-entra -scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
#Retrieve the service principal object ID.
$app_name = "<Your App's display name>"
$sp = Get-EntraServicePrincipal -Filter "displayName eq '$app_name'"
$sp.ObjectId

# Get Microsoft Entra App role assignments using objectId of the Service Principal
$assignments = Get-EntraServicePrincipalAppRoleAssignedTo -ObjectId $sp.ObjectId -All $true

# Remove all users and groups assigned to the application
$assignments | ForEach-Object {
    if ($_.PrincipalType -eq "User") {
        Remove-EntraUserAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
    } elseif ($_.PrincipalType -eq "Group") {
        Remove-EntraGroupAppRoleAssignment -ObjectId $_.PrincipalId -AppRoleAssignmentId $_.ObjectId
    }
}

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 Microsoft Entra 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.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/00001111-aaaa-2222-bbbb-3333cccc4444
    
  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}
    

Microsoft Graph を使用してすべてのユーザーとグループの割り当てを削除する

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

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

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

    例:

    GET https://graph.microsoft.com/v1.0/servicePrincipals/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    
  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}
    

現在付与されているアクセス許可を取り消しても、ユーザーはアプリケーションの要求されたアクセス許可に再同意できなくなります。 動的な同意を通じて、アプリケーションがアクセス許可を要求することをブロックする必要があります。 ユーザーによる同意もすべてブロックしたい場合は、ユーザーがアプリケーションに同意する方法の構成に関するページを参照してください。

考慮すべきその他の認可

委任されたアクセス許可とアプリケーションのアクセス許可は、保護されたリソースへのアクセスをアプリケーションとユーザーに許可する唯一の方法ではありません。 管理者は、機密情報へのアクセスを許可している他の認可システムを把握しておく必要があります。 Microsoft でのさまざまな認可システムの例としては、Microsoft Entra 組み込みロールExchange RBACTeams のリソース固有の同意などがあります。