软件定义边界(Software Defined Perimeter,SDP)由云安全联盟(CSA)于2013年提出,在2017年2月,CSA正式发布《Software Defined Perimeter for Infrastructure as a Service》白皮书。本文对其主要内容进行整理,也结合了我们对于SDP的认识,希望读者在读完本文后能够对SDP在IaaS中的应用有一个较为深入的了解。
IaaS 基本介绍
基础设施即服务(Infrastructure as a Service,IaaS)能够为消费者提供CPU、内存、存储、网络和其他基础计算资源,在这些资源之上,消费者能够部署和运行任意软件,包括操作系统和应用。消费者不需要关心底层云基础设施,但是可以控制操作系统、存储和部署的应用程序,也可能对特定的网络组件有控制能力。图1中展示了一个IaaS环境的简化架构图,可以适用于公共云和私有云的部署。
图1 IaaS环境的简化架构图
图1中展示了一个IaaS云环境,这个IaaS云环境中有两个私有云网络,每个私有云网络中有一些IaaS资源(虚拟机)。从网络访问的角度来看,这些私有云网络能够对应到单独的账户,或者单独的私有云环境区域(例如AWS虚拟私有云)。这些私有云网络被防火墙所保护,防火墙控制网络流量进入和走出云环境。在本文档中,省略了路由表、网关等,着重关注管理用户访问的挑战。
IaaS 安全需求新挑战
用户访问场景的变化
位置不再作为网络访问级别的主要标准
不同的开发者可能需要不同类型的网络访问不同的资源。例如,Sally是数据库管理员,他需要访问运行着数据库的所有服务器的3306端口。Joe坐在Sally旁边,管理Purple项目的应用程序代码,需要SSH到具有应用程序的服务器。Chris不同于团队的其他成员,需要远程工作,也是Purple项目的应用程序开发人员,尽管相隔数百英里,Chris需要与Joe相同的访问权限,
所以位置可能是访问策略过程中需要被考虑到的一个属性,而不再是确定网络访问控制级别的主要因素。
IaaS 环境在不断变化
首先,IaaS环境中的计算资源是高度动态的,服务器实例需要被不断创建和销毁。手动管理和跟踪对这些服务器实例的访问是几乎不可能的。第二,开发者也是动态的,他们可能在不同的项目中扮演不同的角色,而这不同的角色可能需要同时存在。这种情况在DevOps环境中尤为明显,开发,QA,发布和运营的角色在一个团队中混合。
IP 地址问题
不仅用户的IP地址定期更改,用户和IP地址之间也没有一一对应的关系。下图说明了当访问规则完全由IP地址驱动时,即使是简单的环境也是如此复杂:
位置 | 网络设置 | 安全隐患 |
公司总部(HQ) | 所有用户都映射到单个IP地址
|
安全组无法区分用户,并且必须授予每个人对所有资源的完全访问权限。这意味着恶意用户,攻击者或恶意软件可以从本地到云网络不受阻碍地穿越。 |
远程开发办公室 | 直接网络连接保留每个用户的IP地址 | IP地址是动态分配的,并每天更改。 用户还可以从多个设备访问云。
IT运营团队不断更新安全组规则(增加业务延迟)或网络完全向云开放(降低安全性)。. |
咖啡店 | 一些用户需要从各个位置远程访问 | 来自这些位置的网络访问将扩展到同一网络上的任何恶意用户,在同一网络中很难根据用户不断变化的位置和访问需求来手动调整网络访问策略。 |
IaaS需要解决两个问题
总体来说IaaS安全有两个问题需要解决,A.安全远程访问;B.用户访问的可见性和可控性。
安全远程访问
首先,让我们考虑安全的远程访问问题。所有的云用户都是远程访问云的,这意味着到云的通信是通过网络连接发生的。组织通常使用VPN解决这一问题,使用VPN技术上解决了上述问题A(安全远程访问),因为它为从用户设备到云网络的网络流量提供了安全的加密隧道。这有一些缺点,特别是如果所有用户流量都需要先到公司网络,然后再去访问云,这将引入额外的延迟,创建单点故障,并可能增加带宽成本和VPN许可成本。通过VPN直接从每个用户的设备连接到云有助于解决这些问题中的一些,但可能与同时VPN连接到公司网络的需要冲突。
用户访问的可见性和可控性
无论用户如何进入IaaS环境(无论是通过VPN还是非VPN),安全团队仍然需要控制(并监控和报告)在IaaS环境中哪些用户可以访问的哪些资源。IaaS平台提供了内置工具来管理这一点,例如AWS中的安全组和Azure中的网络安全组(在本文中我们称之为Cloud FIrewall)根据源IP地址控制对服务器的访问。
让我们来看一个云防火墙的例子:
这个防火墙配置片断展示了IaaS平台提供的简单IP地址规则方法。分配给此防火墙组的所有服务器实例将继承此组规则,允许网络访问特定端口。这种方法有几个问题:
- 它提供对此云防火墙中所有服务器的粗粒度访问。
- IP地址不对应用户。
- 没有策略的概念,也没有解释为什么给定的源IP地址在此列表中。
- 此列表是静态的,不能对应用户位置或权限的更改而做出改变。
- 此方法无法考虑任何信任概念(例如身份验证强度,设备配置文件或客户端行为),并相应调整访问权限
- 任何更改都需要对管理员对IaaS帐户进行管理访问
o这将需要集中化,从而延缓生产力,
o将需要对多个用户设置管理员访问权限,这将导致安全性,合规性和操作问题
对于IaaS环境,安全远程访问不再是特殊情况。所有用户都是远离云的,所以安全和网络团队需要关心所有用户是如何访问资源的,而不仅仅是用户的一个子集。也就是说,安全远程访问必须成为一个核心关注点,并且是采用IaaS的任何企业的整体安全策略的一部分。
使用软件定义边界解决IaaS安全访问问题
软件定义边界简介
软件定义边界(Software Defined Perimeter,SDP)由云安全联盟(CSA)于2013年提出,用应用所有者可控的逻辑组件取代了物理设备,只有在设备认证和身份认证之后,SDP才提供对于应用基础设施的访问。
SDP改变了传统的网站连接方式。在传统的连接中,首先,客户端需要建立与服务器端的连接,这一步骤使服务端暴露在公网中,若服务端有漏洞,则有可能被利用;其次,用户通过登录页面输入用户名和密码,这一步骤有可能使得用户名和密码被窃取;最后,除用户名和密码外还可使用多因素认证,通过多因素认证,可以抵抗用户名和密码的丢失,但是多因素认证对于用户而言不是很友好。
而在SDP中,首先,客户端进行多因素认证,认证设备的可靠性等,这一步对用户而言是透明的。认证通过之后,才进入用户登录阶段。这两步均是客户端与Controller进行交互,不涉及对于具体服务的访问。当认证通过后,客户端才能够与可访问的服务建立连接。
因此,SDP通过三种方式对抗基于网络的攻击:透明多因素认证可以抵抗用户凭据丢失、服务器隔离可以抵抗服务器利用、TLS双向认证可以抵抗连接劫持。
SDP包含两部分:SDP主机和SDP控制器。SDP主机可以创建连接或者接受连接。SDP控制器(Controller)主要进行主机认证和策略下发。SDP主机和SDP控制器之间通过一个安全的控制信道进行交互。SDP主机又分为可以创建连接的主机(IH)或者可接受连接的主机(AH)。
SDP标准1.0中所定义的SDP工作流程如下:
- 一个或多个SDP控制器上线,并且和可选的认证和授权服务建立连接;
- 一个或多个可接受连接的SDP主机上线,这些主机与控制器建立连接并被控制器认证。然而,这些主机并不对其他主机的通信进行应答,也不会响应非预分配的请求;
- 每一个发起连接的SDP主机上线,它和控制器建立连接并被控制器认证;
- 在认证通过后,SDP控制器确定一个发起连接的主机可以被授权通信的主机列表;
- SDP控制器通过加密信道通知可接受连接的SDP主机,以及一些可选的策略;
- SDP控制器将可接受连接的主机的列表和可选的策略发送给发起连接的主机;
- 发起连接的SDP主机与所有授权的可接受连接的主机之间建立Mutual TLS连接,并发送数据。
因为SDP Controller和AH拒绝无效数据包(大概来自未授权的用户),他们可以防止与未授权用户或设备建立TCP连接,从而可以减轻DDoS攻击。
SDP 优势
现有技术缺点
- VPN 技术
VPN很好地为远程用户提供对VLAN或网段的安全访问,就好像它们实际存在于企业网络上一样。这种技术,特别是当与多因素认证相结合时,对于具有传统边界的企业以及静态用户和服务器资源来说效果很好。但是正如Gartner所说,“DMZ和传统VPN是为20世纪90年代的网络设计的,已经过时,因为它们缺乏保护数字业务所需的敏捷性。
VPN有两个缺点,使得它们不适合当今的需要。首先,它们对所分配的网络提供非常粗粒度的访问控制,要么全部都可以访问,那么不能访问。尝试配置VPN以为不同用户提供不同级别的访问是不现实的。
第二,即使公司对VPN提供的控制级别感到满意,VPN也是一种只能控制远程用户的孤立解决方案。它们不会帮助保护内部用户,这意味着组织需要一组完全不同的技术和策略来控制内部部署用户的访问。这将使协调和对准这两个解决方案所需的工作量增加一倍以上。
Gartner指出:“到2021年,60%的企业将逐步淘汰VPN,而使用软件定义边界(尽管2016年SDP的使用量不到1%)。
- 跳板机(Jump Box)
跳板机(Jump Box)是一个服务器,目的是为了使不安全区域的用户访问在更安全区域中运行的服务器或服务。对于本文档,使用Jump Box的场景是使用Jump Box 来代理访问云环境中的服务器。
如上图所示的Jump Box的网络访问可以是公开的,通过直接连接可访问,或由VPN控制。 访问Jump Box桌面本身需要用户认证(多因素)。Jump Boxes通过对受管理的服务的强制单点访问来控制对云资源的访问。 然而Jump Boxes有一些限制,使它们不适合广泛的云资源访问。
- 不是多用户系统,用于单用户访问受保护的服务器
- 设计用于偶尔访问,例如由系统管理员访问,而不是用于不断的进行的访问
- 对跳板机后面的网络上的所有服务器,要么认证通过,所有的服务都可以访问,要么认证不通过,不能访问。
- 如果攻陷了跳板机或可以访问跳转的用户的设备,就可以打开整个网络。
- 难以跟踪用户访问以实现合规性检查
所以跳板机不是云系统访问控制的合适解决方案。
SDP 优势总结
- 策略是基于用户的,而不是基于IP地址
因为SDP系统是以用户为中心的,它在要求任何访问之前都需要对用户和设备进行验证,允许企业根据用户属性创建访问策略,执行最小特权原则,具有更细粒度的访问控制。通过利用目录组成员身份,IAM分配的属性,角色等方面,公司可以以某种有意义的方式定义和控制对云资源的访问,这对公司业务,安全和合规性很有意义。而传统的网络安全仅基于IP地址,根本不考虑用户。
- 身份管理
SDP和IAM在几个方面自然互补。
首先,SDP实现通常被设计为利用已经部署的IAM系统进行认证,从而加速SDP的推出。此身份验证可通过LDAP或AD服务器,或使用标准(如SAML)进行。
其次,SDP实现通常使用用户的IAM属性——例如目录组成员身份,目录属性或角色——作为SDP策略的元素。
最后,SDP系统也可以包括在由IAM系统管理的身份生命周期中。例如,当IAM系统创建新帐户时,SDP系统应同时创建相应的网络权利。
SDP Controller信任第三方IAM系统用于用户身份认证和用户身份生命周期管理。因此,当第三方用户在其IAM系统处停用时,用户将自动无法访问受SDP保护的资源,因为他们无法再通过联合身份验证。这个联合很好地解决了第三方访问的常见问题。
- 预认证和预授权
SDP依靠预认证和预授权作为其两个基本支柱。在认证和授权之前不会有任何数据包到达服务器,从而可以使云资源对未授权用户完全不可见。这完全消除了许多攻击向量,包括暴力攻击,洪水攻击,以及基于TLS漏洞的攻击,如Heartbleed和Poodle。
- 运营效率
与实现给定级别的安全通常所需的手动工作相比,由SDP执行的自动化策略实施提供了显著的操作益处。
- 简化合规性
由于AH记录日志和控制所有IH的网络流量,所以SDP可以提供详细的对每个用户访问的可见性,所以SDP能够根据这些信息自动提供合规性报告。
- 降低成本
SDP可以通过几种方式帮助组织降低成本。首先,减少IT任务所需的手工劳动量。这将直接降低外包IT模式的成本,并减少雇用额外工作人员的需要。第二,精简合规性将减少准备和执行审计所需的时间和精力。这两个活动都需要第三方顾问,每一小时的时间节省是直接的成本节约。最后,SDP作为其它技术(例如NAC)的替代还可以帮助组织节省资金。
SDP在IaaS中的应用场景
开发人员安全访问IaaS环境
开发人员需要访问IaaS资源,以进行开发,测试和部署工作。这些用户需要访问各种各样的端口和协议,以及访问不断变化的IaaS资源集。
不使用SDP 的访问控制
如上图所示,各种开发人员需要访问两个私有云网络环境。这些开发人员具有不同的访问要求,并且在许多不同的位置。Cloud Firewall是网络流量的唯一控制点,本质上是一个允许连接的简单表,将源IP地址映射到目标服务器和端口。
使用SDP做访问控制
SDP部署如下。Controller(如下所示)在所有用户可访问的位置运行(为了清楚起见,连接未在图中示出)。它可能正在云端的公共可访问位置运行,或者可能在公司总部的DMZ中运行。对Controller的访问受单数据包授权(SPA)的保护,因此将其暴露不会增加风险。
在Controller正确验证IH后,IH通过AH访问私有云网络上的资源。 AH还受SPA保护,所有IH流量通过网络上的加密隧道传输。 AH在每个用户的基础上实施访问策略,实现最小权限的原则。AH位于每个私有云网络的入口点,并控制所有入站流量。
两种方法的对比
需求 | Grace,Lou和Frank在公司总部工作,需要进行协作,并在多个服务器实例上访问端口22(SSH),443(HTTPS),3306(MySQL)和3389(RDP)。 | |
挑战 | 公司总部(HQ)的所有系统都NAT到单个IP地址216.58.219.228 | |
不使用SDP | 使用SDP | |
方法:必须将云防火墙配置为允许从216.58.219.228到私有云网络中所有服务器上的所有端口的流量通过。 这些服务器必须分配可公开访问的IP地址。 | 方法:每个用户建立从其设备(IH)到AH的相互认证的隧道连接,然后再通过AH连接到云中的目标资源。
Cloud Firewall配置会变得更加简单: ●AH对来自整个互联网的所有流量开放。 因为它只允许通过SPA认证的IH建立连接,所以它可以在一定程度上减轻DDoS攻击或者其它基于Web的攻击。 ●受保护资源位于AH后面的私有IP地址上,无法从Internet访问。他们的云防火墙配置为只接受来自AH IP地址的访问连接。 |
|
影响:公司网络上的所有用户和系统都可以完全访问私有云网络,违反最小权限原则,增加攻击面。 这个云网络可以被扫描,攻击者可以利用漏洞进行攻击。
服务器访问仅通过身份验证保护,而不是在网络级别进行控制。 密钥管理可能成为开发人员的负担。 合规性检查更加困难,因为所有用户都可以访问所有系统。 |
影响:
因为每个用户到AH的连接是单独建立的,并且是经过强认证的,所以AH可以细粒度地在每个用户的基础上控制对云资源的访问。企业可以定义与用户,设备和角色相关联的策略。 |
|
需求 | David是一名远程工作的开发人员,并且必须定期从不安全的网络(如咖啡店)访问云系统中的多个服务器。他还需要访问HQ网络上的开发资源。这些服务使用多个协议和端口(22,443,3389) | |
挑战 | 咖啡店网络NAT到单个IP地址,54.144.131.11 | |
不使用SDP | 使用SDP | |
方法:不能接受将云防火墙配置成允许整个互联网的连接,或者配置成允许来自54.144.131.11的所有流量都有很大的安全风险,所以David首先VPN到公司网络,然后再访问云网络。 | 方法:David的设备向Controller进行验证,只有认证通过了才有对AH所保护的资源的访问权限。David不再需要VPN到公司网络,从而,提高网络性能和减少网络带宽使用成本。 | |
影响:David需要到HQ网络的VPN连接(他已经需要访问本地资源)
所有流量必须回传到公司网络,然后再从公司网络传出,增加延迟和带宽成本 该解决方案至少要达到上面表格中的要求,即允许公司网络上的所有用户和设备都具有对云网络的完全访问权限。 |
影响:因为流量是从David的设备加密传送到AH,所以他既使使用公共无线网络或公共互联网也没有太大的风险。云防火墙配置不必更改,AH对互联网开放(但受SPA保护),所以无论他身在何处,David都可以高效工作。 | |
需求 | Freddy是一位在家庭办公室工作的开发人员,需要访问与团队其他成员分开的私有云网络。这个环境包含敏感信息,所以他设置了一个VPN来访问它。他还需要访问HQ网络上的开发资源。 | |
挑战 | Freddy的位置不会改变,但他需要持续访问云和HQ资源。 出于安全目的,需要安全的网络连接。 但是他不能在同一台机器上同时运行两个VPN。 | |
不使用SDP | 使用SDP | |
方法:Freddy通过他的开发机器上的不同环境访问这些资源。——他通过VM中的VPN进入云,通过在其主机操作系统中运行的VPN访问HQ网络。 | 方法:Freddy建立与AH的安全连接,以访问受保护的云资源。 | |
意义:这种方法会导致Freddy的生产力问题,因为他的一些工具和开发任务需要从同一个系统访问这两个环境。
因为Freddy是目前唯一访问此环境的人,所以合规性和审计报告不是问题。但他知道,在几个星期内,随着其他团队成员加入这个项目,他将会面临跟踪和报告这些访问的问题,同时还需要对团队成员的访问进行管理。他应该使办公室中每个人都可以访问云防火墙吗?远程开发人员呢?他应不应该管理大家的VPN访问? |
启示:他可以同时使用他的VPN连接到办公室网络,与访问云资源没有任何冲突,因为SDP连接看起来像一个常规的网络连接,而不是VPN。所以Freddy变得更有生产力。
Freddy可以通过他设计的一套政策,轻松地控制和报告对这些资源的访问。向新用户提供访问权限是编辑其策略或编辑用户属性的简单问题,并且允许他以细粒度的方式控制访问。 |
|
总结
对于此用例,SDP为企业提供了强大的优势
- 无论位置如何,都可确保开发者的访问需求
- 通过服务和端口精确控制每个开发人员可以访问的服务
- 简化合规性报告
- 更简单的安全策略配置
- 提高生产率
- 可以同时访问多个地方的资源(如果另外的资源需要VPN访问的话)。
主要参考文献
[1] Software Defined Perimeter for Infrastructure as a Service: https://cloudsecurityalliance.org/download/sdp-for-iaas/
[2] SDP Specification v1.0: https://cloudsecurityalliance.org/download/sdp-specification-v1-0/