前言
华为有一门关于质量管理的课程,其中有一个核心的观点:质量是设计出来的。在长期的安全工作中,尤其是作为甲方的安全工作,大家也逐渐产生了一个共识:安全是设计出来的。这句话听上去似是而非,需要打开看看,安全是如何设计出来的?
如何看?可以参考业界的最佳案例,Goolge在这方面很超前,并且毫不吝啬地公开了方案,咱们沿着Goolge的思路看一下。
Google 基础设施安全设计概述
作为白皮书,Google按分层的方法,系统的阐述了其在数据中心里的安全设计思路,主要包含如下内容:
关键点
整个文档的理解,可以从三个关键点入手:
访问控制是安全的基础手段,无论是现实生活,还是网络空间。所有漏洞,基本可以理解为对既有访问控制突破的方法或手段。入侵是对访问控制突破的结果。
网络上的访问控制经历了多代的发展,从简单的防火墙网段隔离,操作系统的多用户隔离,到细粒度的应用访问控制,逐步增强,发展到目前的零信任网络。
Google 基础设施基于零信任和可信计算实现了完整的访问控制。零信任和可信计算,看似矛盾,但完整对立统一。
基于可信计算的身份管理
身份管理是访问控制的基础。身份需要具备唯一性,不可伪造,不可抵赖。唯一性比较简单,但不可伪造,不可抵赖则需要加密技术作为支撑,而加密的关键,是根密钥的保护,所以,使用安全芯片是目前唯一的安全途径。
Google在服务器,网络设备及外设中均集成了Titan芯片。Titan 芯片通过提供硬件根信任、增强启动过程的安全性、确保设备和用户身份的可信性以及保护数据和应用程序的完整性,实现应用和身份的可信。
在Titan芯片的基础上,实现了安全启动和安全运行,这意味着只有经过Google认证或签名过的操作系统和应用才可以启动,对文件的篡改和非法的程序,基本不可执行,从基础上对恶意软件作了很好的防范。
解决了身份问题,再看控制问题。
控制主要体现在两个方面:
对内部用户的控制
用户有三类,员工,离职员工和有权限的外包员工。
所有权限最小化,所有活动监控及审计。
关键操作双人进行。
本文不细化,有专门介绍,可以参考文档 https://services.google.com/fh/files/misc/privileged-access-management-gcp-wp.pdf
2. 对应用的控制
为了实现服务间通信,应用程序使用加密身份验证和授权。身份验证和授权在细粒度上提供强大的访问控制。
所有的服务间调用都有访问控制。服务的所有者可以通过创建可与该服务通信的其他服务列表来管理访问权限。此访问管理功能由 Google 基础架构提供。例如,服务可以将传入的 RPC 仅限制到允许的其他服务列表中。所有者还可以为服务配置允许的服务身份列表,基础架构会自动执行该列表。执行包括审计日志记录、理由和单方面访问限制(例如,针对工程师请求)。
漏洞是安全面临的首要问题。漏洞不可避免,所以,流程化,自动化处理漏洞的机制是关键。针对漏洞,Google作了以下工作,都是业界最佳实践的方法:
软件开发安全。包括:使用库或框架防止安全漏洞发生。比如,使用标准库防止XSS漏洞等,另外,在开发过程中,使用fuzz工具,静态扫描工具,web扫描工具等,进一步发现并处理漏洞。
漏洞奖励计划。已经是个通用方法了,不解释。
投资开源的0day漏洞发现,即Project Zero,这是一支由 Google 研究人员组成的团队,致力于研究零日漏洞,其效果包括 Spectre 和 Meltdown,两个最著名的CPU漏洞。
源代码保护及员工设备保护,防止供应链投毒。
严格的供应商管理。没有漏洞跟踪及响应能力的供应商是不合格的。
有自动化的系统确保软件和补丁及时升级。
零信任首先强调访问控制,最小权限,但也始终强调持续监控。
在上述严格访问控制和漏洞处理能力这下,入侵google基础设施已经是难度极大的事情。
在此基础上,仍然需要威胁监控和入侵检测,这个由专门的团队和系统负责,在Google的这篇文档中未做深入展开,本文也暂不开展。
Google安全基础设施
基础设施提供公共能力,这些公共能力是安全的基础,有助于提供安全性和降低安全的复杂度。
在文档中,提到了一些公共基础设施,这些基础设施可以简化上层应用的开发难度,同时可以降低安全风险。
1.传输层安全ATLS。Google 的应用层传输安全 (ALTS) 是由 Google 开发的双向身份验证和传输加密系统,通常用于在 Google 基础架构内部保护远程过程调用 (RPC) 通信的安全。ALTS 在概念上与双向验证身份的 TLS 类似,但 ALTS 经过了专门的设计和优化,以满足 Google 数据中心环境的需求。
2. 容器编排Borg。用于大规模服务的管理,包括服务的部署,升级等。
3. GFE(Google Front End),卸载HTTPS。当某项服务必须在互联网上可用时,它可以向GFE进行注册。GFE 确保所有 TLS 连接都使用正确的证书终止,并遵循支持完美前向保密等最佳实践。GFE 还应用了针对 DoS 攻击的保护措施
4.完整的权限管理系统。基础设施提供服务身份、自动相互认证、加密的服务间通信以及执行服务所有者定义的访问策略
小结
好的安全是设计出来的,即内生安全,或Design in。安全不是独立的,一个系统,从物理机房开始,到硬件设备、操作系统、软件应用,人员管理,都有严格的规范约束,构成统一的完整系统。
目前最好的设计思想是零信任。但零信任不是指一个系统,而是一种管控的方法论,它融入到系统的每一个环节,每一个接口。
整个系统最好有底层的安全支撑,即公共服务系统,这些系统本身的安全性,及提供的安全能力,是上层应用安全的基础。
这种设计方法并非Google独有,最近这些年,大规模的系统,包括华为云、阿里云等公有云,及大型互联网服务等,基本遵循类似的思想,但实现的强度有所有不同。
附1:参考文档
Google Infrastructure Security Design Overview,2024年6月更新版本。https://cloud.google.com/static/docs/security/infrastructure/design/resources/google_infrastructure_whitepaper_fa.pdf
附2:Google基础设施安全概览的完整思维导图。