大规模DevOps安全性 | 第1部分:安全策略即代码

2021-02-26 10:30:04 浏览数 (1)

蓝海科学 译

DevOps Security at Scale:大规模DevOps安全性

大规模DevOps安全性(DevOps Security at Scale)

第1部分:安全策略即代码(Security Policy as Code)

第2部分:职责分离(Separation of Duties)

第3部分:聚焦流程和速度(Focus on Flow and Velocity)

第4部分:安全作为头等公民(Security as First-Class Citizen)

第5部分:自动化(Automation)

第6部分:技术吸收(Technology Adoption)

Part 1: Security Policy as Code(安全策略即代码)

Published December 19, 2017 by Brian Kelly.

从软件世界第一次对Netflix、Etsy、Flickr和其他公司的高速成就大吃一惊,到现在已经过去了很多年,他们怀着敬畏的心情,在比其他公司开始计划的时间更短的时间内发布功能。他们成功的秘诀被统称为“DevOps”,这是一种交付软件的新方法,其重点是持续集成、持续交付,并打破工程和运营团队之间的障碍,以更快、更低的风险发货。

DevOps现在已经进入主流,并在其最初的硅谷根基之外的许多垂直领域中被发现。它已被银行、保险公司、政府和许多高度管制行业的组织采用。DevOps不再是一种竞争优势。现在,DevOps是赌桌上的赌注。

但是,尽管大多数现代软件团队都很了解DevOps,但是采用它的团队中很少有能够做到这一点,并且能够维护复杂的安全控制。Uber和eBay等一些非常有名的DevOps宠儿,以及许多存储大量敏感个人信息的机构,都经历了严重的攻击。

简单地说,许多采用DevOps的公司已经找到了如何简化开发和运营的方法,但是在大力推动特性速度的过程中,他们把安全性抛在了后面。

然而,有些公司已经了解了如何在DevOps中“快速运行”,同时也保持了非常高的信息安全标准,当我们了解它们的运行方式时,它们中出现了6个基本原则【如图所示】。

安全策略即代码(Security Policy As Code)

到目前为止,在成功将DevOps速度与安全结合的团队中,最重要的因素是他们使用代码来指定他们的安全策略。

DevOps的基础是“基础设施即代码”(infrastructure as code)的概念,也称为“不可变基础设施”(immutable infrastructure)。这是运营人员在代码中声明其基础设施需求的地方,取代了手工管理和配置服务器和软件的旧模式。这种方法防止了人工配置的“独角兽”(unicorn)服务器的激增,以至于没有人知道如果它们失败了如何重新创建它们。更重要的是,它还能启用类似自动伸缩(automatic scaling)的功能,并且当新特性进入不同的测试环境和生产环境时能够创建可预测性。代表此基础设施的代码与应用程序代码一样签入源代码管理,因此可以对其进行版本控制、比较和保护。

具有复杂安全实践的DevOps团队,已经采用了基础设施即代码(Infrastructure As Code)模式,并使用它来管理应用程序的安全性。这意味着新的应用程序或微服务将在代码中声明其安全策略要求。例如,这里有一个微服务的小安全策略,该微服务提供货币转换工具,使用Conjur的策略语言编写:【参见源代码】。

该语法是人类可读的,并且易于理解:代码授予货币转换器服务访问存储货币值的数据库的密码值(password value)的权利。该策略是完全自包含的(self-contained),总是可复写的(reproducible),并且不依赖任何可能改变其未来解释方式的外部因素。它被签入到源代码管理中,并且和它的内部实现一样,也是应用程序代码的一部分。

这对于那些在安全环境中保持高速前进的团队来说,多么具有变革性,无论怎样夸大都不过分。负责管理数千个应用程序的权限的安全人员,可以使用此安全策略即代码模型,以将其团队的能力扩展到新的级别,从而使其工作更具可预测性。将这种方法与在开发、QA、登台(staging)、生产环境中手动配置应用程序的安全权限进行比较,它的好处应该很快就会显现出来。

安全策略即代码对于创建高性能的安全DevOps过程至关重要。没有它,以下安全DevOps的许多基石将无法大规模实现。

在本系列的下一篇文章中,我们将介绍如何使用明确的职责分离,帮助DevOps团队集中精力进一步实现安全的速度。

0 人点赞