GH GambleHub

テナントの分離と制限

テナントの分離と限界は、マルチテナント建築の基盤です。目的:あるテナントの行動が他のテナントのデータ、セキュリティ、SLOに影響を与えないように、リソースは公平かつ予測可能に配布されます。以下は、データレベルからコンピューティング計画、インシデント管理までのソリューションの実用的なマップです。

1)脅威モデルとターゲット

脅威

テナント間のデータ漏洩(論理/キャッシュ/ログ経由)。
「騒々しい隣人」:1つのクライアントのスパイクによるパフォーマンスの低下。
特権エスカレーション(アクセスポリシーのエラー)。
請求ドリフト(使用と料金の不一致)。
カスケードのフェイルセーフなシナリオ(1つのインシデントは多くのダウンタイムにつながります)。

目標

データと秘密の厳密な分離。
限界/クォータと公正な計画。
透明な監査、可視性、請求。
テナントごとのインシデントのローカライズと迅速なリカバリ。

2)絶縁レベル(エンドツーエンドモデル)

1.データ

'tenant_id'キーとインデックス、Row-Level Security (RLS)。
暗号化:KMS階層→テナントキー(KEK)→データキー(DEK)。
高い要件(Silo)を備えた個別のスキーム/DB、効率(Pool)のためのRLSを備えた一般的なクラスタ。
リテンションポリシーとテナントごとの「忘れる権利」、暗号シュレッディングキー。

2.Calculations(計算)

CPU/RAM/IOクォータ、ワーカープール/テナント、重み付けキュー。
GC/ヒープアイソレーション (JVM/ランタイムコンテナ/設定)、並列化制限。
テナントごとのオートスケーリング+バックプレッシャー。

3.ネットワーク

セグメンテーション:プライベートエンドポイント/VPC、 ACL by 'tenant_id'。
境界でのレート制限とテナントごとの接続キャップ。
計画/優先順位を考慮して、DDoS/botに対する保護。

4.オペレーションとプロセス

テナントの移行、バックアップ、DR、フィーチャーフラグ。
インシデント-「micro-blast-radius」: 'tenant_id'による融合。

3)アクセス制御およびテナントの文脈

AuthN: OIDC/SAML;トークンには'tenant_id'、 'org_id'、 'plan'、 'scopes'が含まれます。
AuthZ: RBAC/ABAC(プロジェクト、部門、地域の役割+属性)。
境界のコンテキスト:APIゲートウェイはテナントコンテキストを抽出して検証し、制限/クォータを補足し、トレイルに書き込みます。
「ダブルロック」の原則:+RLSサービス/データベースポリシーをチェックします。

4)データ: スキーム、キャッシュ、ログ

スキーム:
  • 共有スキーマ(行レベル):最大効率、厳密なRLSが必要です。
  • スキーマ単位:分離/操作性トレードオフ。
  • Per-DB/cluster (Silo): VIP/規制対象。

キャッシュ:キー接頭辞のテナント:{id}:……'、計画によるTTL、 cache-stampede保護(ロック/早期更新)。

ログ/メタデータ:PIIの完全な仮名化、'tenant_id'によるフィルタ、異なるテナントのログの「接着」禁止。

5)交通・業務の制限

基本的なメカニクス

Token Bucket:スムーズなバースト、パラメータ化'rate'/'burst'。
漏れやすいバケツ:安定化のスループット。
固定ウィンドウ/スライディングウィンドウ:タイムウィンドウのシンプル/正確なクォータ。
同時実行制限:同時リクエスト/ジャブのキャップ。

お申し込み先

国境(L7/APIゲートウェイ)-基本的な保護と「迅速な故障」。
コア(サービス/キュー)-2番目の回路と「公平な共有」。

ポリシー

テナント/プラン/エンドポイント/オペレーションの種類(公開API、重いエクスポート、管理アクション)。
優先順位認識:VIPは、仲裁でより多くの'バースト'と重量を取得します。
安全な撤退のためのIdempotency-keys。

サンプルプロファイル(コンセプト)

スターター:50 req/s、バースト100、2並行輸出。
ビジネス:200 req/sの破裂400の5つの輸出。
エンタープライズ/VIP: 1000 req/s、バースト2000、専用労働者。

6)クォータと公正な計画(公平性)

リソース・クォータ:ストレージ、オブジェクト、メッセージ/分、ジョブ/時間、キュー・サイズ。
Weighted Fair Queuing/赤字ラウンドロビン:共有労働者への「Weighted」アクセス。
テナント単位のワーカープール:騒々しい/重要な顧客のための堅い分離。
アドミッションコントロール:クォータが枯渇した場合の実行前の失敗/劣化。
Backoff+Jitter:指数関数的な遅延で、バーストが同期しないようにします。

