見出し画像

Microsoft Graphを利用したAzureADログの取得

こんにちは、アイシーティーリンクの国分と申します。

Microsoft Graph APIを利用したAzureADのログの取得について書いてみたいと思います。


AzureADのログについて

AzureADを利用しているユーザーのサインインログや監査ログが保管されています。保存される期間は下記の通りです。

Azure AD Free:7日間
Azure AD Premium P1 、Azure AD Premium P2:30日間


Microsoft Graphについて

Microsoft Graph は、Microsoft 365 サービス全体に保存されているデータへのアクセスを提供します。
REST APIを利用してMicrosoft 365サービスのデータへアクセスが可能になります。


Microsoft Graphを利用したAzureADログの取得のメリット

  • テナントに依存しない
    AzureADのログを長期保管する場合、よく利用されるのはLogAnalyticsやストレージアカウントだと思います。Azureポータルよりログの保管設定が可能ですが、同一テナント内のログしか保管できません。
    異なるテナントにあるログを収集する場合には、Microsoft Graphを利用するとREST API経由でログの取得ができるので、別のテナントでログを管理することが可能になります。

  • Azure利用料を抑えることが可能
    LogAnalyticsやストレージアカウントなどはAzureのサービスであるため、利用料金が発生します。容量次第では、Azureの利用料金が高くなる恐れがあります。Microsoft Graph経由でログを取得することにより、Azureのサービスを利用せずにログの保管が可能になるため、Azure利用料を抑えることが可能になります。


Microsoft Graphを利用したアプリ登録方法

・Azureポータルからアプリの登録
 Azure ポータルより[zure Active Directory]>[アプリの登録]を選択します。

・アプリ登録メニューより[+新規登録]を選択し、アプリ登録を行います。
 登録時に入力する項目は下記のとおりです。
 [名前]:任意の名前を入力してください。
 [サポートされているアカウントの種類]:シングルテナント
 [リダイレクトURI]:未入力

・ アプリが作成されたら [API のアクセス許可] を選択します。

・ [Microsoft Graph] を選択し[アプリケーションの許可] を選択します。

・AuditLog.Read.All と Directory.Read.All にチェックをつけます。

・[アクセス許可の追加] を選択します。

・[ 「テナント名」に管理者の同意を与えます] をクリックし [はい] を選択します。※状態欄にチェックがついていなければ、グローバル管理者に承認を依頼する必要があります。

・証明書の登録
[証明書とシークレット] を選択します。

・[証明書のアップロード] を選択し、任意の証明書をアップロードします。


アプリの利用方法

下記URLよりサインインログ、監査ログ取得が可能です。
※事前にアクセストークンの取得が必要です。

https://graph.microsoft.com/v1.0/auditLogs/signIns

https://graph.microsoft.com/v1.0/auditLogs/directoryAudits

[
    {
        "id":  "",
        "createdDateTime":  "YYYY-MM-DDThh:mm:ssZ",
        "userDisplayName":  "xxxx",
        "userPrincipalName":  "xxxx@xxxx.onmicrosoft.com",
        "userId":  "xxxx",
        "appId":  "xxxx",
        "appDisplayName":  "Graph explorer (official site)",
        "ipAddress":  "xxxx",
        "clientAppUsed":  "Browser",
        "correlationId":  "xxxx",
        "conditionalAccessStatus":  "notApplied",
        "isInteractive":  true,
        "riskDetail":  "none",
        "riskLevelAggregated":  "none",
        "riskLevelDuringSignIn":  "none",
        "riskState":  "none",
        "riskEventTypes":  [

                           ],
        "riskEventTypes_v2":  [

                              ],
        "resourceDisplayName":  "Microsoft Graph",
        "resourceId":  "xxxxxxxxx-xxxx-xxxx-xxxx-000000000000",
        "status":  {
                       "errorCode":  0,
                       "failureReason":  "Other.",
                       "additionalDetails":  null
                   },
        "deviceDetail":  {
                             "deviceId":  "",
                             "displayName":  "",
                             "operatingSystem":  "Windows 10",
                             "browser":  "Chrome",
                             "isCompliant":  false,
                             "isManaged":  false,
                             "trustType":  ""
                         },
        "location":  {
                         "city":  "",
                         "state":  "",
                         "countryOrRegion":  "",
                         "geoCoordinates":  "@{altitude=; latitude=xx.xxxxx; longitude=xx.xxxx}"
                     },
        "appliedConditionalAccessPolicies":  [

                                             ]
    }
}

取得したログはJSON形式となっています。必要に応じてNoSQLへの保存なども可能です。


さいごに

駆け足になりましたが、Microsoft Graphを利用したAzureADログの取得方法を紹介いたしました。Microsoft Graphはまだまだ他のサービスも利用できるので、試していきたいと思います。

いいなと思ったら応援しよう!