3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OAuth2認証のREST APIでOCI Log Analyticsにログを収集する

3
Last updated at Posted at 2026-03-11

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

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

Entra IDの設定

任意の名前でアプリケーションを登録
image.png

アプリケーション(クライアント)IDをメモしておく
image.png

APIのアクセス許可 > アクセス許可の追加
image.png

Microsoft Graph -> アプリケーションの許可 -> AuditLog.Read.Allをチェック。同様に
Directory.Read.Allもチェック
image.png

XXXに管理者の同意を与えますをクリック
image.png

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

Log Analytics パーサーの作成

Entra IDからレスポンスの結果はJSONフォーマットになっているので、それを正しくパースしてログを取り込むためのパーサーを作成する

パーサーの作成 -> JSONタイプを選択
image.png

以下のEntraIDのサンプルログをコピーして、サンプルのログ・コンテンツに張り付ける。既存フィールドのマップをクリックする。また、拡張オプションからログエントリのJSONパスを$.valueに変更する
image.png

{
    "@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。
image.png

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

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の左メニューから管理 -> ソース -> ソースの作成をクリック
image.png

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

以下の情報を基に入力する。入力後、検証をクリックして検証に成功したら保存する
ログ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

image.png

作成後、関連付けられていないエンティティからREST APIを実行する管理エージェントがあるインスタンスを選択し、アソシエーションの追加をクリック
image.png

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

ログエクスプローラーにEntra IDの認証に関するログが表示されていることを確認
image.png

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?