0

如何在云计算中实现多租户 ?

 2 years ago
source link: https://www.jdon.com/61906
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何在云计算中实现多租户 ?
什么是多租户? 多租户允许服务的每个部分(即每个微服务)迎合多个客户,而无需为每个客户部署单独的实例。
为了让 SaaS 解决方案能够以经济的方式扩展、满足客户需求并具有弹性(即云资源的成本效益),它必须支持多租户。
多租户架构提供了许多重要且通常必不可少的功能:

  • 允许应用程序同时为多个客户提供服务,同时共享底层基础设施和服务
  • 安全合规的访问分离
  • 负载均衡和扩展

多租户的两层
归根结底,多租户一旦理解就很容易,它基本上只需要两件事:应用程序级别的访问控制和管理数据模式。
让我们把它分解成两个平面:

  • 数据平面是关于您如何传输、存储和管理孤立的数据(即底层基础设施如何避免混淆不同租户的数据)。数据平面的多租户通常作为数据层上的分区实现——例如,数据存储模式(如何将其保存在数据库中)和主题(例如、Kafka 主题)、标签、域、套接字和/或端口,用于传输中的数据。
v2-0cbbb6354556a396416afbc5c37acf17_720w.jpg?source=d16d100b



具有简单的基于列的租户分离的数据库表示例

  • 应用程序平面是关于您如何在逻辑层中接收上下文和访问,即为不同的租户使用相同的代码。授权是应用程序平面内实现多租户的组件。

实现多租户
授权层是从单租户应用程序安全升级到多租户应用程序的最快、最可靠的方法。此外,授权层可以通过跨所有相关服务应用策略来实现分离,而无需更改服务本身。
选择正确的策略模型可以进一步简化这种过渡,例如 RBAC + Tenancy、ReBAC + Hierarchy(租户成为根级关系)或普通 ABAC(以租户作为属性)等经典模型。
好处是我们不需要自己实现多租户授权,而是可以享受现成的开源工具和服务。

使用 OPA + OPAL(开源)实现多租户
开源是开始实施多租户授权层的绝佳选择。虽然有多种选择,但开放策略代理 (OPA) 是最有前途的。 OPA 充当授权微服务,我们可以将其添加到我们的应用程序中,并使用其专有的Rego 语言编写的规则来强制访问。
OPA 与 OPAL(开放策略管理层)相结合,使我们能够大规模地管理我们的授权层,使用 Pub/Sub 主题使我们的代理与策略(Rego 代码)和数据(JSON 文档)保持同步。例如,主题可以是我们的租户名称或 ID,允许我们将代理与每个租户的更改同步。

总结一下——
多租户允许我们的应用程序迎合多个客户,而无需为每个客户部署单独的实例。Gist 中的多租户实施包括两个层面:数据和应用程序。实现多租户的最佳方法之一是创建一个授权层,该层可以实现分离,而无需更改服务本身。尽管您可以构建自己的授权层,但也有一些开源选项(例如 OPA + OPAL)允许您在应用程序中实现一个 - 将关键转变为多租户更容易获得。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK