当前位置: 首页 > 科技观察

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

时间:2023-03-22 11:06:12 科技观察

底层基础设施安全设计1.物理基础设施安全谷歌数据中心包括生物识别、金属传感器检测、监控、交通障碍和激光入侵传感系统等多层物理安全防护和严格限制访问。由于谷歌的部分服务托管在第三方数据中心,因此必须部署此类高级别安全措施,以确保绝对的安全控制。硬件设计和部署Google的数据中心网络由数千台服务器组成。这些服务器的主板和网络设备都是谷歌定制设计的。相关设备部件和供应商必须经过严格的安全测试和背景调查。同时,谷歌还设计了自己的安全芯片,广泛应用于服务器及相关周边环境,为硬件级的安全识别和认证提供了有效的安全手段。安全启动和服务器识别机制为了确保服务正确启动,谷歌服务器使用了一系列启动和启动技术,包括在底层组件(如BIOS、引导加载程序、内核和系统映像)中使用加密签名。可以随时进行安全验证。整个过程中涉及的组件由谷歌构建、控制和加固。随着硬件的升级,谷歌也在不断努力提高安全性。例如,它设计了可锁定的固件芯片、安全微控制器和安全芯片,并构建了可信的安全启动机制。在软件启动和硬件启动过程中,数据中心的每台服务器都有自己唯一的标识标识,这些标识也用于机器底层管理的API调用验证。此外,谷歌还开发了自动更新检测系统,以确保及时更新、识别和诊断各种软硬件,并能在必要时自动隔离那些出现故障的服务器。2.安全服务部署本节将介绍一些基础的软硬件服务安全。数以千计的服务器将服务和备份这些服务应用请求。这些服务包括Gmail的SMTP服务、分布式数据存储服务、YouTube视频转码服务等常规用户请求、客户端APP沙箱运行服务等。运行在基础设施上的所有服务请求都由一个名为Borg的集群业务管理服务控制。服务标识、完整性和隔离在内部服务的应用层通信之间,谷歌采用加密的认证和授权方式,为管理和服务提供高强度的访问控制。虽然谷歌并不完全依赖内部网络划分和防火墙作为主要的安全机制,但为了防止IP欺骗等进一步的攻击,谷歌在网络入口和出口的各个点使用过滤策略。网络性能和可用性。每个运行的服务都有自己关联的服务账号ID,在创建服务或接收RPC请求时,可以提供相应的加密认证凭证。这些标识还用于服务间通信,以及限制对特定客户端的数据和方法访问。Google的源代码存储在中央存储库中,可以在其中审核当前和过去的代码。Google的基础架构可以针对特定服务配置适当的安全审计、验证和源代码检查程序。在代码审查方面,至少需要除编写者之外的一名工程师进行审查和批准,并且在审查出现问题后,需要系统管理员的批准才能更改和执行代码。这些指令限制了内部人员或攻击者对源代码的恶意更改,同时还为服务代码提供了可追溯的取证过程。此外,为了保护同一台服务器上运行的其他服务,谷歌还设置了一系列沙盒和隔离技术。这些技术包括一般用户隔离、基于语言和内核的沙盒以及硬件虚拟化等。一般来说,为了应对有风险的请求服务,比如用户请求复杂的文件格式转换,或者APP、谷歌计算引擎等产品面临的用户代码执行,谷歌采用了多层隔离技术。此外,为了保证网络边界的安全可靠,谷歌还使用了一些特殊的、敏感的服务,比如集群业务服务和密钥管理服务等,而这些服务都运行在专用服务器上。服务间访问管理所有运行的服务都可以使用谷歌基础设施提供的访问管理能力来指定哪些服务可以与它们通信。例如,可以将服务设置为只为某些特定的白名单服务提供API请求。该服务可以配置为仅允许列入白名单的帐户身份。之后,这种访问限制机制将由谷歌基础设施自动执行。这些服务可以配置为允许或拒绝访问,就像谷歌工程师也需要身份验证才能访问服务一样。所有身份类型信息(机器、服务或员工)都存储在Google基础设施的全球域中。在内部身份认证方面,谷歌提供了多种身份管理系统,包括审批流程、记录和通知。例如,可以通过系统将这些身份分配给访问控制组,以方便不同工程师的服务变更和审批。身份管理系统可以管理对数千个正在运行的服务的安全访问。除了自动API级访问控制机制,谷歌还设置了访问控制列表(ACL)和数据库读取服务,以便在必要时进行自定义和细粒度的访问控制操作。服务间通信加密设计除了前述的PRC认证和授权功能外,Google还提供了网络内PRC数据的加密、保密和完整性功能。为了保护HTTP等其他应用层协议的安全,谷歌将这些加密函数封装在了内部的PRC机制中。本质上,这提供了应用程序层隔离,同时消除了任何网络路径安全依赖性。即使网络被窃听或设备受到威胁,加密服务通信也能确保信息安全。对于每个PRC调用,可以为业务设置不同的加密保护级别,例如,对数据中心内部的低价值数据交换只设置完整性保护级别;对于复杂的网络攻击和内网窃听行为,会自动开启所有RPC流量加密功能,无需额外操作配置。同时,谷歌配置部署了硬件加密加速器,可以对数据中心内的所有PRC流量进行加密。终端用户数据访问管理典型的谷歌服务给终端用户带来很多便利,比如Gmail,当用户使用类似的程序时,会与谷歌基础设施进行交互,比如调用Gmail服务中的通讯录服务API来访问终端用户地址书。结合前面的章节,可以设置通讯录服务,使得Gmail服务中只允许特定的RPC请求。但是,这仍然是一组非常广泛的权限控制。但在权限范围内,Gmail服务会随时响应任何用户的请求。由于Gmail服务会代表最终用户对通讯录进行RPC请求,此时,作为RPC请求的一部分,Google的基础设施会为Gmail服务提供一个“EndUserPermissionCredential”,这是特定的给最终用户。身份证明,它还可以确保来自特定最终用户地址簿服务的数据响应的安全性。为了向最终用户颁发“权限凭证”,谷歌运营着一项中央用户身份服务。终端用户登录后,将通过身份服务以各种方式进行身份验证,如用户密码、cookie信息、OAuthtoken等,之后客户端向谷歌发起的任何后续请求也需要进行身份信息身份验证.当服务收到终端用户的密码信息时,会将其传递给中央身份服务系统进行验证。如果验证无误,身份服务系统将为用户的RPC相关请求返回一个短期有效的“权限许可凭证”。结合前面的例子,Gmail服务如果获取到“permission权限凭证”,就会将凭证传递给通讯录服务进行验证。之后,该凭证将作为RPC调用的一部分应用于任何客户端请求。3.安全数据存储静态加密Google的基础架构运行着许多存储服务,例如分布式数据库(BigTable)、Spanner和集中式密钥管理系统。大多数应用程序将通过这些存储服务直接访问物理存储设备。存储的数据可以配置为在写入物理存储设备之前使用集中式密钥管理系统分发的密钥进行加密。集中式密钥管理系统支持密钥自动轮换,提供完善的日志审计、特定用户身份完整性验证等功能。Spanner是由Google开发的可扩展、多版本、全球分布式、同步复制的数据库。它是第一个在全球范围内分发数据并支持外部一致的分布式事务的系统。在应用层强制执行加密允许基础架构隔离一些对底层存储的潜在威胁,例如恶意磁盘固件,这是另一层额外的加密保护。Google的每个HDD和SSD都支持硬件加密和状态跟踪。如果更换或丢弃加密存储设备,则必须经过多步磁盘清理和两次独立验证。未经过此清理过程的设备也将被物理销毁。数据删除谷歌的数据删除并不是彻底的数据删除,而是对某些特定数据的“计划删除”。这样做的好处是可以恢复被客户端或运维操作误删除的数据。如果数据被标记为“计划删除”,将根据特定的服务政策进行删除。当最终用户删除账户时,谷歌的基础设施会通知相关的数据清理服务清除被删除账户的数据。删除谷歌账号和谷歌邮箱后,谷歌系统将删除与该账号相关的所有数据,您将无法再使用该账号使用谷歌提供的服务。4.网络通信的安全设计本节将介绍谷歌的安全通信及相关服务设计。如前所述,Google基础设施由大量物理设备组成,这些设备共同构成不同的LAN和WAN。为了防止DoS等攻击,Google基础设施使用私有IP空间。Google前端服务Google基础架构中的服务需要先向Google前端服务(GFE)注册,然后才能在外部Internet上运行。GFE确保所有的TLS连接都必须使用正确的证书和安全策略,同时也起到防御DoS攻击的作用。GFE使用上述RPC安全协议转发请求。实际上,任何通过GFE在互联网上注册并运行的内部服务,都是一种敏捷的反向前端代理服务。这个前端不仅可以提供服务的DNS公网IP,还可以起到DoS防御和TLS保护的作用。GFE与在Google基础架构上运行的其他服务一样,可以处理大量传入请求。DoS攻击防御在规模上,Google的基础设施可以解决或抵御大量的DoS攻击。Google拥有多层级联DoS保护方法来防止和减轻任何针对GFE注册服务的DoS攻击。外部骨干网向谷歌数据中心发起的连接请求,将通过多层软硬件负载均衡进行。这些负载平衡导体将传入流量的状态信息实时反馈到谷歌基础设施内的中央DoS监控系统。当DoS监控系统检测到DoS攻击时,它会立即让负载平衡导体丢弃或扼杀可疑的攻击流量。在下一层,GFE实例还会将接收到的请求信息实时反馈给谷歌的中央DoS监控系统,其中包括网络层负载均衡发送器所没有的应用层信息。如果检测到可疑攻击,中央DoS监控系统也会导致GFE实例丢弃或限制可疑攻击流量。用户身份验证进入DoS防御后,下一步就是谷歌的中央身份服务系统。该服务从最终用户的登录页面开始。智能检查。身份验证步骤完成后,身份服务系统会向用户分发一个凭证,如cookie或OAuthtoken,以供后续请求调用。当然,用户在登录时也可以使用OTP动态密码、防钓鱼安全密钥等双因素认证措施。此外,谷歌与安全密码联盟(FIDO)共同商定了U2F用户双因素认证标准,并制作了YubiKey外键登录USB适配器,用户可以购买以实现更安全的登录。五、运维安全安全的软件开发除了前述的安全控制体系外,谷歌还提供了一个开发库,防止开发者引入某些安全漏洞。例如,在WebAPP方面,Google建立了开发库和框架来消除XSS漏洞。此外,谷歌还配置了大量的自动化安全缺陷检测工具,如Fuzzer、静态代码分析工具、web安全扫描器等。最后,谷歌会对开发代码进行全面的人工安全审查,从快速简单缺陷识别到深度风险发现。这些人工审核由网络安全、加密和操作系统安全等领域的专家团队进行。此外,谷歌还实施了漏洞赏金计划,以发现应用程序和基础设施中的漏洞。到目前为止,谷歌已经为这个项目支付了数百万美元的漏洞赏金。此外,谷歌在寻找其基础设施和上游产品中的0-day漏洞方面投入了大量的智慧和精力。例如谷歌工程师发现的Heartbleed漏洞就是最好的例子,而谷歌安全团队一直是CVE漏洞库的提交者最多的,是LinuxKVMhypervisor虚拟化技术漏洞的发现者和修复者。员工设备和凭据安全保护Google在保护员工设备和凭据免遭入侵、盗窃和其他非法内部活动方面投入了大量资金,这是Google保持自身基础设施安全运行能力的关键组成部分。长期以来,针对谷歌员工的高端、复杂的钓鱼攻击一直在持续。为了防止此类攻击,我们强制员工将存在网络钓鱼风险的OTP密码身??份验证方法替换为U2FUSB适配器安全密钥。此外,谷歌还投入大量资金开发了员工客户端安全操作监控系统。同时,还为员工客户端安装程序、下载程序、浏览器扩展、访问内容配置了安全扫描系统。进入公司内部局域网并不代表可以获得谷歌的访问控制权。Google使用应用程序级访问控制管理,只允许来自特定托管设备、网络或地理位置的有限用户访问内部控制程序。内部风险排查管控谷歌严格限制拥有管理权限的员工数量,并积极监督其网络行为。此外,对于一些特殊的任务,尽可能不需要权限,以自动化、安全可控的方式完成,杜绝权限需求泛滥。这将需要对某些活动进行相互批准,并将引入限制性API以消除信息泄露的风险。谷歌员工对终端用户信息的获取,会被底层架构信息钩子(hook)记录下来,谷歌安全团队会实时监控所有访问类型,调查异常和可疑事件。入侵检测Google拥有成熟的数据处理管道,可以很好地集成基于主机、基于网络和基于服务的入侵检测信号。这些管道内置的安全规则和检测机制会及时向运维安全人员发出事件警告,谷歌的事件响应团队也24/7随时待命。同时,谷歌内部运维团队也定期实施红方演练,持续衡量和改进检测响应机制的有效性。6、谷歌云存储平台(GCP)的安全设计这里,我们以谷歌计算引擎(GCE)服务为例,简要介绍谷歌云存储平台(GCP)的安全设计和改进。GoogleComputeEngine,GCE是谷歌IaaS(InfrastructureasaService)的基础设施服务产品,可以让你使用谷歌的服务器运行Linux虚拟机,从而获得更强大的数据计算能力。谷歌在I/O大会上表示,ComputeEngine服务比竞争对手的产品更具性价比,每一美元购买的计算能力比竞争对手高出50%。GoogleComputeEngine服务的背后是大量的Linux虚拟机,服务所使用的处理器共有771886个内核。GCE服务使客户能够在谷歌基础设施上运行谷歌Linux虚拟机,以获得强大的数据计算能力。GCE服务的实现由几个逻辑组件组成,特别是管理控制面板和虚拟机本身。其中,管理控制面板负责与外部API的连接,同时安排虚拟机的创建、迁移等工作。由于涉及到运行多个服务,管理控制面板内置了安全启动机制。由于GCE控制平面通过GFE暴露API接口,因此与GFE实例具有相同的DoS保护和SSL/TLS连接保护功能。同时,客户在运行虚拟机时可以选择使用GFE内置的GoogleCloud。一种服务负载平衡器,可减轻多种类型的DoS攻击。用于用户认证的GCEDashboardAPI通过谷歌的集中认证服务提供劫持检测等安全保护。授权是使用中央云IAM服务完成的。IdentityandAccessManagement(IAM):IAM允许用户根据既定的IAM角色分类规则分配对谷歌云资源的权限,允许其他用户根据权限以owner/editor/viewer的身份访问一个项目中的所有资源。控制平面之间以及从GFE到其他服务的网络流量会自动进行身份验证和加密,并且可以安全地从一个数据中心传输到另一个数据中心。每个虚拟机(VM)都与关联的虚拟机管理器(VMM)服务实例同时运行。Google的基础设施为虚拟机提供了两种身份验证,一种是VMM服务实例调用自己,另一种是VMM代表客户VM的身份,这也增加了VMM调用的信任度。GCE的永久性磁盘使用静态数据加密,使用Google中央密钥管理系统分发的密钥进行保护,并允许自动密钥轮换和系统审计。另外,虚拟机隔离技术是一个基于硬件虚拟化的开源KVM堆栈。为了最大限度的安全防护,谷歌还对KVM的核心代码进行了fuzzing、静态分析、人工验证等一系列安全测试。因此,如前所述,谷歌最近提交并披露了多个KVM漏洞。最后,谷歌的运营安全控制也是确保数据访问符合安全政策的关键部分。作为谷歌云平台的一部分,GCE客户的数据使用行为也遵循GCP的使用政策,谷歌不会访问或使用客户数据,除非有必要为客户提供服务。(本文转自Freebuf.com)英文原文:https://cloud.google.com/security/security-design/resources/google_infrastructure_whitepaper_fa.pdf