专栏名称: 互联网后端架构
主要介绍Java后端架构。其中也会掺杂一些前端、GO、Python、Linux,目标:全栈工程师!---好像很牛叉的样子 ^-^
目录
相关文章推荐
51好读  ›  专栏  ›  互联网后端架构

全解 Google(谷歌)基础设施架构安全设计

互联网后端架构  · 公众号  · 架构  · 2019-11-15 14:06

正文

底层基础设施安全设计

一、物理基础架构安全

谷歌数据中心包括了 生物识别、金属感应探测、监控、通行障碍和激光入侵感应系统 等多层物理安全保护,并做了严格的限制访问。

因为谷歌的某些服务托管在第三方数据中心,为了确保绝对的安全控制,必须部署此类高度安全措施。

硬件设计部署

谷歌数据中心网络由数千台服务器组成,这些服务器的主板和网络设备都由谷歌自行定制设计,相关设备组件和供应商都必须经过严格的安全检测和背景审查。

同时谷歌也自己设计了安全芯片,这些芯片被广泛应用于服务器和相关外设环境,为硬件级别的安全识别和认证提供了有效的安全手段。

安全引导和服务器识别机制

为了确保正确的服务启动,谷歌服务器使用了一系列的启动引导技术,包括在 BIOS、bootloader、kernel 和系统镜像等底层组件中使用加密签名,这些签名在每次启动和更新时都能进行安全验证。

整个过程中涉及的组件都由谷歌构建、控制和加固。

随着硬件的更新换代,谷歌也在不断努力进行安全改进,比如自行设计了可锁固件芯片、安全微控制器和安全芯片,并按照不同服务器的设计版本,在各类芯片中内置了可信的安全启动机制。

在软件引导和硬件启动过程中,数据中心的每台服务器都有自己独特的标识身份,这些标识也被用于机器底层管理的 API 调用验证。

另外,谷歌也开发了自动更新检测系统,以保证各类软硬件的及时更新、识别和诊断,必要时可以自动隔离那些出现故障的服务器。

二、安全服务部署

此节中,将对一些基本的软硬件服务安全进行介绍,数千台服务器将对这些服务应用请求进行伺服和备份,这些服务包括 Gmail 的 SMTP 服务、分布式数据存储服务、YouTube 视频转码服务、客户端 APP 沙箱运行服务等常规用户请求。

所有运行于基础设施架构的服务请求都由一个叫 Borg 的集群业务管理服务进行控制。

服务标识、完整性与隔离

在内部服务的应用层通信之间,谷歌使用了加密认证授权方式,为管理和服务提供了高强度的访问控制。

虽然谷歌不完全依赖内部网络划分和防火墙作为主要安全机制,但为了防止 IP 欺骗等进一步攻击,谷歌在网络入口和出口的各种不同点位使用了过滤策略,这种方法也最大化地提高了网络性能和可用性。

每一个运行服务都有自身相关的服务账户标识,当创建服务或接收 RPC 请求时,就能提供相应的加密验证凭据。这些标识同样被用于服务间通信,以及对特定客户端的数据和方法访问限制。

谷歌的源代码被存储在一个中心库内,在这里可以针对当前和以往的代码进行审计。谷歌基础设施可以针对特定服务配置相应的安全审核、验证和源代码检测程序。

在代码审查方面,需要除编写者之外的至少一名工程师进行审查和批准,另外,在审查出现问题之后,需要经系统管理员批准才能更改和执行代码。

这些强制要求限制了内部人员或攻击者对源代码作出恶意更改,同时也为服务代码提供了可追溯的取证流程。

除此之外,为了保护同一台服务器上运行的其它服务,谷歌还设置了一系列的沙箱和隔离技术。这些技术包括通用的用户隔离、基于语言和内核的沙箱以及硬件虚拟化等。

总体来说,为了应对存在风险的请求服务,如用户请求的复杂文件格式转换,或 APP 端及谷歌运算引擎这类产品面临的用户执行代码等,谷歌使用了多层隔离技术。

另外,为了保证网络边界的安全可按,谷歌还使用了一些特殊敏感的服务,如集群业务服务和关键管理服务等,这些服务都运行在专门的服务器之上。

服务间访问管理

所有运行服务可以使用谷歌基础设施提供的访问管理功能来指定哪些服务可以与其进行通信。

