前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NATS 2.0版本带来了先进的安全性、分散的管理、多租户和全球部署

NATS 2.0版本带来了先进的安全性、分散的管理、多租户和全球部署

作者头像
CNCF
发布2019-12-04 16:03:33
2.5K0
发布2019-12-04 16:03:33
举报
文章被收录于专栏:CNCFCNCF

NATS 2.0是自代码发布以来最大的特性发布。NATS 2.0允许将NATS看作为一种共享实用工具,通过分布式安全、多租户、更大的网络和数据的安全共享大规模地解决问题。

基本原理

创建NATS 2.0是为了解决大规模分布式计算中的问题。

在坚持政策和遵从性的同时,将端到端(或端到端边缘)的身份管理与数据共享结合起来是非常困难的。当前的分布式系统随着规模的扩大,操作复杂性显著增加。围绕服务发现、连接、容量扩展以及应用程序的加载和更新出现了一些问题。灾难恢复很困难,尤其是当系统已经发展到由技术而非业务需求定义的孤岛中运营时。随着复杂性的增加,系统在时间和金钱方面的运行成本变得昂贵。它们变得脆弱,难以部署服务和应用程序,阻碍创新,增加了实现价值的时间和总拥有成本。

我们决定:

  • 降低总体拥有成本:用户希望降低其分布式系统的TCO(total cost of ownership,总体拥有成本)。这是通过一种易于使用的技术来解决,该技术可以在全球范围内运行,配置简单,具有弹性和云原生架构。
  • 减少实现价值的时间:随着系统规模的扩大,实现价值的时间会增加。由于接触复杂而脆弱的系统时存在风险,操作会抵制更改。提供隔离上下文可以帮助缓解这种情况。
  • 支持可管理的大规模部署:没有由软件定义的数据孤岛,而是通过软件轻松管理,以提供准确的业务需求。我们希望提供易于配置的灾难恢复。
  • 分散化安全性:提供支持一种端到端技术的安全性,在这种技术中,组织可以进行自我管理,从而更容易支持大量端点。

为了实现这一点,我们添加了一些对现有客户端透明的新特性,并且具有100%的向后客户端兼容性。

账户

帐户(Account)是安全隔离的通信上下文,允许NATS部署多租户。帐户允许用户将技术从业务驱动用例中分离出来,数据孤岛是设计出来而不是来自软件限制。当客户端连接时,它指定一个帐户,或者默认使用全局帐户进行身份验证。

会有一些服务需要共享帐户外的数据。数据可以在具有安全服务和流的帐户之间安全地共享。只有帐户所有者之间的相互协议才允许数据流,导入帐户对自己的主题空间具有完全的控制。

这意味着在帐户中可以设置限制,并且可以使用主题而不用担心与其他组或组织发生冲突。开发团队在不影响系统其他部分的情况下选择任何主题,并打开帐户,只导出或导入他们需要的服务和流。

帐户是简单、安全、和成本有效的。只需要管理一个NATS部署,但是组织和开发团队有更大的自治权进行自我管理,通过更快、更敏捷的开发实践,从而减少价值实现的时间。

服务和流

服务和流是在帐户之间共享消息的机制。

将服务看作帐户中的RPC端点。在该帐户后面可能有许多协同工作的微服务来处理请求,但是从帐户外部只公开了一个主题。

共享端点的服务定义:

  • 导出服务以允许其他帐户导入
  • 导入一个服务以允许将请求安全地无缝地发送到另一个帐户

用例包括大多数应用程序 - 任何接受请求并返回响应的应用程序。

定义允许账户之间的连续数据流:

  • 导出一条流以允许出口
  • 导入一个流以允许进入

用例包括可观察性、度量和数据分析。读取数据流的任何应用程序或端点。

请注意,服务和流在零客户端配置或API更改的情况下运行。服务甚至可以在账户之间移动,对终端客户完全透明。

系统账户

系统帐户在已建立的主题模式下发布系统消息。这些是可能对操作员有用的内部NATS系统消息。

服务器发起的事件和数据包括:

  • 客户端连接事件
  • 账户连接状态
  • 身份验证错误
  • 叶节点连接事件
  • 服务器数据总结

具适当权限的工具及客户端可要求:

  • 服务统计数据
  • 服务器发现和度量

