はじめに
Identity Protectionに対してAPIアクセスしてログを取得するために必要なAPI設定を以下の手順を記述します。
利用できるAPIは、以下の通り。 Azureユーザアカウントがリスクにさらされた時にログが生成される。
1~3は、ログ収集GETコマンド。Microsoftサポートによると4は、侵害されたユーザーを確認する。5危険なユーザーを無視するというPOSTコマンドで要求が成功した場合は、"204 No Content" として応答されるだけとのこと。
今回は1~3について記載します。
- https://graph.microsoft.com/v1.0/identityProtection/riskDetections
- https://graph.microsoft.com/v1.0/identityProtection/riskyUsers/{riskyUserId}/history
- https://graph.microsoft.com/v1.0/identityProtection/riskyUsers
- https://graph.microsoft.com/v1.0/identityProtection/riskyUsers/confirmCompromised
- https://graph.microsoft.com/v1.0/identityProtection/riskyUsers/dismiss
また、Identity Protectionで取得できる情報には、サービス プリンシパルの場合は “servicePrincipalRiskDetection" と "riskyServicePrincipals" もあります。https://learn.microsoft.com/ja-jp/graph/api/resources/identityprotection-overview?view=graph-rest-1.0#for-service-principals
マイクロソフトによると2023/3月時点では、syslog等で外部出力する方法はないとのことです。
Graph API準備
Azure Active Directoryを開きアプリケーション->アプリの登録をクリックします。
左のメニューから証明書とシークレットをクリックします。
注意:有効期限は最大の24か月。このタイミングでAPIトークンを作成するためのクレデンシャルが無効になります。
追加します。
シークレットの値をコピーして自身のノートパット等に記録しておきます。あとで利用します。
APIアクセス許可をクリックして画面のように4つの権限を与えます。
アクセス許可の追加->Microsoft Graph->アプリケーションの許可とクリックして対象の権限を選択します。
xxxに管理者の同意を与えますを押します。状態がxxに付与されましたになることを確認します。
アプリケーション(クライアント)ID、ディレクトリ(テナント)IDをコピーしてノートパット等に貼り付けます。
API 実行
Token取得API Request
curl --location --request POST 'https://login.microsoftonline.com/{上記で取得したディレクトリ(テナント)ID値}/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_secret={上記で取得した値}' \
--data-urlencode 'client_id={上記で取得した値}' \
--data-urlencode 'scope=https://graph.microsoft.com/.default'
Token 取得 Response
access_token部分をコピーして後続のRequestコマンドで利用します。
{
"token_type": "Bearer",
"expires_in": 3599,
"ext_expires_in": 3599,
"access_token": "{Tokenが表示される}"
}
APIによるデータ取得(riskDetections)
Authorization: Bearer 以下に上記で取得したtokenを設定します。
curl --location --request GET 'https://graph.microsoft.com/v1.0/identityProtection/riskDetections' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {Token}'
riskDetections Response
Torブラウザを利用してAzureログインしたらこのようなログが生成されました
"{
""@odata.context"": ""https://graph.microsoft.com/v1.0/$metadata#identityProtection/riskDetections"",
""value"": [
{
""id"": ""34952612d88c80936f3dfc64b9e2573e1a887dcbd9e7fa44395076dddb72e312"",
""requestId"": ""be63b488-0121-42f7-96d7-240a56da7600"",
""correlationId"": ""eb2af637-c2ed-4529-9681-0aea1e7f62c8"",
""riskEventType"": ""anonymizedIPAddress"",
""riskState"": ""atRisk"",
""riskLevel"": ""medium"",
""riskDetail"": ""none"",
""source"": ""IdentityProtection"",
""detectionTimingType"": ""realtime"",
""activity"": ""signin"",
""tokenIssuerType"": ""AzureAD"",
""ipAddress"": ""185.220.101.175"",
""activityDateTime"": ""2023-03-01T06:46:00.1181587Z"",
""detectedDateTime"": ""2023-03-01T06:46:00.1181587Z"",
""lastUpdatedDateTime"": ""2023-03-01T06:48:19.1017986Z"",
""userId"": ""b9fd1244-50e1-4221-835d-f53111b29ac8"",
""userDisplayName"": ""test"",
""userPrincipalName"": ""test0301@test02131.onmicrosoft.com"",
""additionalInfo"": ""[{\""Key\"":\""userAgent\"",\""Value\"":\""Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Firefox/102.0\""}]"",
""location"": {
""city"": ""Schoenwalde-Glien"",
""state"": ""Brandenburg"",
""countryOrRegion"": ""DE"",
""geoCoordinates"": {
""latitude"": 52.61983,
""longitude"": 13.12743
}
}
},
{
""id"": ""c356cfc985b2b2c4c1c7e24675595cc1149cef760d3655f651c9eabb556f5ffc"",
""requestId"": ""baa66880-8bb7-4354-803b-d12224a96f00"",
""correlationId"": ""eb2af637-c2ed-4529-9681-0aea1e7f62c8"",
""riskEventType"": ""anonymizedIPAddress"",
""riskState"": ""atRisk"",
""riskLevel"": ""medium"",
""riskDetail"": ""none"",
""source"": ""IdentityProtection"",
""detectionTimingType"": ""realtime"",
""activity"": ""signin"",
""tokenIssuerType"": ""AzureAD"",
""ipAddress"": ""185.220.101.175"",
""activityDateTime"": ""2023-03-01T06:48:39.9072409Z"",
""detectedDateTime"": ""2023-03-01T06:48:39.9072409Z"",
""lastUpdatedDateTime"": ""2023-03-01T06:49:41.410552Z"",
""userId"": ""b9fd1244-50e1-4221-835d-f53111b29ac8"",
""userDisplayName"": ""test"",
""userPrincipalName"": ""test0301@test02131.onmicrosoft.com"",
""additionalInfo"": ""[{\""Key\"":\""userAgent\"",\""Value\"":\""Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Firefox/102.0\""}]"",
""location"": {
""city"": ""Schoenwalde-Glien"",
""state"": ""Brandenburg"",
""countryOrRegion"": ""DE"",
""geoCoordinates"": {
""latitude"": 52.61983,
""longitude"": 13.12743
}
}
}
]
}"
APIによるデータ取得(riskUsers)
"curl --location 'https://graph.microsoft.com/v1.0/identityProtection/riskyUsers' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {Token}''"
riskUsers Response
Torブラウザを利用してAzureログインしたらこのようなログが生成されました
"{
""@odata.context"": ""https://graph.microsoft.com/v1.0/$metadata#identityProtection/riskyUsers"",
""value"": [
{
""id"": ""b9fd1244-50e1-4221-835d-f53111b29ac8"",
""isDeleted"": false,
""isProcessing"": false,
""riskLevel"": ""medium"",
""riskState"": ""atRisk"",
""riskDetail"": ""none"",
""riskLastUpdatedDateTime"": ""2023-03-01T06:53:19.4682155Z"",
""userDisplayName"": ""test"",
""userPrincipalName"": ""test0301@test02131.onmicrosoft.com""
}
]
}"
APIによるデータ取得(User history)
"curl --location 'https://graph.microsoft.com/v1.0/identityProtection/riskyUsers/b9fd1244-50e1-4221-835d-f53111b29ac8/history' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {Token}'"
riskUsers History Response
Torブラウザを利用してAzureログインしたらこのようなログが生成されました
"{
""@odata.context"": ""https://graph.microsoft.com/v1.0/$metadata#identityProtection/riskyUsers('b9fd1244-50e1-4221-835d-f53111b29ac8')/history"",
""value"": [
{
""id"": ""b9fd1244-50e1-4221-835d-f53111b29ac8"",
""isDeleted"": false,
""isProcessing"": false,
""riskLevel"": ""medium"",
""riskState"": ""atRisk"",
""riskDetail"": ""none"",
""riskLastUpdatedDateTime"": ""2023-03-01T06:53:19.4682155Z"",
""userDisplayName"": ""test"",
""userPrincipalName"": ""test0301@test02131.onmicrosoft.com"",
""userId"": ""b9fd1244-50e1-4221-835d-f53111b29ac8"",
""initiatedBy"": null,
""activity"": {
""riskEventTypes"": [
""anonymizedIPAddress""
],
""detail"": null
}
}
]
}"
参考資料