Skip to content

local/test 専用 security stub の fail-closed を機械保証する #46

Description

@koh110

背景

template には local development 用の認証 implementation が含まれる。

例:

  • client: localAuthProvider
  • API: localTokenVerifier

これらは production で利用できてはいけない security-sensitive stub であり、現在は APP_ENV=local/test のみ許可し、それ以外を拒否する fail-closed 実装になっている。

この性質を単なる implementation detail にすると、将来の refactor で accidentally fail-open になる可能性がある。

目的

「local/test 専用 implementation は production / unknown environment で必ず拒否する」を executable security contract にする。

実装案

local-only implementation に明示的な metadata / naming convention を持たせる。

例:

localAuthProvider
localTokenVerifier
mockMailer
fakePaymentProvider

各 implementation について environment matrix test を用意する。

APP_ENV=local       -> allowed
APP_ENV=test        -> allowed
APP_ENV=production  -> rejected
APP_ENV=undefined   -> rejected
APP_ENV=unknown     -> rejected

可能なら共通 helper へ fail-closed 判定を集約し、個別 implementation が独自判定を持たないようにする。

静的検査候補

  • local-only implementation の production entrypoint への直接 binding を warning / error
  • local-only file の利用箇所を allowlist 化
  • production Dockerfile / runtime config に APP_ENV=production を必須化
  • production 以外なら許可 のような fail-open 判定 pattern を禁止する

注意

実際の安全性は AST rule だけでなく environment matrix test で保証する。

security-sensitive rule なので「静的解析にこだわる」より「機械的に壊れたら CI が落ちる」ことを優先する。

Acceptance Criteria

  • local/test 専用 implementation の一覧を明示できる
  • local/test では利用できる
  • production では必ず拒否する
  • APP_ENV 未設定でも必ず拒否する
  • unknown APP_ENV でも必ず拒否する
  • client / API 双方の auth stub に contract test がある
  • 将来追加される local-only implementation に同じ policy を適用できる

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions