1.2.4 服务器与服务器之间的零信任架构——BeyondProd
BeyondCorp主要负责用户到服务器的访问控制。对于服务器与服务器之间的访问控制,谷歌也有一个大杀器——BeyondProd架构。其中,Corp代表企业网络(Corporate Network),Prod代表生产网络(Production Network)。
作为互联网的巨头,谷歌对系统的扩展性和可用性要求极高,所以很早就实现了业务平台的微服务化、容器化。容器的宿主机可能频繁变化,因此传统的防火墙访问控制规则不再适用。就像用户访问场景一样,服务访问场景的授权也需要基于服务的身份,而不是IP地址或者主机名。
BeyondProd就是要实现微服务级别的隔离,服务之间不存在隐含的信任,一切访问都需要进行身份和权限的校验。即使一个服务被入侵了,威胁也不会扩散到同宿主机的其他服务上。图1-5是BeyondProd的架构图(为了前后文一致,与BeyondProd原图的组件名称稍有不同)。
BeyondProd的几个特性如下。
1.前端保护服务
谷歌前端保护服务负责过滤网络攻击并进行负载均衡。由此可见,边界防护的理念并不是被完全抛弃了,而是变成了BeyondProd的一部分。
2.加密传输
谷歌的每个服务正常启动后,系统都会下发一个独立的加密证书。证书代表了微服务的身份,用于该服务与其他服务的双向加密通信。谷歌网络内的通信使用的是谷歌自己优化过的协议,没有证书就无法建立通信连接。所以,网络传输这一层也实现了对身份的校验。
3.业务系统前后端分离
BeyondProd架构适用于业务系统前后端分离的场景。前端处理用户请求,然后向后端调取数据服务。后端也可以调用服务,在调用过程中实现服务器和服务器之间的访问控制。
4.权限校验
BeyondProd的访问策略引擎会对每个请求者的身份和权限进行校验。如果通过了校验,则允许业务后端服务返回数据。如果不合法,则由服务上的隔离程序拦截。
5.追溯调用数据的终端用户
BeyondProd要校验调用服务的请求最初是否来自合法的用户。当业务前端调用后端服务时,不仅要验证前端的身份,还要验证终端用户的身份。
例如,某人想打开Gmail查询日历信息。那么Gmail的前端服务必须先获取某人的合法身份凭证,再向后调取日历信息。后端在接收到请求后,到“访问策略引擎”校验用户行为是否得到授权。只有在用户和前端服务的身份都合法的情况下,才可以从后端获取数据。这样可以避免攻击者以业务前端为跳板,窃取数据。
6.校验前端服务在代码方面是否可信
在开发人员上传代码后,系统会校验代码是否符合内部安全要求,例如,有没有进行过代码审查(Code Review)、有没有扫描出恶意代码等。
访问策略引擎在授权之前,要检查前端服务的代码是否达到了可信要求,只有符合要求的才能得到授权。这样可以降低攻击者上传未知代码、控制前端服务,从而窃取数据的风险。
7.校验前端服务的安全状态
授权之前要校验前端服务宿主机的BIOS、BMC、Bootloader和操作系统内核的数字签名等信息,以保障前端服务宿主机的完整性。这样也可以避免攻击者通过篡改硬件和系统,控制前端服务,从而窃取数据。