単一アカウントで様々なアプリや Web サービスの認証ができる SSO(シングルサインオン)は、多数のアカウント管理が不要になり、利便性が向上するとても便利な認証機能です。

SSO の1つである OAuth 認証は、ユーザーが許可した操作や機能のみを実行し、アプリや Web サービスと連携することが可能です。安易なパスワードや使い回しが発生せず、セキュリティ面も強化できるため、クラウドサービスを利用する際には欠かせない機能となっています。
ただ、ユーザーが日常業務に必要のないサービスやアプリに対し SSO 連携をし、万が一それが悪意のあるアプリであった場合、管理者の知らないうちに情報が漏洩してしまう可能性も考えられます。

アプリやクラウドサービスの管理・制御ができる Microsoft Cloud App Security (MCAS) ライセンスを所持している場合、簡単に現在のアプリやサービスの利用状況を確認することができます。
今回は MCAS 利用がなく、Azure AD Premium P1 ライセンスのみ所持している場合における、OAuth 認証で SSO しているユーザーとサービスを確認する方法を2通りご紹介します。

① Azure AD で確認する方法

「エンタープライズアプリケーション」にて、サービス毎に確認することができます。

  1. Azure Active Directory > エンタープライズ アプリケーション にアクセス
  2. 一覧からアプリを選択後、画面左の [アクセス許可] をクリック
  3. 「ユーザーの同意」の [許可元] に表示されている [〇名の合計ユーザー] をクリック

※ サービス毎に確認する必要があるため、多数のサービスがある場合は ②の方法にてご確認ください。

② PowerShell で一括取得して確認する方法

【事前準備】

◆ Get-AzureADPSPermissions スクリプト

  1. GitHub より以下のスクリプトをダウンロードしておきます。
    Script to list all delegated permissions and application permissions in Azure AD · GitHub
  2. Cドライブ直下 temp フォルダーを作成します。
  3. ダウンロードしたファイルを展開し、「Get-AzureADPSPermissions.ps1」を temp 内に保存します。

◆ Azure AD for Graph PowerShell モジュール

  1. Windows PowerShell を管理者として起動します。
  2. 下記のコマンドを実行して、モジュールをダウンロード、インストールします。
    Install-Module -Name AzureAD

※「NuGet プロバイダーが必要」および「信頼されていないレポジトリ」のメッセージが表示された場合は「Y」を入力します。
※参考情報:Azure Active Directory の PowerShell モジュール | Japan Azure Identity Support Blog (jpazureid.github.io)

◆ 実行ポリシー

  1. 下記のコマンドを実行して、現在の実行ポリシーを確認します。
    Get-ExecutionPolicy
  2. 結果が「Unrestricted」以外の場合は、下記のコマンドを実行して、ポリシーを変更します。
    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process

※「実行ポリシーの変更」は、「Y」を入力。
※作業完了後に手順1(Get-ExecutionPolicy)で確認したポリシーに戻すことをお勧めします。

【一括取得】

  1. Windows PowerShell を管理者として起動します。
     
  2. 下記のコマンドを実行して、スクリプトを保存したフォルダ(temp)に移動します。
    cd c:/temp
     
  3. 下記のコマンドを実行し、全体管理者アカウントでサインインします。
    Connect-AzureAD
     
  4. 次の PowerShell コマンドを一行で実行します。
    .\Get-AzureADPSPermissions.ps1 -ServicePrincipalProperties @(“DisplayName”,”PublisherName”) -UserProperties @(“DisplayName”, “UserPrincipalName”) -ShowProgress $true | Export-csv -Path “Permissions.csv” -NoTypeInformation
     
  5. セキュリティ警告が表示されたら「R」を入力します。
     
  6. temp フォルダーにファイル「permissions.csv」が出力されたら一括取得は完了です。

【出力ファイルの確認】

出力された csv ファイルの内容(一部抜粋)は下表をご参照ください。

項目名説明
PermissionTypeアクセス許可の種類として、ユーザー権限 (Delegated) か、アプリケーション権限 (Application) のいずれかの値をとります。
ClientDisplayNameアプリケーション名 (DisplayName) です。
ClientPublisherNameアプリを作成したテナント名です。
ResourceDisplayNameリソースの表示名です。
Permissionリソースに対して許可されたパーミッションです。
ConsentType同意のタイプとして、特定のユーザー (Principal) か、管理者による同意 (AllPrincipals) のいずれかの値をとります。アプリケーション権限の場合この項目以下は空になります。
PrincipalObjectId同意タイプが Principal の場合に、同意を行ったユーザーのオブジェクト ID です。
PrincipalDisplayName同意を行ったユーザーの表示名です。
incipalUserPrincipalName同意を行ったユーザーアカウントです。

以下の値で絞り込むことにより、外部サービス名(ClientDisplayName)およびユーザー(PrincipalDisplayName、PrincipalUserPrincipalName)を確認することができます。

  • PermissionType :Delegated
  • ConsentType :Principal
  • ClientPublisherName :(外部サービステナント名)

【参考情報・関連情報】

不正同意の付与を検出して修復する – Office 365 | Microsoft Docs
「管理者の承認が必要」のメッセージが表示された場合の対処法 | Japan Azure Identity Support Blog (jpazureid.github.io)