7)テナントごとの可視性と請求

必要なタグは'tenant_id'、 'plan'、 'region'、 'endpoint'、 'status'です。
テナントあたりのSLI/SLO: p95/p99レイテンシ、エラー率、可用性、使用率、飽和。
使用指標:CPU操作/バイト/セカンドカウンタ→アグリゲーター→請求書。
請求idempotence:国境でのスナップショット、二重書き込みオフ/イベントの損失に対する保護。
セグメント内のダッシュボード:VIP/規制/新規テナント。

8)「テナントによる事件・劣化・DR」

'tenant_id'によって融合:残りに影響を与えることなく、特定のテナントの緊急シャットダウン/スロットリング。
Graceful Degradation:読み取り専用モード、サンドボックスキュー、遅延タスク。
テナントごとのRTO/RPO:各プランの回復と損失目標。

ドリル: 騒々しいテナントが切り取られ、DRが点検する規則的な「ゲームの日」

9)コンプライアンス(居住、プライバシー)

地域へのピン留めテナント;明確なクロスリージョンフロールール。
キー/データアクセス監査、管理者ログ。
テナントごとの保存とデータのエクスポートを管理します。

10)小型参照: それを一緒に置く方法

リクエストフロー

1.Edge (APIゲートウェイ):TLS→extract 'tenant_id'→token validation→apply rate/quotas→put trails。
2.政治エンジン:コンテキスト'tenant_id/plan/features'→ルートと制限に関する決定。
3.サービス:rights+labels 'tenant_id'→RLSの下でデータベースを操作する→prefixでキャッシュする。
4.使用法コレクション:操作/バイト→aggregator→billingのカウンタ。

データ

strategy (row-level/per-schema/per-DB)によるスキーマ/DB。
KMS:テナントキー、回転、削除時の暗号シュレッディング。

コンピューティング

重みのあるキュー、テナントあたりの労働者のプール、並行性によるキャップ。
テナント単位のメトリックによる自動スケーリング。

11)疑似政治(オリエンテーション用)

yaml limits:
starter:
req_per_sec: 50 burst: 100 concurrency: 20 exports_parallel: 2 business:
req_per_sec: 200 burst: 400 concurrency: 100 exports_parallel: 5 enterprise:
req_per_sec: 1000 burst: 2000 concurrency: 500 exports_parallel: 20

quotas:
objects_max: { starter: 1_000_000, business: 20_000_000, enterprise: 100_000_000 }
storage_gb: { starter: 100,   business: 1000,    enterprise: 10000 }

12)売り上げ前のチェックリスト

  • 真実の単一のソース'tenant_id';どこにでも投げられて記録される。
  • DBレベル+サービスチェック(ダブルロック)でRLS/ACLを有効にしました。
  • テナントごとの暗号化キー、暗号シュレッディング文書化。
  • 境界と内部の制限/クォータ;テストされたバーストと「バースト」。
  • フェアキューイングおよび/または専用のVIPワーカー。CAPSコンカレンシー。
  • テナントごとのSLOとアラート;セグメント別のダッシュボード。
  • Usage-collectionはidempotentです。課金ロールアップを確認しました。
  • DR/インシデントはテナントにローカライズされます。'tenant_id'で機能します。
  • 現金/ログはテナントによって分割されます。PIIはマスクをしました。
  • 移行/バックアップ/エクスポート手順はテナントベースです。

13)典型的なエラー

「サービス」ユーザーによって無効/バイパスされたRLS-漏洩のリスク。
単一のグローバルリミッター→「騒々しい隣人」とSLO違反。
プレフィックス→データ交差のない共有キャッシュ/キュー。
ピーク時に失われたログによる請求カウント。
テナントの融合の欠如-カスケードが落ちる。
問題のある'tenant_id'を停止することなく、移行が「1つで」スループしました。

14)クイック戦略の選択

規制/VIP:サイロデータ(DBごと)、専用労働者、厳格なクォータと居住。
Mass SaaS: Shared-schema+RLS、境界での強力な制限、内部でのフェアキュー。
負荷「騒々しい/脈動」:大規模な「バースト」+ハードコンカレンシーキャップ、バックプレッシャーと計画に従って優先順位。

結論

テナントの孤立と限界は境界と正義に関するものです。データのスタック、RLS、暗号化を通じて「tenant_id」をクリアし、国境やコア、公正なスケジューラ、オブザビリティ、インシデントのローカリゼーションを制限します。これにより、攻撃的なプラットフォームの成長でも、テナントごとにセキュリティ、予測可能な品質、透明性の高い請求が可能になります。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。