内容


带控件的 DevOps

借助云基础架构平台实现更快发布

Comments

简介

许多公司正转而采用 DevOps 方法,将软件部署和生产环境的持续运营都整合到软件开发生命周期中。在软件准备好发布到生产环境时,无需将完成的代码从开发部门转交给运营部门,DevOps 将从发布到生产的过程整合到了整个发布流程中。这通常依赖于一种可编程基础架构,比如云和软件定义网络 (SDN),以便将整个环境定义为代码。只有云基础架构平台才能满足此要求。

通过使用 DevOps,公司能比以往运转得更快。由于云的动态、快速变化的性质,IT、运营和安全部门的关键干系人很难确保企业策略是合规的。通过应用专注于发现、事件驱动的自动化方法,可以为组织提供在云中保持安全所需的配置控件。

DevOps 概述

DevOps 是一种在新版本可用时快速部署软件的方法。DevOps 的一个主要目标是帮助组织快速运转。尽可能快地向真实用户和客户公开新版本,并将它们投入使用,而且对它们进行功能和价值测试,以增加应用程序的收益。大部分组织都使用云基础架构作为其 DevOps 团队的操作环境。经过简化的流程可能包括以下步骤:

  1. 提交代码。
  2. 自动打包应用程序以供部署。
  3. 运行一组回归测试来检查代码,并运行冒烟测试来检查生产环境的准备情况。运行其他测试,比如安全/漏洞探测。
  4. 根据测试结果:
    • 测试失败:为开发、运营和安全团队生成警报和日志。返回到编码阶段。
    • 测试通过:自动进入生产阶段。
  5. 在生产阶段运行,直到发布下一个版本。

这整个流程(从头到尾)通常称为一个 DevOps 例程或剧本。

但是,不是所有 DevOps 团队都知道如何正确地配备基础架构,才能与组织的安全和合规要求保持一致。为了缓解复杂性,大部分 DevOps 方法都包含以下机制来解决问题:恢复整个环境。DevOps 剧本几乎总是包含回滚机制。

图 1. DevOps 剧本
开发、构建、测试、交付
开发、构建、测试、交付

由 Medrecs(自己的作品)[CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)] 通过 Wikimedia Commons 提供

云对 DevOps 的作用

云被独特地定位为 DevOps 方法的基础架构,这有许多原因,其中包括:

  • 云是软件定义的;它可以编程且非常灵活。
  • 云是软件驱动的,有许多不同的层。客户负责每一层且必须设计它,从网络配置到服务帐户和凭证,再到数据保护和加密设置。
  • 云基础架构通常采用实用式、即用即付计费模式。这意味着可以分开地对应用程序总体运行成本进行确定,公司可以执行准确的 ROI 测量来确定应用程序的价值。

云的采用

大部分组织认为他们能像使用 IT 基础架构一样使用云基础架构—也就是说,通过一个集中 IT 团队来使用它。但是,像服务目录、配备模板和受限控制台访问这样的方法在大规模环境中行不通,因为不同团队的需求太过繁杂,IT 很难满足这些需求。最终,深思熟虑后的云采用方案是让云变成去中心化的云,许多团队需要访问云基础架构。这引出了一个根本性问题:不是所有团队都是基础架构方面的专家。许多团队不知道或不了解组织的安全要求,或者不了解如何在软件定义的云环境中满足它们。再加上大型组织、业务部门、分布式团队和各种合规制度的复杂性,在大规模环境中,这个问题变得越来越难以管理。

修复问题的 DevOps 方法

许多 DevOps 团队自动化了新应用程序和应用程序版本的部署和回滚。因此,如果他们发现一个问题,整个环境都会遭到拆除。

这种完全拆除通常暗示着环境宕机,随后是详尽的根本原因分析。尽管这是一个提高长期组织改进的好做法,但它可能为应用程序的立即可用性带来挑战。

第二个挑战是,测试覆盖范围可能没有包含做出保留与回滚决策所应考虑的每个条件。测试通常专注于应用程序行为、代码正确性,有时还专注于安全评估。开发团队很可能主导着 DevOps 小组,但他们可能缺乏检查基础架构优化或配置所需的背景知识。

设定一组安全和配置控件(有时称为护栏),能为关键高层干系人提供保护和内心的平静,让他们相信 DevOps 团队的快速运转不会让组织处于风险之中。

对 DevOps 的安全认知

大型组织在 DevOps 方面的主要问题是缺乏对安全的关注。这通常是一种有意的妥协:让 DevOps 团队快速运转,因为他们从事的是对组织至关重要的事业。但是,快速运转往往以牺牲安全性为代价,以至于团队及其环境未受到约束。

云安全

对 DevOps 有如此负面的安全认知的原因之一是,对于云基础架构,很难管理大量需要编程的安全控件和配置。在简单的云应用程序架构设计中,至少需要正确实现和配置 10 种独特控件。一些示例:

  • 是否对所有基础架构资源都启用了云审计日志?
  • 是否正确配置了防火墙规则?
  • 是否在正确的地方使用了 SSL 证书?
  • SSL 证书是否有效且对已知漏洞免疫?
  • 是否正确使用和保护了服务帐户来实现服务启动?
  • 服务帐户是否拥有适当的权限、策略和密钥轮换?
  • 是否恰当设置了子网大小?
  • 是否使用并正确配置了网络访问控制列表 (ACL)?
  • 在需要时是否在静止数据上使用了加密?
  • 在需要时是否使用并正确配置了传输加密?
  • 是否通过服务帐户恰当保护了应用程序层间的通信?
  • 是否通过合适的权限集恰当保护了静态资产?
