第2部分
构建安全的网络服务

本书第1部分从宏观上对网络服务的环境、场景、安全挑战和安全框架进行了介绍。接下来将学习如何构建安全的网络服务。网络服务的构建是一个体系化的复杂工程。本书主要从技术架构角度介绍如何构建安全的网络服务,同时对安全管理和合规相关的内容也进行了介绍。

从技术架构上讲,一个完整的网络服务离不开以下要素。

1. 基础设施

如数据中心周边环境、建筑物、电力供应、网络和机架等,这些设施可以自建,也可以租赁。除此之外,基础设施还包括硬件设备,如硬件设备服务器、网络设备、终端设备等。基础设施按形态又可分为物理基础设施和虚拟基础设施。物理基础设施就是传统的物理环境和硬件设备、设施。虚拟基础设施是从物理基础设施抽象出来的逻辑资源,如云上的VPC、云主机的CPU、内存、云上的卷存储、对象存储等就属于典型的虚拟基础设施。云环境将所有物理基础设施的构建和运维工作交给了云服务提供商,云客户只需要关注自己购买的虚拟基础设施即可。因此,从安全责任划分上看,云客户也只需要负责虚拟基础设施及以上的安全。本书基础设施相关的内容主要是物理基础设施。基础设施是网络服务的根基,正因如此,基础设施如果存在安全问题,就是致命的问题,如数据中心出现自然灾害、服务器设备失窃、芯片或固件被植入后门。我们要做好灾备防止自然灾害损失,做好物理安全防护防止设备被无关人员接触。在芯片方面,则需要我们掌控更多的核心技术,提升自主控制能力,避免受制于人。

2. 系统

本书讲的系统是指操作系统。操作系统是中间件、数据库和其他应用程序运行的基础平台。不管是传统的物理服务器还是云主机都需要通过操作系统来与底层硬件资源打交道。操作系统的种类很多,如Windows操作系统、Linux操作系统(Redhat、Debian、Ubuntu等)、MacOS,以及小型机采用的UNIX操作系统(以Solaris、AIX、HP-UNIX),还有移动端操作系统安卓、iOS等。操作系统因此涉及众多的接口、驱动和视窗,面临的攻击面比底层的硬件芯片或固件更大。所以在操作系统层面要做好安全加固,如最小化安装、打补丁等。从战略角度来看,需要增强操作系统的自主研发能力,提升国产操作系统的可用性、易用性和其他性能。

3. 网络

网络不仅包含网络服务提供商的内部网络环境和网络接入,还包括客户和服务器之间的网络链路,以及用户终端的网络环境。网络链路是网络服务的载体,也是云的载体。一旦网络出现故障,网络服务就会变成孤岛而失去价值,为了确保网络链路稳定可达,网络服务提供商通常会选择采用BGP线路,同时对静态资源可以通过CDN加速来提升用户体验。链路本身的安全性也直接决定了在网络上传输的数据的安全性。通常采用TLS对传输层加密的方式来确保数据不被监听。除此之外,网络防攻击也是网络服务稳定运行的根本保障,尤其是DDoS攻击。近年来,DDoS攻击总体趋势变化为:攻击的数量越来越多、频率越来越高、单次攻击的流量越来越大、单次攻击持续的时间越来越长。2020年2月,AWS遭受史无前例的2.3Tbps的DDoS攻击,持续时间超过3天。随着新兴技术被用于网络攻击,网络攻击的效率更高、威力更大。因此,必须加强网络安全防护。

4. 应用程序

网络服务最终是通过应用程序呈现给用户的,应用程序是在线提供网络服务的载体,是人机交互的工具。所有数据的输入和输出、增删改查都是通过应用程序来完成的。因此,应用程序出现安全问题的概率也是很高的。在应用程序设计时需要遵循一些基本的安全原则,如最小权限原则、数据校验证和过滤原则等。对于应用程序的服务端,不应相信任何来自客户端的数据输入,必须按照安全原则在后端进行验证和过滤。应用程序安全漏洞是难免的,所以在应用的全生命周期中,都需要持续进行渗透测试,及时发现并修复安全漏洞。

5. 数据

网络服务只是形式或工具,真正有价值的是用户在使用网络服务过程中产生的各种数据。网络服务安全防护的落脚点也是保护这些数据的机密性、完整性和可用性。数据安全保护的措施主要包括加密、匿名化、令牌化等。另外,针对不同位置或状态的数据,保护措施也不尽相同。通常可以将数据分为静态数据(落盘存储的数据)、动态数据(传输中的数据)和使用中的数据(通常位于内存中)3种。针对这3种类型的数据防护方式也不尽相同。以加密为例,静态数据加密可以选择卷加密、数据库TDE透明加密和字段级加密,也可以通过应用程序实现对特定字段的加密,传输中的数据加密通常使用https或vpn(本质上是TLS),使用中的数据通常位于内存中,加密的挑战比前几种场景要大,而且即便对内存中的数据做了加密,应用程序在读取时也要先解密。目前虽然有同态加密可以在不解密的情况下对数据进行处理,但是还处于实验室阶段,性能上远远达不到商用的标准。

安全管理工作贯穿网络服务的全生命周期。通常采用SSDLC(软件安全开发生命周期)进行应用软件的安全管理,如微软的SSDLC、NIST SP 800-64、ISO/IEC 27034都属于比较常用的SSDLC框架和指南。数据安全管理通常是基于数据安全生命周期的创建、存储、使用、共享、归档和销毁6个阶段展开的。这是一个理论模型,并不是所有的数据的生命周期都要完整地经历这6个阶段。另外,数据安全生命周期是一个动态的过程,需要将数据的状态(或处所)、数据使用者的角色、数据使用者的位置、数据的功能(如访问、处理、存储)等方面综合起来考虑。针对同样的数据,不同的人从不同的位置访问,面临的安全风险和需要采取的安全防护措施都可能不一样。

安全合规工作主要是指法律法规和标准的遵从性。法律方面如我国的《网络安全法》《个人信息保护规范》、欧盟通用数据保护条例GDPR、美国加州隐私法案CCPA等。除了法律法规,还有一些行业的前置监管机构颁布的行业指引或规范,都带有一定的强制性,是监管机构执法的依据。标准通常可以分为推荐标准和强制标准。推荐标准可以自愿选择是否遵从,但强制标准必须遵从。常见的标准如CSA标准、NIST标准、ISO标准、国家标准等。

第2部分包括本书第4~12章的内容,分别是基础设施安全、网络安全、系统安全、应用安全、数据安全、安全运维、安全渗透测试、隐私保护法规与技术、安全标准与合规。通过第2部分各章节内容的学习,读者将对如何构建安全的网络服务有一个体系化的认知和理解。希望读者在未来的工作和学习中能够用上。