Skip to content

情報露出: 非 APP_ADMIN が admin.html を開くと SaaS Admin 画面のシェル/構造が見える(AC-4 方針と不整合) #812

Description

@win2cot

事象

dev 動作確認(2026-06-28、Step 7 ロール境界)で、Tenant Admin が admin.html を直接開くと、SaaS Admin 画面のシェル(ナビ「Tasks 運営」/サイドバー「プラットフォーム監視」「テナント管理」/ページ見出し)を一度描画してから「SaaS 運営者(APP_ADMIN)のみ利用できます」を表示する。→ 画面の存在・構造・導線が非権限ユーザーに露出する。

評価

  • データ漏洩はない:実データは API 側で確実に遮断(/api/platform/metrics → 403)。admin.jsgetPlatformMetrics() 前に弾く。
  • ただしプロジェクト方針「参照不可は 404 で存在を漏らさない(NIST AC-4)」(CLAUDE.md / 設計規約)と照らすと、シェルを見せる現挙動は方針と不整合
  • 設計上の限界: 本構成は静的 SPA。admin.html / js/admin.js は CloudFront から誰でも取得可能で、ファイルの存在自体は隠せない。よって論点は「ログイン中の非 APP_ADMIN に admin UI を描画しない(casual disclosure 回避・多層防御)」。

改善案

  • admin.js(および admin-tenants.js / admin-tenant-detail.js)で、Auth.isAppAdmin() が false の場合はシェルを描画する前に自分のホーム(tasks.html)へ location.replace する、または 404 相当の汎用画面を出す。
  • 現状はシェル描画後に showError するため露出している。早期リダイレクトに変更する。
  • 併せて、サイドバー等で SaaS Admin 導線を非 APP_ADMIN に出していないかも確認(body.role-admin 制御の点検)。

優先度

セキュリティ多層防御 / UX。実データ漏洩はないため緊急ではないが、自プロジェクトの AC-4 方針に合わせる価値あり。native 書き込みバグ(#810)とは無関係。

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/frontendフロントエンド(HTML/CSS/JS/Bootstrap 5)変更area/security認証・認可 / NIST 準拠 / セキュリティ設定変更bugSomething isn't workingpriority/p2Medium。完了が望ましいが柔軟に判断可task-type:implコード実装が主体のタスク

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions