コンテンツにスキップ

テナントリソースクォータ管理 (Quota Limits)

マルチテナント環境において、特定テナントによる端末の大量登録や無秩序なルーティング設定は、プラットフォーム全体の帯域やデータベース負荷を圧迫するリスクがあります。

AegisMesh は、各テナントに対して 4大リソースクォータ(上限値) を設定し、超過時の登録をアトミックに遮断する Fail-Closed ガードレール機構 を実装しています。


4大クォータパラメータ

各テナントには、契約プランやリセラーのポリシーに応じて以下のクォータ上限が割り当てられます。

パラメータ名説明デフォルト上限超過時の影響
quota_max_peersテナント全体で登録可能な最大端末(ピア)数50新規端末の登録(Setup Key / SSO)を拒絶
quota_max_routes登録可能な最大サブルート(LAN共有・Exit Node)数100新規ルーティングピアの追加を拒絶
quota_max_setup_keys発行可能な有効セットアップキーの最大数20新規セットアップキーの生成をブロック
quota_max_users招待可能なIdP / ローカルユーザーの最大数20ユーザー招待・アカウント追加を拒絶

Fail-Closed 制御仕様

AegisMesh のクォータ制御は、リソース作成トランザクション内で厳格に検証されます。

flowchart TD
    Req["リソース作成リクエスト<br>(端末登録 / キー発行 / ルート追加)"] --> Lock["テナント行アトミックロック"]
    Lock --> Check{"現在使用数 < クォータ上限?"}
    Check -- Yes --> Save["リソース作成完了 (200 OK)"]
    Check -- No (上限到達) --> Reject["即座にリクエスト拒絶<br>(429 Too Many Requests)"]
    Reject --> Audit["監査ログ記録<br>quota.exceeded (コード: 211)"]
  1. アトミック検証: 並列リクエストによる上限すり抜けを防止するため、データベーストランザクション内で現在数を厳密にカウントします。
  2. 即時遮断 (Fail-Closed): 上限に達している場合、API は即座に 429 Too Many Requests または PermissionDenied を返却し、リソースの作成をブロックします。
  3. 監査イベント連動: クォータ超過試行が発生した際、管理コンソールの監査ログに quota.exceeded(イベントコード: 211) が自動記録され、管理者に通知されます。

ダッシュボード UI での確認

管理コンソールの 「Settings」>「Quota」 タブを開くと、テナントの現在のリソース消費率がリアルタイムのゲージバーで表示されます。

  • 安全 (緑色): 消費率 0% 〜 79%
  • 注意 (黄色): 消費率 80% 〜 99%(警告バナー表示)
  • 上限到達 (赤色): 消費率 100%(新規追加ボタンが自動的に無効化)

クォータ管理 API

自テナントのクォータ状況確認

GET /api/account/quota
Authorization: Bearer <Token>

レスポンス例

{
"peers": {
"current": 42,
"limit": 50,
"utilization": 84.0
},
"routes": {
"current": 12,
"limit": 100,
"utilization": 12.0
},
"setup_keys": {
"current": 8,
"limit": 20,
"utilization": 40.0
},
"users": {
"current": 18,
"limit": 20,
"utilization": 90.0
}
}

管理者によるクォータ上限変更 (SuperAdmin / ResaleAdmin)

PUT /api/admin/tenants/{id}/quota
Content-Type: application/json
{
"quota_max_peers": 100,
"quota_max_routes": 200,
"quota_max_setup_keys": 50,
"quota_max_users": 50
}