Skip to content

Tenant routing and data isolation with Durable Objects #71

@liplus-lin-lay

Description

@liplus-lin-lay

目的

マルチテナント環境でユーザーごとのデータ分離とルーティングを Durable Objects で実現する。

前提

  • 現在はシングルテナント: 1つの GITHUB_WEBHOOK_SECRET で全 webhook を検証、単一の WebhookStore DO にイベント格納
  • Durable Objects は構造的にインスタンス間のデータアクセスが不可能(強いテナント分離)
  • 現在の Worker + DO + local-mcp ブリッジの構成をそのまま拡張可能

設計メモ

テナント識別

  • GitHub App の場合: webhook ペイロードの installation.id でテナント識別
  • installation.iduserId のマッピングテーブルが必要

DO によるデータ分離

  • idFromName(userId) でテナントごとの DO インスタンスを生成
  • 各 DO は完全に独立したメモリとストレージを持つ
  • コードにバグがあっても、テナント間のデータ漏洩は構造的に発生しない

ルーティングフロー

  1. Worker(入口)で webhook 受信
  2. installation.id からテナント特定
  3. 正しいテナントの DO にルーティング
  4. 認証チェックはルーティング前に実行

local-mcp ブリッジの変更

  • テナントトークン付きで Worker に接続する仕組みを追加
  • ユーザーは自分のテナントの DO のみアクセス可能

refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    memoissue started as notespeclanguage or system specification

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions