实用问题的实用答案,或如何在IT环境复杂的组织中实施DevSecOps

当前,作为实施新开发和数字转换策略的一部分,VTB积极实施DevOps,将开发安全软件的实践整合到工程流程中,提高了自动化水平,并优化了常规生产流程。 这些更改的目的可以用三个关键点来表述:速度,可靠性和效率。 当然,在进行此类全球转型时,召开公开的非正式会议非常重要,您可以在其中分享自己的经验,讨论引入各种生产实践的各种十字路口和细微差别。 Mitapas是提高与银行同事和其他公司合作伙伴的整体参与度,意识和经验交流的绝佳方式。

根据削减,这是11月在WeWork网站举行的第一次VTB会议“ DevSecOps:非平凡问题的实用答案”中最有趣的一次。 200多位专家参加了会议。



一切如何开始


如您所知,就客户数量,资产和财务指标而言,VTB是俄罗斯第二大银行。 自2018年以来,作为发展战略的一部分,该银行开始积极改变其技术路线,并决定逐步过渡到IT系统内部开发。 在此之前,大多数系统和解决方案都是由供应商提供的。 现在,通过组建内部团队并建立我们自己的生产IT流程来提高交付质量,安全性和速度已经变得很重要。 一切似乎都很简单明了:在某些情况下,有解决方案-实施。



但实际上,一切都更加复杂。 在这条道路上,银行不得不面对许多困难。 VTB开发流程自动化部门负责人Igor Shvakov在他的报告中谈到了这一点。

主要挑战是VTB在IT方面的独特性。 从历史上看,该银行是通过收购和整合大型参与者而发展起来的,每个参与者都有自己的IT架构,硬件,业务流程等。自2018年以来,VTB,VTB24和莫斯科银行已成为拥有自己独特IT的VTB之一景观,异构环境以及孤立的基础设施。 自然地,要进行转型变革,同时建立业务(例如业务策略)并在这样的条件下实施DevOps(尤其是DevSecOps)是不平凡的事情。

最初出现的第一个困难是大量的供应商,因此自身的能力也很狭窄。 我们需要将在外围工作的外部承包商转移到银行的基础架构和流程中。 第二个困难是业务客户要求积极开发IT系统以确保实现高业务绩效。 因此,我们必须在客户的交易活动不断增长以及系统高度依赖集成的情况下工作。

最初,我们计划逐步过渡到内部轨道:选择系统并定义目标,然后准备团队和基础架构,最后一步选择工具并配置DevSecOps Pipeline。 但实际上,我们必须立即做所有事情,同时解决出现的问题。

系统复制经验


由于我们没有用于内部开发的基础架构,因此决定将所有内容虚拟化并切换到x86架构,以最大程度地降低成本和支出。 结果,在现有的Nutanix超融合解决方案的基础上构建了基础架构平台,并且我们将所有开发工具尽可能地转移到了该平台上。

但是铁就是铁,人们在努力工作。 在这方面,出现了如何组队的问题。 我们决定重点关注以下关系:两个内部开发人员应拥有一名技术人员,一个由10个开发人员组成的团队应具有一名DevOps工程师和两名自动化测试人员。 这就是我们在超过两打系统上的经验。 而且这种方法非常有效。

下一个有趣的问题是如何将系统转移到存储体电路。
通常,一个系统的标准翻译周期为7-8个月。 布局如下。

  • 在最初的两个月中,有工作人员可供选择。 同时,还分析了与外部承包商的合同关系,以了解是否有可能将其转移到银行电路中工作。
  • 到第三个月,系统的核心能力已经形成,DevOps团队在开发,管道设置和自动化测试方面已经完成。 同时,外部团队对信息系统的访问受到管制和提供。
  • 第四个月-培训团队并将代码从供应商转移到银行存储库。
  • 第五-银行团队和外部承包商的联合开发,对管道进行微调,并在此基础上首次交付产品。
  • 在第六个月和第七个月,试点修订已经直接在银行的基础架构上进行了整个过程。
  • 结果-第七个月,联合团队已经在银行的同一开发循环中工作。

经验表明,使用这种方法可以组织协调良好的团队并在一年半的时间内实施大量项目。 换句话说,一切都很顺利,但是在过渡过程中我们遇到了问题。 其中之一是来自外部提供商的大量团队。 例如,供应商之一的团队由200多个开发人员组成。 现在,它们中的大多数都在银行基础结构的公共电路中工作。 并且有许多类似的细微差别。

目前,该银行已经拥有20多个开发团队(超过500个全职和外部开发人员),每个团队都使用自己的CI渠道。 对于大多数这些命令,将执行CD步骤。 还有一些系统已经在使用自动将更改传送到工业电路的系统。

所实施的方法不仅可以为具有灵活的微服务体系结构的新系统,而且可以基于适应银行要求的“盒装”解决方案为大量复杂的整体系统构建管道并将开发转移到内部部分。



从一开始,我们就没有寻找简单的方法,而是证明了拥有适当能力的员工,您可以为任何复杂的系统实施DevOps实践。

现在,这一过程正在蓬勃发展,正在添加新系统,标准化了技术栈,管道的单个阶段,报告和工作规则。 同样,将实践复制到银行其他团队和部门的方法正在达到一个新的成熟度,正在优化流程,团队内部必要的角色和能力以及参与者的责任。 通常,复制过程已步入正轨,并且已从大型银行内部的启动转变为高科技企业解决方案。 从在数据中心中安装铁件到将自动模式的更改推广到工业或工业化前的电路,这一路径花了一年半多的时间。

