Skip to content

運用 ​

DB レコードを操作することでシステムの挙動を制御する設定項目です。

予約済みテナントコード ​

blocked_tenant_codes テーブルで管理します。登録されたコードはテナント作成時に使用不可となります。

初期データ(api・admin・www などのシステム予約語)はマイグレーション実行時に自動投入されます。

追加する場合は直接レコードを挿入します。

sql
INSERT INTO blocked_tenant_codes (code) VALUES ('myword');

登録時のプランの規則 ​

registration_plan_rules テーブルで管理します。運営画面の「申込・契約 > 登録時のプラン」から登録・編集します。

申込みフォーム(POST /api/public/tenants)から登録したテナントは、通常はトライアルのプランで登録します。規則に合ったテナントは、トライアルの代わりに規則のプランで登録します。

  • 有効な規則を priority の小さい順(同じなら作った順)に見て、最初に合った規則を使います。どれにも合わなければトライアルです。
  • 1つの規則の中では、値が入っている条件をすべて満たしたときだけ合います(空の条件は見ません)。条件が1つも無い規則は保存できません。
  • 規則のプランが有効(ACTIVE)でないときは、その規則を飛ばして次の規則を見ます。
  • トライアル以外のプランは、契約の変更(SubscriptionService::createSubscription())と同じく月末まで・自動更新で登録します。Senter にもそのプランで利用を登録します。
  • 規則で決まったときは、操作ログに TENANT_REGISTER_WITH_PLAN_RULE(metadata に規則とプラン)を残します。運営のログにだけ出ます。
  • 運営画面からのテナントの作成と、パートナー経由の申込みには使いません(どちらもプランを人が選ぶため)。
  • 規則を変えても、すでに登録したテナントのプランは変わりません。
カラム説明
name運営が見分けるための名前
plan_id規則に合ったときに付けるプラン
tenant_code_prefix条件: テナントコードの先頭(大文字と小文字は区別しない。保存時に小文字にそろえる)
partner_id条件: 紹介元のパートナー(申込みフォームの代理店契約コードで決まる tenants.partner_id)
priority評価する順(小さいものから)
statusACTIVE(有効)/ INACTIVE(停止中)

テナントコードだけの条件

テナントコードは申し込む人が自由に入力するため、tenant_code_prefix だけの規則には誰でも合わせられます。有利なプランに使う場合は、partner_id と組み合わせてください。

条件を増やすときは、列を足して RegistrationPlanRule::matches() に照合を足します。

テナント IP 制限 ​

tenant_allowed_ips テーブルで管理します。テナントごとに許可する IP アドレスを、1つのアドレスか CIDR 表記の範囲で登録できます(IPv4 と IPv6)。標準の機能で、組織の管理者が「組織の設定 → セキュリティ」で登録します(組織の API)。運営も管理画面から登録できます。

レコードが 1 件も存在しないテナントには制限がかかりません(全 IP 許可)。1 件以上登録すると、登録外の IP からのアクセスは 403 Forbidden(IP_RESTRICTED)になります。組織の画面は、拒んだ接続元を出して、管理者に伝えるよう案内します。

制限がかかるのは、tenant.restrict_ip を付けた経路です(Lase の組織の API と、組織へのログイン login-by-token・代理ログイン。アプリの組織の API にも付ける)。最初のログイン(組織を選ぶ前)と、MCP のエンドポイントにはかかりません(エージェントのトークンには、トークンごとの接続元の制限があります)。

運営の接続元(IP_RESTRICTION_ALLOWLIST)は、登録に関わらず常に通します。組織の管理者が締め出されないよう、組織の画面からは、今の接続元が許可に入らなくなる変更を保存できません。それでも入れなくなった組織は、運営が管理画面で登録を直します。

接続元は Request::ip() で判定します。アプリの前段のプロキシ(nginx・Cloudflare)が本当の接続元を渡し、アプリがそのプロキシだけを信頼する設定(TrustProxies)になっている必要があります。

カラム説明
tenant_id対象テナントの ID
cidr許可する IP または CIDR(例: 203.0.113.0/24、203.0.113.1)
reason登録理由(任意)

登録・削除時にキャッシュ(tenant:{code}:allowed_ips)が自動でクリアされます。