写点什么

SRE 在安全方面可以做点啥

  • 2021 年 12 月 19 日
  • 本文字数:1334 字

    阅读完需:约 4 分钟

SRE在安全方面可以做点啥

前言

最近 log4j2 的故事大家已经耳熟能详了,网上有非常多视频和文章详细介绍了漏洞以及如何消除风险。空闲下来,不禁思考作为一名 SRE,保障服务安全显然也是一个非常重要的职责,我们平时为安全可以做些什么呢?本文旨在基于服务生命周期各结论,讨论一下 SRE 可以在安全方面可以做哪些事情。

需求分析与架构设计

设计阶段的问题,发现越晚纠正的代价越大,我们可以借助OWASP ASVS确定项目的安全强度要求,首先看项目需求,是否涉及到敏感数据,ASVS 中分三种级别:

  1. L1, 不涉及敏感信息

  2. L2, 有敏感信息,需要加密保护

  3. L3, 有敏感信息,涉及金钱交易,用户健康数据等,需要极尽所能保护

评审项目影响,最快情况会造成什么样的损失,确定自己的项目需要采取多大强度的保护以后,借助 ASVS 制定对应安全设计。

Thread modeling

评审架构设计,模块划分,确认各模块的安全边界,对外输入输出的对象和数据流,数据是否包含敏感信息。

可以借助一些 Thread modeling 工具,比如 Microsoft Thread Modeling Tool,OWASP Thread Dragon 等等,通过图形化方式检查威胁会出现在哪里,确认相应的防护手段。

威胁一般分为六类:

  1. 欺骗(spoofing),需要做好认证

  2. 篡改(Tampering),需要做完整性校验

  3. 抵赖(Repudiation), 需要借助数字签名校验等方法确保不可抵赖

  4. 泄密(Information disclosure), 需要加密,包括传输,处理和存储各阶段

  5. 拒绝服务(Denial of Service), 高可用设计

  6. 越权访问(Elevation of Privilege), 确保权限管理,包括水平权限和垂直权限


OWASP ASVS 中对所有威胁在 L1, L2, L3 分别应该做到哪些措施,不再一一赘述。


不同的公司可能有不同的协作方式,往往有专门的安全工程师把关安全设计,其中 SRE 本身就应该消除单点故障保证高可用设计,除此之外更需要评估未来正式上线后,安全需求带来额外的运维需求,比如说确认了需要加密,那么加密密钥如何管理,密钥多久做一次 rotation,一旦服务上线以后,如何不中断服务做 rotation?认证时的证书如何管理,多久做一次 rotation?为了实现这些功能,需要在开发阶段实现哪些功能也是 feature request,尽早与团队沟通确认好,否则上线以后会发现很多困难。

开发测试

在开发测试阶段,SRE 准备生产/测试环境,实现安全需求分析阶段中提到的所有依赖,比如说决定使用 Vault 来管理 secret 的话,是否需要提前准备好独立的 Vault 集群;容量规划也是保证高可用的重要一环;CI/CD 过程中哪些信息需要 secret 管理等等。

有限发布

在有限发布阶段,SRE 一般需要制定 SLO,观察 KPI pattern 建立告警,同时也需要包含安全类告警,及时发现恶意试探,加入黑名单或者采取主动措施防御。

正式发布

经历千辛万苦,终于产品上线了,SRE 也进入了日常 oncall;需要注意类似于一开始提到的第三方库漏洞并及时采取措施。


可能有安全团队专门发布通知以及推荐解决方案,有的公司可能没有专职人员,那么采用自动化方式从 repo 中收集类似于 java 的 Maven/Grade,Python 里的 requrements.txt, Go 里的 go.mod,提取依赖项和版本号,自动爬取 CVE 发出报警可能是个不错的实践。


比如收到上述 log4j2 的 CVE,采取紧急措施后跟踪事件直到该问题彻底解决。

总结

本文用口语化方式简单描述了一下 SRE 在整个服务不同的参与阶段在安全方面可以做哪些事情,相当于一个随笔吧。最后非常感谢做安全的朋友以及开源工作者的无私奉献。


发布于: 4 小时前阅读数: 6
用户头像

不要绕弯子 2020.10.21 加入

简短,直接,明了

评论

发布
暂无评论
SRE在安全方面可以做点啥