陷阱




作为VTB新战略的一部分,向DevSecOps实践的过渡已被选为银行一级的战略源之一。 IT生产系统和VTB维护开发部工程实践中心负责人Alexander Kalabukhov在他的报告中谈到了这一点。

决定将开发,测试和运营中涉及的服务转变为从事相同业务功能的跨职能团队。 团队包括架构和开发专家,技术人员,测试人员和DevOps工程师。 在集中式服务中,只有具有独特能力或以独特节奏(24/7)生活的剩余部分-应用程序和系统管理,信息安全。

这种跨职能团队的过渡对代码管理流程(源,测试,部署等),测试和开发管理提出了新的要求。 在以前可以接受流程差距的地方,现在它们已成为关键的障碍,并且我们正在通过工具和缩小流程差距来改善DevSecOps格局。

说到工具。 一个问题是,银行受制于与银行保密性和其他类似限制有关的某些监管要求。 银行中的任何系统都会通过验收测试阶段,以确保符合信息安全要求,包括在DevOps工具方面。 不幸的是,大多数DevOps工程师从未在如此严苛的监管环境中工作过,他们通常对这些工具的审核,如何限制网络访问和数据访问,如何处理DevOps工具之间交换的秘密一无所知。等

在银行内部建立数据保护的主要任务是确保没有人能一次访问所有数据。 因此,开发人员无法执行应用程序和系统管理员的功能。 DevSec工程师也有类似的限制。 当然,这些专家都不是信息安全管理员。 一旦定义了所有角色及其权限范围,您就可以将授予DevOps工具权限的标准过程嵌入到授予银行权限的一般过程中。

一个重要方面是网络安全性。 您必须遵守以下规则:只能从可信度更高的电路到可信度较低的电路建立连接。 如果该过程是在相反的方向上进行的,则有必要使用特殊方法来提供网络间隙。 网络连接必须安全建立,并且彼此之间仍应加密。 否则,病毒和其他恶意软件会进入该链,这可能导致数据泄漏和工业环境中的事件。



安全问题受数据组织方式的影响,因为存在各种开发和测试环境,因此有必要通过VPN加入银行的电路,以便承包商可以在笔记本电脑上工作。 另外,在某些特殊电路中,允许访问有限的人群,数据不应超出这些电路。

因此,尽管现有的DevOps工具非常丰富,但是有必要对其进行标准化。 采用正确的方法,银行中的信息安全会限制开发和运营过程,但不会阻止引入新技术。

网络安全至上




在业务转型和缩短在市场上投放新数字产品的时间的情况下,主要的工业挑战是在连续生产过程的所有阶段确保信息安全。 DevOps中安全软件开发实践的集成主题是Swordfish Security的执行合伙人,俄罗斯DevSecOps行业的负责人Yuri Sergeyev的报告的主题。
在DevOps中实施网络安全范式是一个相当复杂的过程,其中安全实践层将整个生产工程周期都包含在内。 信息安全实践本身由集成到流程所有阶段的工具堆栈支持。



必要的IS做法包括:

  • 当开源组件落入开发范围时对其进行控制(Open Source Analysis,OSA);
  • 静态代码分析(静态应用程序安全测试,SAST);
  • 监视软件组件的组成(Software Composition Analysis,SCA);
  • 所有类型的动态分析(动态应用程序安全测试,DAST /交互式应用程序安全测试,IAST /行为应用程序安全测试,BAST);
  • 二进制代码分析和容器组成控制(字节码和容器分析,BCA);
  • WAF(Web应用程序防火墙)的实现。

同时,将DevOps流程缩放并转换为派生的DevSecOps范例时,最重要的方面是:

  • 在开发过程中默认使用安全库,框架和软件组件(默认安全);
  • 在CI / CD流程的最开始就集成了IS技术实践(Shift-Left方法);
  • 一切皆有代码概念中的所有流程的自动化;
  • 建立安全负责人社区,他们负责生产团队中的信息安全任务,并是工程安全文化的指导者;
  • DevSecOps成熟度模型在评估现有流程和持续改进方面的应用;
  • 确保工程生产过程中所有参与者的所有安全活动的透明度。

另外,值得强调的是DevSecOps-orchestration(应用程序安全测试流程,ASTO)实践的重要性,它提供了IS工具栈与开发工具的端到端集成,安全管道(管道)的自动化管理以及连续不断地收集,合并和分析所有数据的能力。安全的软件开发过程。 在复杂的异构工程环境中,编排实践可以显着节省资源,并将DevSecOps计划的总实施时间减少10倍以上。

如果我们整体上讨论转型,那么可以区分以下关键成功因素:
  1. 当然,引入单独的工具或网络安全过程的要素是重要的一步,但决不是解决工业规模开发软件安全问题的灵丹妙药。 成功的关键只是整个信息安全实践池的集成应用。
  2. 编排实践的应用将保护工程团队和信息安全团队免受“膝高”仪器集成和不受控制的“拼布”自动化技术的混乱。
  3. 数据收集和指标的后续可视化将使您能够管理端到端流程,实现完全透明,并为将来应用机器学习实践创建必要的基础。

Source: https://habr.com/ru/post/zh-CN479082/


All Articles