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はまだまだ他のサービスも利用できるので、試していきたいと思います。