在过去的几年,对微服务架构或微服务的需求已经成倍增长。由于企业对可用性、可扩展性和弹性的需求,微服务架构通过将单体系统分解为更小但可管理的独立服务来解决单体系统带来的挑战。

最近,很多业务都是在作为独立单元开发的单体应用程序上运行的。而对单体应用程序轻微调整都会影响整个过程并降低了运行速度。

例如,对一小部分代码进行编辑和修改需要开发和部署一个全新版本的应用程序。而且,如果扩展单体应用程序的一些特定功能,则必须扩展整个应用程序。

在过去的几年,对微服务架构或微服务的需求已经成倍增长。由于企业对可用性、可扩展性和弹性的需求,微服务架构通过将单体系统分解为更小但可管理的独立服务来解决单体系统带来的挑战。

这些以不同编程语言编写的自治服务在它们自己的进程上运行。此外,这些可独立部署的服务可以使用其他数据存储介质,并使用与语言无关的协议进行通信,以有效地执行任务。

本文揭示了围绕微服务架构安全的一些误区,指出了其面临的安全挑战,并提供了解决方案。此外,还提供了构建基于微服务的应用程序的三大优秀安全实践。

微服务架构的好处

微服务架构为企业提供了许多好处。但是,只有正确完成从单体式应用程序到微服务架构的迁移,才能获得好处。其主要好处包括:

  • 与单体架构不同,微服务架构让企业可以专注于由团队管理的较小但自主的服务,而不是将每个团队的注意力转移到一个更广泛的应用程序上。

  • 企业可以使用自己选择的编程语言开发微服务,并按照自己的节奏独立发布和扩展。

  • 单体架构提供更快的上市时间和更好的可扩展性。

  • 它提供了更好的故障隔离,因为一个特定微服务中的错误可以在不影响架构其余部分的情况下得到控制。

  • DevOps和敏捷团队也受益于微服务。亚马逊、Netflix、eBay、PayPal和Twitter等科技巨头已经从单体架构迁移到微服务。

微服务架构规模在过去几年中一直呈上升趋势。2018年,全球微服务架构市场规模约为21亿美元。此外,预计到2026年将超过80亿美元,在预测期内复合年增长率(CAGR)将超过18%。

微服务架构安全面临的挑战

实现一个微服务架构存在一些挑战,该架构利用几个具有不同技术、编程语言、工具和框架的小型独立服务。

以下了解微服务架构中的一些主要安全挑战。

1.更大的攻击面

微服务架构是多个服务的集合体,这些服务开放不同的端口,并开放多个应用程序编程接口(API),从而增加了网络攻击面,这带来了严峻的安全挑战。因此,所有微服务都应该得到充分保护,以克服这种安全威胁。

2.隔离

在典型的微服务架构中,应用程序可以独立开发、测试、扩展、部署和维护。这意味着这些活动中的任何一个都不应影响应用程序中其他微服务的工作。

为了增强进程的安全性,需要在数据库级别实现隔离。换句话说,每个微服务必须拥有自己的数据副本,并且不应该让它访问应用程序中其他微服务的数据。而实现各层隔离使企业基于微服务的应用程序更加安全。

3.传统日志记录

基于微服务的应用程序通常具有无状态、分布式和独立的服务,这些服务是使用跨越地理边界的多种技术开发的。因此,在基于微服务的应用程序中,单体应用程序中相同的传统日志记录是无效的。与其相反,应用程序应该聚合日志,并跨多个平台和服务关联事件,以实现有效的日志记录。

4.DevOps团队的协作

通过独立开发、部署和管理服务来创建应用程序是有好处的,但是当它们在没有经过全面测试的情况下发布时,安全漏洞就会增加。基于微服务的应用程序虽然可以频繁地发布,但这种改进的敏捷性是以牺牲安全性为代价的。

为了应对微服务架构安全问题,DevOps团队之间的更密切协作对于企业至关重要。他们应该密切互动,对流程有很好的理解,并减轻安全威胁。此外,他们的协作必须在开发、安全和运营(DevSecOps)生态系统中进行,以防止未经授权访问应用程序中的任何资源。

5.容错

在一个或多个组件发生故障的情况下,应用程序仍然可以正常工作的能力称为容错。它通常是通过设置像断路器模式这样的后备机制来完成的。然而,在基于微服务的应用程序中实现容错是一项具有挑战性的工作。有时,其实现变得比单一应用程序更复杂、更具挑战性。

微服务架构拥有更多的服务并处理更多的请求。当大量服务通过网络进行通信时,就会增加复杂性。此外,微服务架构应该是容错的,这意味着它应该处理服务故障,因为频繁的服务故障会破坏整个应用程序的稳定性。

微服务架构中的三个安全实践

在了解微服务架构面临的安全挑战之外,以下了解一些安全实践。

1.纵深防御(DiD)策略

纵深防御策略可以为应用程序添加许多安全层,也可以用来保护基本服务。因此,网络攻击者成功利用微服务一个安全漏洞并不能保证能够利用另一个安全漏洞。换句话说,如果网络攻击者已经成功攻击了基于微服务的应用程序中的一层保护,那么破坏其他的应用程序安全层可能并不容易。

2.API网关

在典型的基于微服务的应用程序中,用户无法与微服务直接通信。API网关拥有通往各种微服务的单一入口点,而这种机制不允许用户直接访问和使用服务。

企业应将API网关置于防火墙后面,以便在网络攻击面添加一层保护。它还有助于保护在应用程序中使用的每个微服务。通常情况下,基于令牌的身份验证用于保护API网关。

3.API和数据安全

在典型的基于微服务的应用程序中,服务应该相互通信,并且应该在不影响应用程序性能的情况下保护数据。为此,应该正确地维护安全证书以及加密和保护传输中的数据。

应通过仅允许授权用户访问来保护API。企业还可以利用对资源的受限访问,这意味着只有在需要时才提供对资源的访问。

制定微服务安全策略

在典型的单体架构中,安全问题不那么重要,但在安全性是一个复杂挑战的微服务生态系统中,同样的方法不起作用。例如,保护企业数据和应用程序的标准防火墙不能满足基于微服务应用程序的安全需求。事实上,需要强大的防御机制来对抗安全威胁。

因此,企业应制定安全策略来应对这些挑战。应实施自动化以监控应用程序和潜在的安全威胁。除此之外,还应该部署一个集中的安全系统和工具来有效地监控基于微服务的应用程序。因此,建议企业采用频繁更新的自动代码扫描和安全代码保护以加强安全性。

原文作者:Securing Your Microservices Architecture: The Top 3 Best Practices,作者:Kashyap Vyas