DZone>Web Dev Zone>用API网关和服务网构建零信任
用API网关和服务网格构建零信任
在这篇文章中,我们将仔细研究Kong Gateway和Kuma服务网格如何融入零信任架构的安全设计。
CORE -
21年8月30日 - Web Dev Zone -分析
喜欢 (1)
评论
保存
鸣叫
22次浏览
加入DZone社区,获得完整的会员体验。
构建一个用户会喜欢的出色的应用程序包括许多不同的决定,从UI设计和调色板到功能和特征集。编写有效的代码是一个创造性的过程,但它只是整个开发过程中的一个部分。你的应用程序也需要安全--不仅仅是为了你的用户,也是为了你的业务的完整性。在设计你的软件架构时,典型的安全措施包括。
- 安全和经过良好测试的认证和授权方案
- 通过防火墙和端口监控来控制网络流量的能力
- 服务和资源隔离,使一个服务器不能访问另一个服务器
- 通过SSL/HTTPS保证服务之间的连接安全
这些做法共同构成了一种被称为零信任的哲学。零信任架构非常注重锁定你的应用程序,防止任何和所有的访问。默认情况下,服务之间是不能互相访问的。然后,随着时间的推移,根据需要,服务被授予访问权,以便彼此之间进行通信。简而言之,服务只在必要时接受外部连接。由于你的应用基础设施的网络默认是 "封闭 "的,这就减少了恶意访问和意外事件。
在这篇文章中,我们将仔细研究Kong Gateway和Kuma服务网是如何融入这种设计的。
为什么你应该考虑零信任设计
零信任并不能使你的基础设施不受攻击,但它确实减少了外来者的攻击媒介。无论你是一个大规模的企业公司还是一个小型的创业公司,安全方面的考虑都是一样的。你希望你的用户数据一上线就能得到安全保障。
零信任架构要求开发人员考虑服务如何互动。例如,假设服务A处理获取数据,服务B处理请求数据。服务A需要有一个特定的端点和端口,并可与服务B(而且只有服务B)进行通信。零信任计划似乎会阻碍生产力,如果你正在添加一个新的服务,或者不熟悉授予访问权所需的DevOps,那就更是如此。
然而,无论采用这种方法有多大的麻烦,其优点都远远超过了规划所花费的时间。安全事件是不可能被撤销的,而事件的发生会导致用户信心的降低和你的团队在处理问题上的压力。我们经常听到这样的故事:黑客获得了对一个过时的、未被管理的服务的访问,达到了生产系统,或者错误地配置了数据库供公众访问。
为零信任架构配置Kong和Kuma
如果你把你的应用程序配置为一组微服务,你可能会觉得在采用与零信任理念一致的网络和策略设置方面有点不知所措。为了开发一套一致的策略,你会想利用像Kuma这样的服务网。服务网是一个控制不同服务如何共享数据的系统。它负责处理网络流量、网络策略和你的微服务的可观察性。
为了与外部世界(如你的用户)进行通信,你要设置一个API网关,如Kong Gateway。Kong作为一个前端服务提供者,可以访问你所有的内部服务。Kong将向一个端点发出的HTTP请求路由到一个特定的服务。
Kong和Kuma支持的一些策略和功能包括以下内容。
全流量加密
你可能知道HTTPS有多重要,以及它是确保流量不受外界干扰的一个重要步骤。通常情况下,你会通过SSL证书进行设置。这是伟大的第一步,但也有很多其他配置可以带来更多的保护。
例如,通过几行YAML,Kong可以强制所有HTTP流量被加密为HTTPS。这样做是很重要的,因为它可以保护用户在不经意间发出不安全的请求。此外,SSL证书需要更新并保持最新;证书的平均有效期从90天到一年不等。Kong还配备了一个证书管理器,它将自动更新证书,使其永不过期。为了更进一步,Kong还支持加密出境的TLS/TCP流量。这些协议存在于著名的HTTP/S系统之外,负责处理电子邮件、文件传输、SSH等。
Kuma则支持Mutual TLS(mTLS),这是一种通过共享私钥验证服务有效性的策略。mTLS用于确保用户、设备和服务器的合法身份。Kuma关于确保与Kuma的服务通信安全的文档提供了关于mTLS和其他安全策略的更多细节。
可观察性。对流量进行记录、监控和报告
可观察性是一个重要的实践。跟踪和可视化你的应用程序的行为可以帮助你更好地了解你的应用程序在生产中的表现。在零信任的背景下,可观察性通常被认为是服务和网络的基础。至少,你需要确保你正在收集流量日志来验证和测试你对网络安全的假设。你还需要确保你收集的数据被安全地储存起来,就像任何其他关键信息一样。
为了帮助解决这个问题,Kong有几个支持分析和监控的插件。其中许多都有自己的API端点,所以你可以潜在地将其行为自动化。
更具体地说,Kuma提供了一个流量日志策略。这个策略允许你定义如何收集日志,并允许将不同的流量数据来源路由到不同的目的地。你可以创建一个统一的数据采集系统,它仍然足够灵活,以适应任何差异。例如,你可能希望你的内部应用日志被聚集在一些长期的归档数据库中,而你的面向用户的外部服务日志被发送到更容易访问的地方。
零信任架构并不是要求对安全解决方案采取 "一刀切 "的做法。相反,它从简单的声明开始。例如,"所有的流量都应该被捕获、存储,并且能够被查询"。然后,它实施满足这些需求的解决方案。
服务隔离
将服务相互隔离,对于确保一台服务器上的安全问题不影响另一台服务器至关重要。你可能已经有了某种程度的隔离,即使你称之为冗余。如果一个服务发生故障,无法处理请求,你应该有一个计划,将工作排队或负载平衡到另一个健康的服务。零信任架构中的服务隔离并不是完全相同的概念。但是,重要的启示是,一台机器上的安全事故不应该让你的网络上的任何其他机器得到访问。把它想成是流感。你要隔离受影响的服务,以减少传播。
Kong的Ingress控制器提供细化的流量管理。它建立在Kubernetes自己的Ingress策略之上,并提供了大量的语法糖和自动化。它几乎不需要任何额外的配置。同样地,Kuma提供了流量许可策略,以定义允许的流量。你可以把它看成是一个强化的防火墙。你可以限制来自特定服务的流量来源(基于其名称,而不是IP地址或端口)。你还可以将请求路由到特定的终端目的地。任何未知的来源或目的地都是不允许的。
获得更多信息
构建零信任架构不仅仅是为了保护自己,这也是一个全球性的问题。例如,在美国,网络安全任务是最近的一项行政命令,主张加强基础设施保护,防止黑客和其他未经授权的访问。这表明,零信任设计的理念远远超出了技术范围,有更广泛的关注。
如果你想尝试Kong和Kuma,他们有一个快速入门指南。关于零信任架构的更多信息,请查看Kong最近举办的虚拟活动:Destination:Zero-Trust。这些会议都在网上,方便你观看。
你可能还有兴趣了解Kong和Kuma如何通过他们新的ZeroLB架构模式帮助你去除复杂和昂贵的负载均衡器。
主题。
零信任、 Kong、 架构、 软件架构、 api网关、 服务网、 安全、 devsecops、 入口、入口 控制器
DZone贡献者所表达的观点属于他们自己。
在DZone上很受欢迎
评论