帐户服务器还将在帐户更改时发布消息。

使用这些信息和系统元数据,你可以构建有用的监视和异常检测工具。

全球部署

NATS 2.0支持全局部署,允许全局拓扑对广域网进行优化,同时扩展到边缘或设备。

自愈

自愈功能是NATS 1.X版本的一部分,我们确保它们继续在全球部署中工作。这些包括:

  • 客户端和服务器自动重新连接
  • 自动发现服务器交换彼此和客户端拓扑结构的变化,实时进行零配置更改和零停机,同时对客户端完全透明。客户端可以故障转移到它们最初没有配置的服务器。
  • NATS服务器集群可以动态调整到新的或已删除的服务器,从而实现无缝滚动升级和向上或向下伸缩。

超集群

从概念上讲,超集群是NATS集群的集群。创建超集群来部署一个真正的全球NATS网络。超集群使用一种新颖的基于样条(spline)的技术,采用独特的拓扑方法,保持单跳语义,并通过带兴趣的图剪枝的乐观发送优化广域网流量。超集群为地理分布的队列订阅者提供透明、智能的支持。

灾难恢复

超集群天生支持灾难恢复。对于地理分布的队列订阅者,首选本地客户端,然后使用RTT查找超集群中包含匹配队列订阅者的最低延迟的NATS集群。

这是什么意思?

假设你在美国东海岸(US-EAST)有一组负载平衡服务,在欧洲(EU-WEST)有另一组负载平衡服务,以及由US-EAST的NATS集群与EU-WEST的NATS集群连接而成的超集群。美国的客户端将连接到US-EAST,而连接到该集群的服务将为这些客户端提供服务。欧洲的客户将自动使用连接到EU-WEST的服务。如果US-EAST的服务断开连接,US-EAST中的客户端将开始使用EU-WEST的服务。

一旦美国东部的服务重新连接到US-EAST,这些服务将立即开始为美国东部的客户提供服务,因为它们是NATS集群的本地客户。这是自动的,对客户端完全透明。在NATS服务器中没有额外的配置。

这是零配置灾难恢复

叶节点

叶子节点是运行在特殊配置中的NATS服务器,允许hub和spoke拓扑扩展超集群。

叶节点还可以桥接单独的安全域,像物联网、移动、网络。它们是边缘计算、物联网中心或需要连接到全球NATS部署的数据中心的理想选择。使用环回接口与物理VM或容器安全性进行通信的本地应用程序也可以利用叶节点。

叶节点:

  • 透明且安全地绑定到远程NATS帐户
  • 安全地将特定的本地数据连接到更广泛的NATS部署
  • 对于客户端是100%透明,保持简单、轻量级和易于开发
  • 在全局使用新的NATS安全特性时,允许使用本地安全方案
  • 可以在本地NATS部署和外部NATS集群或超集群之间创建DMZ

分散化安全性

操作员、帐户和用户

NATS 2.0安全性包括在NATS部署中定义操作员(Operator)、帐户(Account)和用户(用户)。

  • 操作员为系统提供信任的根,可以代表公司或企业
    • 为帐户管理员创建帐户。帐户在NATS部署中表示具有安全上下文的组织、业务单元或服务,例如IT系统监视组、一组微服务或一个区域物联网部署。帐户创建可能由一个中央组管理。
  • 帐户定义限制并可以安全地公开服务和流。
    • 帐户管理员创建具有权限的用户
  • 用户具有特定的凭证和权限。

信任链

PKI(NKeys编码Ed25519)和已签名的JWT创建了操作员、帐户和用户的层次结构,创建了可伸缩和灵活的分布式安全机制。

  • 操作员由自签名JWT表示,这是服务器中唯一需要配置的东西。这个JWT通常由一个保持离线的主键签名。JWT将包含有效的签名密钥,可以通过主服务器更新该JWT来撤销这些密钥。
    • 操作员将使用各种签名密钥签署帐户的JWT。
    • 帐户使用各种签名密钥为用户的JWT签名。
  • 客户端或叶节点在连接时提供用户凭证和已签名的nonce。
    • 服务器使用解析器获取JWT并验证客户端信任链。

这允许对安全的多租户NATS系统快速更改权限、身份验证和限制。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NAT 网关
NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档