GH GambleHub

Tenant隔离和限制

Tenant隔离和极限是多特南特体系结构的基础。目的:确保一个租户的行动永远不会影响另一个租户的数据、安全和SLO,并公平和可预测地分配资源。下面-从数据级别到计算计划和事件管理的实用解决方桉图。

1)威胁模式和目标

三.威胁

租户之间的数据泄漏(逻辑/缓存/通过日志)。
"Noisy neighbor":由于单个客户的激增而导致性能下降。
特权升级(访问策略错误)。
计费漂移(使用和权责发生不匹配)。
级联容错场景(一个事件导致许多人处于市中心)。

目标

严格隔离数据和秘密。
限额/配额和公平规划。
透明审计,可观察性和计费。
事件本地化和快速恢复。

2)隔离级别(端到端模型)

1.数据

密钥和索引中的"tenant_id",行级安全(RLS)。
加密:KMS层次结构→租户密钥(KEK)→数据密钥(DEK)。
高要求(Silo)分离电路/DB,通用集群c RLS用于效率(Pool)。
重生策略和"遗忘权",按键加密。

2.计算

CPU/RAM/IO配额,每个特南特的worker池,"加权"队列。
GC/heap隔离(JVM/Runtime容器/设置),并行主义限制。
Per tenant autoscaling+backpressure。

3.网络

分段:私人endpoints/VPC,通过"tenant_id" ACL。
边界上的限额和按限额连接帽。
防护DDoS/机器人,并考虑计划/优先级。

4.操作和流程

Poarendator迁移,becaps,DR,feature-flags。
事件是"微爆炸半径":通过"tenant_id"融合。

3)访问控制和租户上下文

AuthN: OIDC/SAML;令牌带有"tenant_id","org_id","plan","scopes"。
AuthZ:RBAC/ABAC(角色+项目,部门,区域属性)。
边界上下文:API网关检索和验证tenant上下文,补充限制/配额,写入预告片。
"双锁"原则:检查服务+RLS/DB策略。

4)数据: 电路,缓存,logi

方案是:
  • 共享计划(row-level):最高效率,严格的RLS是强制性的。
  • 按计划:孤立/可操作性权衡。
  • Per-DB/cluster (Silo):用于VIP/可调。

缓存:密钥前缀'tenant: {id}:',TTL按计划,cache-stampede (lock/early refresh)保护。

徽标/元数据:完整的PII别名,"tenant_id"过滤器,禁止不同租户的徽标"拼写"。

5)限制流量和运营

基本力学

Token Bucket:平滑的爆发,"rate"/"burst"参数化。
Leaky Bucket:通过稳定。
固定窗口/滑动窗口:时间窗口上的简单/准确配额。
Concurrency极限:同时查询/joba的caps。

在哪里应用

在边界(L7/API网关)-基本保护和"快速故障"。
在核心(服务/队列)-用于第二轮和"公平共享"。

策略

根据tenant/plan/endpoint/操作类型(公共API,重型出口,管理操作)。
Priority-aware:VIP在仲裁中获得更大的"爆破"和重量。
Idempotency-keys用于安全后退。

轮廓示例(概念)

Starter: 50 req/s, burst 100,2并行出口。
商业:200 req/s, burst 400,5出口。
Enterprise/VIP: 1000 req/s, burst 2000,专用店员。

6)配额和公平规划(公平)

资源配额:存储、对象、消息/分钟、任务/小时、队列大小。
Weighted Fair Queuing/Deficit Round Robin:"加权"访问共享窃贼。
超常工人池:对嘈杂/关键客户进行硬隔离。
管理控制:在配额用尽之前发生故障/降级。
Backoff+jitter:指数延迟,以免同步爆发。

7)可观察性和按帐单

强制性标签:"tenant_id"、"plan"、"region"、"endpoint"、"status"。

SLI/SLO per tenant: p95/p99 latency, error rate, availability, utilization, saturation.

使用指标:操作/字节/CPU秒计数器→ →发票聚合器。
计费的相等性:边境的狙击,防止双重注销/损失事件。
Dashbords细分:VIP/监管/新租户。

8)事件,降级和DR"按租户"

通过"tenant_id"进行融合:紧急关闭/转弯特定租户,而不会影响其他租户。
Graceful Degradation:只读模式、"沙箱"队列、延迟任务。
RTO/RPO per tenant:每个计划的恢复和损失目标。
演习:定期的"游戏日",关闭嘈杂的租户并检查DR。

9)合规性(居住、隐私)

Pinning tenant到该地区;跨区域流动的明确规则。
对密钥/数据访问进行审核,记录管理操作。
转发管理和数据导出per tenant。

10)迷你参考: 如何拼凑在一起

请求流

1.Edge (API-gatew):TLS →检索"tenant_id" →令牌验证→应用rate/quotas →设置预告片。
2.Policy引擎:"tenant_id/plan/features"上下文→路线和限制的决定。
3.服务:检查权限+标签"tenant_id" →使用RLS下的DB →前缀缓存。
4.使用收集:操作/字节计数器→聚合器→计费。

数据

策略/DB(row-level/per-schema/per-DB)。

KMS: 按键到租户,轮换,crypto-shredding当删除.

计算

重量队列,per tenant的worker池,concurrency的caps。
根据per tenant度量进行自动计算。

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。
  • per tenant加密密钥,已记录轮换/删除(crypto-shredding)。
  • 边界内和边界内的限额/配额;测试了尖峰和"burst"。
  • Fair queuing和/或VIP专用培训师;caps на concurrency.
  • Per Tenant SLO和Alerts;dashbords逐段。
  • Usage收集是偶数的;已验证计费。
  • DR/事件将本地化为租户;通过"tenant_id"进行融合。
  • Cash/Logs按租户划分;PII被掩盖。
  • 迁移/备份/出口程序-选择性程序。

13)典型错误

RLS被"服务"用户禁用/绕过-泄漏风险。
单一的全球限制→"噪音邻居"和违反SLO。
共享缓存/队列无前缀→数据交叉。
Billing根据在高峰时丢失的日志计算。
缺乏先行融合是级联下降。
"一举"迁移而无法阻止问题的"tenant_id"。

14)快速选择策略

可调节/VIP: Silo数据(per-DB)、专用用户、严格的配额和居住。
大型SaaS:共享计划+RLS,边界的强限制,内部的公平测验。
负载"嘈杂/脉动":大型"爆破"+强硬的concurrency-caps,后压和计划优先级。

结论

Tenant的孤立和限制是关于边界和正义的。通过堆栈、RLS和数据加密、边界和核心的限制和配额、公平的计划者、可观察性和事件本地化,所有这些都为每个租户提供了安全性、可预测的质量和透明的计费,即使平台有了积极的增长。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。