TraceBook アクセスモデル

TraceBook は DotID の統合監査証跡です — AWS CloudTrail に相当します。すべてのプラットフォームサービス(DotID、TrustMint、NovaBell など)のAPI アクティビティを記録し、console.flexgalaxy.com/tracebook/ で検索可能なタイムラインを通じてイベントを確認できます。

このページでは、TraceBook で**誰が何にアクセスできるか**、およびアクセススコープの決定方法について説明します。

アクセススコープ

TraceBook は、呼び出し元の ID と組織内の役割によって決まる3つのアクセススコープを定義しています:

スコープ

表示される内容

OWN_ACCOUNT

アカウントのルートユーザー、または AdministratorAccessIAMFullAccess、もしくは AuditReadAccess 許可セットを持つ IDC ユーザー

自分のアカウントの監査イベントのみ

ORG_WIDE

管理アカウント**のルートユーザー、**または audit サービスの**委任管理者**として登録されたアカウントのルートユーザー

組織内のすべてのアカウントの監査イベント

NONE

対象の許可セットを持たない IDC ユーザー、またはアカウントを解決できないユーザー

監査イベントなし(アクセス拒否)

TraceBook を使用できるユーザー

アカウントレベルアクセス (OWN_ACCOUNT)

以下のユーザーは、**自分のアカウント内**の監査イベントを閲覧できます:

  1. ルートユーザー — Keycloak サブジェクトがアカウントを所有するユーザー。ルートユーザーは定義上アカウント管理者であり、常に TraceBook へのアクセス権を持ちます。

  2. AdministratorAccess、IAMFullAccess、または AuditReadAccess を持つ IDC ユーザー — これらの許可セットの1つがアカウントに割り当てられた Identity Center ユーザー。その他の許可セット(例: ReadOnlyAccessDeveloperAccess)では TraceBook へのアクセスは**付与されません**。

組織全体アクセス (ORG_WIDE)

以下のユーザーは、**組織内のすべてのアカウント**の監査イベントを閲覧できます:

  1. 管理アカウントのルートユーザー — 管理アカウントは組織を作成したアカウントです。そのルートユーザーは、すべてのメンバーアカウントの監査イベントに対する完全な可視性を自動的に持ちます。

  2. ``audit`` サービスの委任管理者アカウントのルートユーザー — 組織管理者はメンバーアカウントを audit サービスネームスペースの委任管理者として指定できます。登録後、その委任アカウントのルートユーザーは監査イベントへの組織全体の読み取りアクセスを取得します。

    POST /api/v1/organizations/{orgId}/delegated-admins
    
    { "service_name": "audit", "account_id": "<member-account-id>" }
    

    委任ルールと適格性については、アーキテクチャガイドの delegated-administrators を参照してください。

アクセス判定フロー

ユーザーが TraceBook を開くと、フロントエンドは /audit-api/v1/audit/me エンドポイントを呼び出します。監査サービスは以下のロジックでスコープを決定します:

1. Extract the caller's realm and subject from the JWT token.

2. If the realm is NOT an IDC realm (i.e. a root user):
   a. Look up the account owned by this subject.
   b. If the account is a management account → scope = ORG_WIDE.
   c. If the account is a delegated admin for "audit" → scope = ORG_WIDE.
   d. Otherwise → scope = OWN_ACCOUNT (own account only).

3. If the realm IS an IDC realm (i.e. an IDC user):
   a. Read the permission set from the "ps" URL parameter or
      session context.
   b. If the permission set is AdministratorAccess, IAMFullAccess,
      or AuditReadAccess → scope = OWN_ACCOUNT.
   c. Otherwise → scope = NONE (no access).

4. Return { scope, accounts[] } to the frontend.
   - OWN_ACCOUNT → accounts contains only the caller's account.
   - ORG_WIDE → accounts contains all member accounts in the org.
   - NONE → accounts is empty, frontend shows access denied.

AWS CloudTrail との比較

概念

AWS CloudTrail

FlexGalaxy TraceBook

アカウントレベルアクセス

cloudtrail:LookupEvents 権限を持つ IAM ユーザー

ルートユーザーまたは管理者/監査許可セットを持つ IDC ユーザー

組織トレイル

管理アカウントが組織トレイルを作成

管理アカウントのルートユーザーは自動的に組織全体のスコープを持つ

委任アクセス

CloudTrail 委任管理者

audit サービス委任管理者

クロスアカウント可視性

組織トレイルがイベントを中央の S3 バケットに配信

ORG_WIDE スコープですべてのメンバーアカウントのイベントをクエリ