安全区使你的应用程序和它们的数据免受坏人的侵害,并能帮助限制安全漏洞的影响
保持你的应用程序的安全性对于一个成功的企业至关重要。无论你使用的是云原生应用架构还是企业内部系统,或者是介于两者之间的任何系统,人们普遍认为将你的基础设施分割成安全区是一种最佳做法。这些区域提供了安全隔离,使你的应用程序和他们的数据不受外界坏人的影响。一个区域的安全漏洞可以被限制在只影响该区域的资源。
正确的做法是,这种基于区域的隔离过程可以将一个可能对你的应用程序完整性产生巨大影响的安全漏洞,变成一个小得多的问题,也许是一个影响最小的微不足道的漏洞。
了解安全区域
虽然有许多不同的方法来构建你的安全区域,但一个常见的模型是使用三个区域。这三个区域在公共互联网(公共区域)和你的内部服务和数据存储(私有区域)之间提供隔离,在两者之间插入一个隔离层(DMZ)。图1显示了它们是如何一起工作的。
图1.隔离区中的服务。
用户通过访问公共区的服务,从公共互联网上与你的应用程序进行交互。公共区是暴露的,并与互联网相连。这个区域的服务直接暴露在互联网上,可以直接从互联网上访问。这些服务运行在通过各种防火墙保护的服务器上,但以其他方式直接接收来自外部互联网上用户的流量。
这些面向公众的服务尽可能少做工作,但它们更重要的任务之一是规范和检查从外部互联网收到的数据,以确保其有效和适当。这些服务应该过滤拒绝服务(DoS)攻击、不良行为者的渗透和无效的终端用户输入。
应用程序的大部分存在于私人区域。这个区域是存储应用程序数据的地方,也是访问和处理数据的服务的地方,它是你的应用程序的大部分后端存在。事实上,尽可能多的应用程序应该在这个区域。这个区域是离公共互联网最远的地方。在这个区域没有面向公众的服务器。该区尽可能地与公共互联网隔离。
为了保证私有区的安全,没有人可以直接访问这个区的服务。甚至应用程序的公共区域的服务也不能访问私有区域的服务。相反,公共区域的服务通过第三个区域,即DMZ来访问私有区域。DMZ,或称非军事区,是一个中介区,在公共区和私有区之间提供一定程度的隔离和额外的安全,进一步保护私有区中的大部分应用程序。
这种三区模式的目的是使 "野生原始互联网 "远离你的应用程序的敏感部分。两个隔离区,即公共区和DMZ,在公共互联网和大部分后端服务之间提供了一个保护层。
这些区域通过使用单独的、私有的、有特定的网络和应用级安全防火墙连接的网络段而相互隔离。虽然流量通常在前端的公共区域内自由流动,但它在后端的私有区域内受到限制,因此只有那些被设计为相互交谈的服务可以进行通信。后端服务之间不允许有不必要的通信。所有这些限制都是为了限制爆炸半径,或攻击的影响范围。如果你的系统的一部分被破坏,这些保护措施将使攻击者难以深入到你的应用程序。你的敏感数据,存储在私人区域的深处,被许多层的保护与任何坏的行为者分开。
标准的云安全控制
在云中,亚马逊网络服务(AWS)、微软Azure和谷歌云都提供标准的安全机制,帮助构建和管理这些区域。例如,AWS提供特定的工具和服务,协助创建这些安全区,并提供它们之间所需的隔离。
- 亚马逊VPCs:VPCs,即虚拟私有云,提供隔离的IP地址范围和路由规则。每个安全区都可以作为一个单独的VPC来创建。然后,创建特定的路由规则来控制VPC之间的流量。通过使每个区域成为独立的VPC,你可以很容易地创建区域并保持它们的隔离。这种模式使每个区域内的流量保持在该区域的本地。预定从一个区的服务转移到另一个区的服务的流量必须经过自然的 "流量选择 "点,这些点限制了可以流动的流量的类型。这些网络级防火墙是保持你的安全区隔离的第一道防线。
- 安全组:安全组提供了服务器级别的防火墙,控制流向单个实例的流量。它们通常连接到你分配的每个服务器实例,以及其他云组件实例,如数据库。安全组可用于防止对任何特定组件的未经授权的访问。例如,安全组可以确保到达一个过渡服务的服务器的流量必须来自一组特定的前端服务,而不可能来自互联网上的任何其他服务器。安全组提供了坚实的、服务器级别的安全,但确实需要努力确保它们被配置为只允许适当的流量进入特定实例。因此,它们应该与VPC一起使用,而不是取代VPC,以创建你的隔离区。
- 网络ACL:这些提供网络级的访问控制。它们防止不需要的流量在给定的VPC内的任何地方流向单个服务器和服务。网络ACL是无状态的,这意味着它们管理低级别的IP流量,而不是具体的点对点通信通道。因此,它们为你的安全区提供了一个广泛的保护,而安全组则提供具体的、详细的保护。例如,网络ACL可以用来防止任何人试图直接登录到后端服务,禁止该区域的所有SSH流量。
每个安全区通常设置不同的安全规则。例如,在公共区域,允许这个不太安全的区域内的服务以非常开放的方式进行通信可能是合理的。然而,在私有区中,服务之间的通信可能受到严格限制。当然,根据你的应用,你对每个区域的具体安全要求可能有很大的不同。
无论你如何设置你的安全区,它们都提供了一个坚实的最佳实践,以提高你的应用程序的安全性,并保持你的数据安全和可靠。安全区应该被认为是你维护应用程序安全的重要工具。
