Google系统架构解密:构建安全可靠的系统
上QQ阅读APP看书,第一时间看更新

序二

无论是网站可靠性工程还是安全性工程,其核心关注点都是保持系统可用。发布失败、容量不足和配置错误等事件都可能让系统不可用(至少在短期内不可用)。安全性或隐私事件会破坏用户的信任,也会削弱系统的实用性。因此,系统安全是网站可靠性工程师的头等大事。

在设计层面,安全性已经成为分布式系统的高级动态属性。从早期使用无密码账户的基于 UNIX 的电话交换机(没有人使用调制解调器去拨号,至少人们是这样认为的),到静态用户名 − 密码对和静态防火墙规则,我们已经走了很长一段路。如今,我们改用限时有效的令牌访问机制,因而每秒要对百万级的请求进行高风险评估。对动静态数据的精细加密,再加上密钥频繁轮换,使得密钥管理成为处理敏感信息的网络、进程和存储系统的附加依赖项。构建和运营此类基础安全软件设施需要原始系统设计人员、安全工程师和网站可靠性工程师紧密协作。

分布式系统的安全性对我个人而言具有更多的意义。从大学时代至加入 Google 前,我有一个关于进攻性安全(offensive security)的副业,主要关注网络渗透测试。我从分布式系统的脆弱性和攻守双方的不对称中学习到,防守方需要抵御所有可能的攻击,而攻击方只需要找到单个可利用的弱点进行突破。

在理想情况下,SRE 会涉及关键设计的讨论和实际系统的变更。作为 Gmail 的早期 SRE 技术负责人之一,我开始将网站可靠性工程师视为预防不良设计和不良实现影响系统安全性的最佳防线之一。实际上在系统变更时,网站可靠性工程师是最后一道防线。

Google 的两本关于 SRE 的书——《SRE:Google 运维解密》和《Google SRE 工作手册》——讲述了 SRE 的原则和最佳实践,但对于可靠性和安全性的结合并没有深入讲解。本书填补了这一空白,并深入探讨了以安全性为重点的主题。

多年来,我们在 Google 会以讲座的形式将工程师聚在一起,大家一起交流和探讨如何负责任地处理系统安全性问题。但关于如何设计和运维高安全性的分布式系统,正式的解决方案早就应该出现了。正式的方案有助于我们更好地升级以往非正式的协作。

在当今的网络环境中,安全团队是发现各类新型攻击以及让系统免受各种威胁的前沿角色,而 SRE 团队在预防和治理上述事件中发挥着重要作用。除了将可靠性安全性作为软件开发生命周期的组成部分,恐怕别无选择。

——Michael Wildpaner
Google SRE 高级总监