監査ログ

更新日:4 日前 · 読了目安 1分

監査ログは、ロールの割り当て、エンジンの編集、APIキーの発行、請求内容の変更など、組織内のあらゆる状態変更アクションを記録し、検索・絞り込み可能なタイムラインとして表示します。Roles & Permissions とあわせて Enterprise プランで利用できます。

このログはデータベースレベルで追記専用になっています。アプリケーションの接続では、監査ログの行を更新・削除・truncate できません。一度書き込まれた内容は、そのまま残ります。

記録される内容#

各イベントには、実行者、アクション、対象、そしてリクエストが HTTP で到達した際のコンテキストが記録されます。

項目補足
実行者アクションを実行したユーザー、または API key
アクションengine.created や member.role_changed のような型付きの値
対象変更対象となったエンティティ(例: エンジン、ロール、用語集項目)
メタデータ関連エンティティの ID のみを保存し、名前・メールアドレス・コンテンツ断片は保存しません
リクエストコンテキストrequest_id、IPアドレス、ユーザーエージェント — HTTP 経由で受信した時点の情報を記録します
タイムスタンプUTC に加え、欠落検知のための単調増加シーケンス番号を記録します

設計上、保存するのは ID のみ

metadata カラムには、人が読める値ではなく ID だけを保存します。UI は表示時に現在の名前を結合するため、エンジン名やユーザー名を変更しても履歴が書き換わることはありません。また、監査ログの行を GDPR の削除権との衝突から切り離せます。要するに、秘匿化すべきコンテンツ自体を持たないためです。

対象アクション#

イベントは、ダッシュボードのフィルターに対応したカテゴリごとにグループ化されています。

カテゴリ現在対応しているアクション
組織org.created、org.settings_updated、org.ownership_transferred、org.deleted
メンバーmember.invited、member.removed、member.role_changed
ロールrole.created、role.updated、role.deleted
エンジンengine.created、engine.updated、engine.deleted
API keysapi_key.created、api_key.revoked
コンテンツglossary_item.*、instruction.*、brand_voice.*(単一操作のみ)

ログへのアクセス#

監査ログ は常に 設定 の 管理者 に表示されます。対象の権限がない場合、ページにはタイムラインの代わりに「監査ログはご利用のプランでは利用できません」と表示されます。内容は次のとおりです。

  • 絞り込みできる一覧 — アクション、実行者、期間 で絞り込めます(過去七日間 などのプリセット、または 開始日 / 終了日 の日付範囲)。未来の日付は指定できません。
  • 古いイベントを読み込む — 新しいイベントが先に表示され、一覧の下部にある 古いイベントを読み込む をクリックすると次のページを取得できます。
  • イベントの詳細 — 任意の行をクリックするとその場で展開され、メタデータ全体、リクエスト識別子、アイピーアドレス、ユーザーエージェントを確認できます。
  • 共有できる表示 — 絞り込み条件と開いているイベントはユーアールエルに反映されるため、どの表示も共有できます。

閲覧できるユーザー#

このページへのアクセスは、次の 2 つの条件で制御されます。

  1. 権利 — 監査ログ機能がその組織で有効になっている必要があります(Enterprise プラン)。
  2. 権限 — 閲覧者の role に org:view_audit_logs が含まれている必要があります。あらかじめ用意されている Full Access ロールにはデフォルトで含まれており、Owner は常にこの権限を持ちます。

この権限を持たないメンバーには、タイムラインの代わりに「アクセスなし」ページが表示されます。権利のない組織のメンバーには、ペイウォールが表示されます。

Enterprise プランが失効した場合

監査ログは同じロールベースアクセス制御階層の権限対象です。過去のイベントはデータベースに残りますが、プランが復元されるまでページには「監査ログはご利用のプランでは利用できません」と表示され、読み取りエンドポイントは四〇三を返します。

改ざんの痕跡#

監査ログは単なる記録ではありません。あとから書き換えることが、現実的にかなり難しい設計になっています。

  • データベースレベルで追記専用。 テーブルを作成するマイグレーションでは、API ロールに対して REVOKE UPDATE, DELETE, TRUNCATE を実行します。今後どのようなコードパスであっても — バグ、新しいエンドポイント、SQL インジェクションであっても — 行を変更する前に Postgres によって拒否されます。
  • 単調増加シーケンス。 すべての行には、厳密に増加する seq カラムが付与されます。監査担当者はこのシーケンスを確認することで、欠番として削除を検出できます。

これは SOC 2 で想定されるような統制には十分です。ただし、本番データベースへの直接アクセス資格情報を持つ攻撃者までは防げません。より強固な構成(分離されたオーナーロール、WORM ミラー)については、ご要望に応じて提供可能です。

保持期間#

監査イベントは、デフォルトで無期限に保持されます。カスタム保持期間 — 通常は 1 年、3 年、7 年 — は Enterprise で利用できます。コンプライアンス対応やセキュリティ質問票のために特定の保持ポリシーが必要な場合は、ご相談ください。

対象外の内容#

v1 では、意図的にいくつかの制約があります。

  • ベストエフォートでの記録であり、トランザクションではありません。 トランザクション内での記録は短期ロードマップに入っています。監査イベントは、対象となるアクションの実行後に書き込まれ、同じデータベーストランザクション内では処理されません。まれな障害時には(アクションは成功したが、その後の監査ログ挿入に失敗した場合)、対応するイベントなしでアクションだけが実行される可能性があります。
  • まだ対応していないアクションタイプがあります。 エンジンメンバーシップの変更、インテグレーションの connect / update / disconnect、model-config の編集、請求サブスクリプションの変更、一括コンテンツ操作(CSV アップロード、createMany / updateMany / deleteMany)では、まだイベントは生成されません。アクション語彙は予約済みのため、対応後は既存のフィルターカテゴリに表示されます。
  • 読み取り操作は監査対象外です。 監査ログ自体の閲覧、エンジンのリクエストログの閲覧、用語集のダウンロードではイベントは生成されません。対象となるのは状態変更アクションのみです。
  • エクスポート機能はまだありません。 監査データはダッシュボード上で確認できます。CSV エクスポート、SIEM webhook、S3 ミラーはロードマップに含まれています。必要であればお知らせください。
  • エンジンごとの表示はありません。 組織のすべての監査イベントは一つのタイムラインにまとまっています。アクションまたは実行者で絞り込んで範囲を狭めてください。
  • リアルタイム追跡はありません。 更新 ボタンやウェブソケットストリームはありません。新しいイベントを反映するにはページを再読み込みしてください。

次のステップ#