OCI Log Analyticsは、REST API経由で直接ログを収集することが可能です。まずは、こちらのスライドをご覧ください。

SaaSアプリケーションの監査ログや様々なクラウドサービスの操作ログなどは、通常コンソールからログを表示したりダウンロードできる機能がありますが、それらはAPIが公開され連携できるようになっていることも多いかと思います。
そこで今回は、汎用的なOAuth2を使用したREST APIアクセスについて紹介します。
収集対象のサービスの例として、Microsoft Azureの認証サービスであるEntra IDのサインログをREST APIで直接アクセスして、Log Analyticsにログを収集するために必要な一連の手順について説明しています。
Entra IDの設定
Microsoft Graph -> アプリケーションの許可 -> AuditLog.Read.Allをチェック。同様に
Directory.Read.Allもチェック

証明書とシークレット -> 新しいクライアント シークレットを作成。作成したシークレットの値をメモしておく

Log Analytics パーサーの作成
Entra IDからレスポンスの結果はJSONフォーマットになっているので、それを正しくパースしてログを取り込むためのパーサーを作成する
以下のEntraIDのサンプルログをコピーして、サンプルのログ・コンテンツに張り付ける。既存フィールドのマップをクリックする。また、拡張オプションからログエントリのJSONパスを$.valueに変更する

{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#auditLogs/signIns",
"value": [
{
"id": "47b4820a-aee8-xxxx-xxxx-0f8a4aa70b00",
"createdDateTime": "2026-03-02T03:39:42Z",
"userDisplayName": "Testuser001",
"userPrincipalName": "nxxxxxxxx.onmicrosoft.com",
"userId": "b4c99c6b-7511-xxxx-xxxx-c3aa64ed0eec",
"appId": "04b07795-xxxx-xxxx-bbee-02f9e1bf7b46",
"appDisplayName": "Microsoft Azure CLI",
"ipAddress": "100.100.100.100",
"clientAppUsed": "Mobile Apps and Desktop clients",
"correlationId": "c22ed25d-xxxx-xxxx-xxxx-5a2afe55c344",
"conditionalAccessStatus": "notApplied",
"isInteractive": true,
"riskDetail": "none",
"riskLevelAggregated": "none",
"riskLevelDuringSignIn": "none",
"riskState": "none",
"riskEventTypes": [],
"riskEventTypes_v2": [],
"resourceDisplayName": "Azure Resource Manager",
"resourceId": "797f4846-xxxx-xxxx-xxxx-dac1f8f63013",
"status": {
"errorCode": 50199,
"failureReason": "For security reasons, user confirmation is required for this request. Please repeat the request allowing user interaction.",
"additionalDetails": null
},
"deviceDetail": {
"deviceId": "",
"displayName": "",
"operatingSystem": "Linux",
"browser": "Firefox 148.0",
"isCompliant": false,
"isManaged": false,
"trustType": null
},
"location": {
"city": "Chiba-Shi",
"state": "Chiba",
"countryOrRegion": "JP",
"geoCoordinates": {
"altitude": null,
"latitude": 35.61255,
"longitude": 140.14154
}
},
"appliedConditionalAccessPolicies": []
}
]
}
以下のようにフィールドをマッピングする。例えば、$.createDataTimeはTimeフィールドを選択する。選択するフィールドがない場合は、+で自身でユーザー定義フィールドを作成する。
全部同じにする必要はなく、テスト後に編集も可能なので、ここでは必須のTime以外のフィールドをとりあえず2,3個マッピングしておけばOK。

最後にパーサーのテストをして正しくマッピングされていることを確認

REST API実行インスタンスの準備
実際には、インスタンスにインストールされた管理エージェントがREST APIを実行し、その結果をLog Analyticsにアップロードするという方式になる。なので、管理エージェントがインストール済みのインスタンスを準備する。ない場合はこちらを参考に準備
OAuth2の認証情報をLog Analyticsに登録する
#OAuth2の認証情報。entraapi.jsonとして作成
{"source":"lacollector.la_rest_api",
"name":"entraapi",
"type":"HTTPSBasicAuthCreds",
"description":"******",
"properties":[
{"name":"HTTPSUserName","value":"Entra IDのプリケーション(クライアント)ID"},
{"name":"HTTPSPassword","value":"Entra IDのシークレットの値"}]
}
#Log Analyticsに認証情報を登録する
cat entraapi.json | sudo -u oracle-cloud-agent /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/bin/credential_mgmt.sh -o upsertCredentials -s logan
Log Analytics ソースの作成
Log Anayticsの左メニューから管理 -> ソース -> ソースの作成をクリック

ソースタイプをREST API、エンティティ・タイプはHOST(LINUX)、パーサーは作成したパーサーを選択して、エンドポイントの追加をクリック

以下の情報を基に入力する。入力後、検証をクリックして検証に成功したら保存する
ログURLはEntraIDのAuditログのエンドポイント。START_TIMEマクロを指定して、動的に日時が変わるようにしている。
マクロについて詳しくはドキュメントを参照
ログURL: https://graph.microsoft.com/v1.0/auditLogs/signIns?$filter=createdDateTime gt {START_TIME:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'.TZ=UTC}
ログ資格証明タイプ: 動的トークン(OAuth 2.0)
トークン証明書名: entraapi (管理エージェントに追加した認証名)
トークンエンドポイント: https://login.microsoftonline.com/アプリケーション(クライアント)ID/oauth2/v2.0/token
権限タイプ: client_credentials
スコープ: https://graph.microsoft.com/.default
作成後、関連付けられていないエンティティからREST APIを実行する管理エージェントがあるインスタンスを選択し、アソシエーションの追加をクリック

これで設定は完了。Log Analyticsの最初のクエリーは、現在時刻より-30日でアクセスしてログを収集し、以降は実行クエリーの最終時刻が次の最新のログの差分を収集する。(クエリーのデフォルトは5分間隔)