例如,某个服务可以设置只提供一些特定白名单服务的 API 请求调用,该服务可以被配置为仅允许白名单帐户身份,之后,这种访问限制机制将会被谷歌基础设施自动执行。

就像谷歌工程师对服务的访问同样需要身份标识验证一样,这些服务可以设置为允许或拒绝访问。所有标识类型信息(机器、服务或员工)都存储于谷歌基础设施的全局域中。

在内部身份标识认证中,谷歌提供了多样的标识管理系统,包括审批流程、记录和通知等。

例如,这些标识可以通过某个系统指派给访问控制组,以方便不同工程师进行服务的更改和批准。标识管理系统可以对成千上万的运行服务进行安全访问管理。

除了自动的 API 级别访问控制机制外,谷歌还设置了访问控制列表(ACLs) 和数据库的读取服务,以方便执行必要时自定义和细粒度的访问控制操作。

服务间通信加密设计

除了前述的 PRC 认证授权功能之外,谷歌还提供了网络内 PRC 数据的加密保密性和完整性功能,为了对HTTP 等其它应用层协议进行安全保护,这些加密功能被谷歌封装在了内部的 PRC 机制中。

本质上来说,这提供了应用层隔离,同时消除了任何网络路径的安全依赖因素。即使网络被窃听或设备被入侵,加密的服务通信也能保证信息安全可靠。

可以针对每一种 PRC 调用,为服务设置不同的加密保护级别,

例如,对于数据中心内部的低价值数据交换只设置完整性保护级别;而针对复杂的网络攻击和内部网络窃听行为,将会自动开启所有 RPC 流量加密功能,无需额外的操作配置。

同时,谷歌配置部署了硬件加密加速器,可以为数据中心内部所有 PRC 流量进行加密。

终端用户数据访问管理

典型的谷歌服务为终端用户带来了很多便利,例如 Gmail,在用户使用类似程序的过程中,将会和谷歌基础设施进行交互,如 Gmail 服务中调用通讯录服务 API 访问终端用户地址薄。

结合前述章节,通讯录服务可以设置成 Gmail 服务中只允许特定 RPC 的请求。然而,这仍然是一个非常广泛的权限控制集。但在权限许可范围内,Gmail 服务将对任何时间的任何用户作出请求回应。

由于 Gmail 服务将会代表终端用户执行对通讯录的 RPC 请求,而此时,作为 RPC 请求的一部分,谷歌基础设施将会为 Gmail 服务提供一个“终端用户许可凭据”,该凭据是特定终端用户的身份证明,这也为特定终端用户通讯录服务的数据回应实现了安全保障。

为了向终端用户发布“权限许可凭据”,谷歌运行有一个中央用户身份服务系统。终端用户登录后,将会通过该身份服务进行多种方式验证,如用户密码、cookie 信息、 OAuth 令牌等,之后,任何从客户端发起到谷歌内部的后续请求也将需要身份信息验证。

当服务接收到终端用户密码信息后,将把其传递到中央身份服务系统进行验证,如果验证正确,身份服务系统将返回一个短期有效的“权限许可凭据”,用于用户的 RPC 相关请求。

结合前面的例子,Gmail 服务如果获得了“权限许可凭据”后,将把该凭据将传递给通讯录服务进行验证。之后,作为 RPC 调用的一部分,该凭据将适用于任何客户端请求。

三、安全数据存储

静态加密

谷歌基础设施中运行有很多存储服务,如分布式数据库(BigTable)、 Spanner 以及集中密钥管理系统。大多数应用程序都将通过这些存储服务对物理存储设备进行直接访问。

存储数据在写入物理存储设备之前,可以配置使用集中密钥管理系统分发的密钥进行加密。而集中密钥管理系统支持自动密钥轮换,并提供了全面的日志审计、特定用户身份完整性校验等功能。

Spanner 是谷歌公司研发的、可扩展的、多版本、全球分布式、同步复制数据库。它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务。

在应用层执行加密允许基础设施隔离掉一些如恶意磁盘固件的底层存储潜在威胁,这也是另一种加密保护层的额外实现。谷歌的每一块机械硬盘和固态硬盘都支持硬件加密和状态跟踪。







请到「今天看啥」查看全文