图 2. 样本云架构
样本云架构
样本云架构

图片来源:DivvyCloud;已获得使用许可

需要哪些控件?

组织在采用云方面的关键挑战之一是,定义他们想要在其云环境中采用的策略和标准。这些要求可能因应用程序而不同,而且它们通常来自多个干系人。例如:

  • 生产环境可能拥有最高级别的安全防范措施:
    • 所有管理帐户都需要 MFA
    • 仅允许打开防火墙端口 443
    • 必须启用审计跟踪
  • 测试和开发环境可能专注于控制成本,而不允许任何来自组织外部的访问:
    • 云网络上没有 ACL,但也没有来自公有网络的访问
    • 没有实例同时利用 8 个以上的核心(混合成本控制,并强制专注于横向扩展而不是纵向扩展)
    • 任何基于计算的实例、数据库或存储卷的最长存在时间为 30 天
  • 后台办公应用程序可能需要连接回企业网络,而且:
    • 必须开放对企业网络 IP 范围的 SSH 访问
    • 数据库一天备份 4 次
    • 所有 IP 流量都通过 VPN 进行路由

客户可以利用不同工具来放置这些配置控件,从来自每个云提供商的工具到开源检查工具或商业软件。这些工具可以检查已识别的问题并针对它们采取行动。除了普遍适用的全局策略之外,组织还可以使用标签、命名约定、云区域或帐户位置来确定向每个应用程序或工作负载应用哪组配置控件。

安全需求也可能来自不同来源。例如,在前面的示例中,可能的干系人包括:

控制权 干系人
仅允许通过端口 443 的流量 安全团队、CISO、安全操作员
没有实例同时使用 8 个以上的核心 财务、CFO、CIO
通过 SSH 访问企业 IP 范围 运营团队、IT、技术操作员
数据库备份 运营团队、技术操作员、CIO、灾难恢复团队
图 3. 企业级策略被业务部门策略和特定于应用程序、项目或产品的策略所覆盖
策略
策略

图片来自 DivvyCloud;已获得使用许可

一种通常成功的云自动化方法是从可视化开始着手。拥有一个工具来持续监视云环境并获取其清单不仅很有用,而且对确保针对这些控件来评估所有云基础架构必不可少。

一些组织利用各种应在启动新应用程序时“检入”的部署工具来收集此清单。另一个方法是使用服务器代理反馈给中央清单。这两种方法都离不开安装、正确配置和访问这些代理或部署工具。

一种替代方法是使用云 API 层对环境执行全面的反复查询。尽管这样做总是会得到完整的基础架构可视性,但它的代价是不能深入查询操作系统或应用程序层。因此,许多组织采用了一种组合方法,使用 API 来整合数据。

在发现基础架构后,识别适用的配置控件,并对每台虚拟机、应用程序、网络、存储资产和工作负载进行评估。确认问题后,客户有两种选择:收到通知并做出反应;或者按照预先确定的自动化方案来近实时地采取行动。

一个简单的示例是:

  1. 客户适当地采用一种控制机制,禁止通过 SSH 访问生产虚拟机。
  2. 将一个新的应用程序部署到生产中。该应用程序定义了一个意外地向世界开放了端口 22 的云网络环境。
  3. 云自动化工具发现这个新应用程序,并确定它是一个生产环境。
  4. 这些工具将新应用程序与适用的生产策略进行比较,并确认存在一个问题。
  5. 客户预定义了一个响应:创建一个通知,将一个事件记录到审计跟踪线索中,并关闭防火墙端口。

这既为关键高层干系人提供了安全控件,也能让他们放心地应用 DevOps 和更广泛地采用云。这两个因素相结合,能帮助组织保持敏捷并快速运转。

图 4. 云配置控制流程图
全局云策略
全局云策略

图·片来源:DivvyCloud;已获得使用许可

结束语

云使得组织能够快速运转。除了潜在的成本节省之外,云计算的真正价值在于它带来了敏捷性。客户能以前所未有的速度构建、修改和拆除环境。通过将软件定义的基础架构与应用程序发布管道相结合,公司能实现真正敏捷的 DevOps 发布方法。这显著缩短了发布间隔时间,以及发布与收到有助于持续改进应用程序的真实用户数据的间隔时间。

尽管云可能是革命性的,但它的实时性质和对基础架构的更广泛访问给关键干系人带来了安全性、成本控制和政策合规方面的一系列新挑战。通过使用能检查和执行控件的专注于发现的监视工具,可帮助消除对采用云的主要担忧。组织可以借助云来安全地更快发展。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=DevOps, Cloud computing
ArticleID=1051590
ArticleTitle=带控件的 DevOps
publish-date=10312017