監査イベントを一覧表示

GET /v1/audit-events · 権限 audit-events:read

環境の監査レコードを、カーソルベースのページネーションで新しいものから順に一覧表示します。admin ストリームには、管理 API、ダッシュボード、プラットフォームを通じて行われた変更が含まれます。application ストリームには、アプリケーションが書き込んだイベントが含まれます。すべてのレコードは環境とストリームごとのハッシュチェーンの一部であるため、エクスポート(POST /v1/audit-exports)を使えば履歴を独立して検証できます。

環境は必ず API キーから決まります。環境を指定するパラメータはありません。

リクエスト

パラメータ 場所 必須 説明
limit query いいえ 1 ページあたりの件数。1 から 100 まで。既定値は 20。
after query いいえ list_metadata.after から取得した不透明なカーソル(より古いレコード)。before と同時に指定できません。
before query いいえ list_metadata.before から取得した不透明なカーソル(より新しいレコード)。after と同時に指定できません。
stream query いいえ admin(既定)または application。
from query いいえ RFC 3339 形式の時刻。この時刻以降のレコードを返します。既定値は、保持期間の開始時刻と to の 92 日前のうち、新しい方です。
to query いいえ RFC 3339 形式の時刻。この時刻より前のレコードを返します。既定値は現在時刻です。from から to までの範囲は最大 92 日です。
action query いいえ user. や connection.updated のようなアクションの接頭辞。
category query いいえ authentication、session、token、administration、provisioning、federation、authorization、data_access、security、key_management、configuration、application のいずれか。
actor_type query いいえ api_key、dashboard_user、m2m_client、agent、system などのアクター種別。
actor_id query いいえ 記録されているとおりの正確なアクター ID(key_…、usr_…、system:<service>)。
target_type query いいえ user、organization、audit_export などのターゲット種別。
target_id query いいえ 正確なターゲット ID。target_type と併用する場合、両方が同一のターゲットに一致する必要があります。
org_id query いいえ 1 つの組織(org_…)に関するレコード。
outcome query いいえ success、failure、denied、error のいずれか。
request_id query いいえ リクエストの Idp-Request-Id(UUID)。
correlation_id query いいえ ワークフローの Idp-Correlation-Id(UUID)。
agent_only query いいえ true にすると、エージェントによる操作のみを返します。actor_type が agent、または空でない act_chain を持つものが対象です。
client query いいえ 呼び出しを行ったクライアントの種類。mcp(管理 MCP サーバー。metadata.client は mcp/<version>)または cli(KeenAuth CLI。cli/<version>)。この値はクライアント自身が宣言するもので、誰が操作したかの証明にはなりません。誰が操作したかを示すのはレコードのアクターです。一覧表示のみで使用でき、エクスポートには client フィルターはありません。

レコードは常に occurred_at(同じ場合は id)で並び、新しいものから順に返されます。order パラメータはありません(order=desc は受け付けられますが、それ以外の値は validation_failed で失敗します)。カーソルは、発行されたときと同じフィルターおよび環境でのみ有効です。総件数は返されません。

10 秒を超える検索は 422 search_too_broad で停止します。フィルターまたは時間範囲を絞り込むか、大きな範囲の場合はエクスポートを使用してください。

レスポンス

200 OK。data にはそのページのレコードが入ります。list_metadata.after はより古いレコード、list_metadata.before はより新しいレコードを指します(該当するレコードがない場合は null)。空のフィールドは null になります。

ip と user_agent は、キーが audit-events:read_ip 権限を持つ場合にのみ含まれ、作成から 13 か月以内のレコードにのみ値が入ります。この権限がない場合、これらのフィールドは完全に省略されます(マスクされた値も返されません)。ip_prefix、ip_country、ip_asn、user_agent_family は常に返されます。prev_hash、org_prev_hash、record_hash はパディングのない base64url 形式の SHA-256 値です。

{
  "data": [
    {
      "id": "evt_01j9xk3m7q8r2s4t6v8w0y2z4a",
      "stream": "admin",
      "seq": 4182,
      "schema_version": 1,
      "action": "user.blocked",
      "category": "administration",
      "outcome": "success",
      "reason_code": null,
      "occurred_at": "2026-10-01T08:15:42.120Z",
      "received_at": "2026-10-01T08:15:42.131Z",
      "recorded_at": "2026-10-01T08:15:42.140Z",
      "clock_anomaly": false,
      "actor_type": "api_key",
      "actor_id": "key_01j9xk3m7q8r2s4t6v8w0y2z4d",
      "act_chain": null,
      "session_id": null,
      "auth_context": null,
      "elevation_ref": null,
      "org_id": null,
      "targets": [
        {"type": "user", "id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p", "org_id": null, "name": null}
      ],
      "application_id": null,
      "ip_prefix": "203.0.113.0/24",
      "ip_country": "DE",
      "ip_asn": 64500,
      "user_agent_family": "keenauth-go",
      "request_id": "0192a6c1-7d3e-7a10-9b2c-3d4e5f607182",
      "correlation_id": null,
      "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736",
      "producer_service": "directory",
      "policy_ref": "perm:users:write",
      "changes": {"status": {"old": "active", "new": "blocked"}},
      "metadata": null,
      "prev_hash": "n4bQgYhMfWWaL-qgxVrQFaO_TxsrC4Is0V1sFbDwCgg",
      "org_prev_hash": null,
      "record_hash": "LCa0a2j_xo_5m0U8HTBBNBNCLXBkg7-g-YpeiGJm564"
    }
  ],
  "list_metadata": {
    "before": null,
    "after": "<opaque cursor>"
  }
}

エラー

すべてのエラーは、安定した code を含む application/problem+json ボディで返されます。

HTTP code 発生条件
400 invalid_cursor カーソルの形式が不正、またはこのリクエスト用に発行されたものではありません。
400 invalid_filter 監査サービスがフィルターを拒否しました(例:92 日を超える範囲)。
400 range_outside_retention from または to が、お使いのプランの監査保持期間の外にあります。
422 validation_failed クエリパラメータが無効です(limit が範囲外、時刻の形式が不正、to が from より後でない、未知の stream、category、outcome、ID の形式が不正、パラメータの重複、desc 以外の order)。
422 search_too_broad 検索に 10 秒を超えました。範囲を絞り込んでください。
401 unauthenticated API キーが未指定、無効、または取り消されています。
403 insufficient_permissions キーに audit-events:read がありません。
429 rate_limited レート制限を超えました。Retry-After に従ってください。
503 service_unavailable 依存サービスが一時的に利用できません。後で再試行してください。

例

curl "https://api.eu.keenauth.com/v1/audit-events?action=user.&from=2026-10-01T00:00:00Z" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
keenauth audit-events list --action user. --from 2026-10-01T00:00:00Z

個人データ

このエンドポイントは個人データ(監査イベント)を扱います。KeenAuth API における個人データでは、保存される内容、保存期間、削除方法について説明しています。いずれのフィールドにも、特別な種類の個人データ(健康、生体データ、宗教、政治的意見、性的指向)を送信しないでください。