导读:今天首席CTO笔记来给各位分享关于devops哪些类型的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
安全开发你必须使用的28个DevSecOps工具
将安全融入开发过程,更早捕获并修复应用漏洞,你需要这五类共28款DevSecOps工具。
DevSecOps 是将安全集成到整个应用开发周期的过程,是从内到外强化应用,使其能够抵御各种潜在威胁的理想方式。因为很多公司企业不断开发应用以满足客户和商业合作伙伴的需求,DevSecOps的吸引力也与日俱增。
敏捷开发方法与DevOps操作帮助公司企业达成持续开发的目标。云原生应用架构也成为了DevSecOps运动的有力贡献者,推动采用公共云提供商、容器技术和容器平台为应用提供计算能力。DevSecOps将安全过程与工具集成进工作流并加以自动化,摆脱了传统方法按时间点进行的潜在干扰,是个无缝且持续的过程。
咨询公司 Data Bridge Market Research 称,鉴于网络安全威胁数量与危害性的持续上升,全球DevSecOps市场预计将从2018年的14.7亿美元增长至2026年的136.3亿美元。
市场繁荣之下,DevSecOps工具必将呈现百花齐放百家争鸣的局面。下面就按核心门类为您呈上多款优秀DevSecOps工具。
开发应用的时候很容易忽略掉安全漏洞。下面的工具为开发人员提供了潜在安全异常及缺陷的警报功能,可供开发人员及时调查并修复这些漏洞,不至于走得太远回不了头。有些工具专用于警报功能,比如开源的Alerta 。其他工具则兼具测试等别的功能,比如 Contrast Assess。
1. Alerta
()
该开源工具可将多个来源的信息整合去重,提供快速可视化功能。Alerta与Prometheus、Riemann、Nagios、Cloudwatch及其他监视/管理服务集成,开发人员可通过API按需定制Alerta。
2. Contrast Assess
()
作为一款互动应用安全测试(IAST)工具,Contrast Assess 与用户应用集成,在后台持续监视代码,并在发现安全漏洞时发出警报。据称即便是非安全开发人员也可使用 Contrast Assess 自行识别并修复漏洞。
3. Contrast Protect
()
该运行时应用自保护(RASP)工具采用了 Contrast Assess 同款嵌入式代理。Contrast Protect 在生产环境中查找漏洞利用程序和未知威胁,并将结果提交给安全信息及事件管理(SIEM)控制台、防火墙或其他安全工具。
4. ElastAlert
()
ElastAlert提供近实时接收警报的框架,可接收来自Elasticsearch数据的安全异常、流量激增及其他模式。ElastAlert查询Elasticsearch并根据一系列规则比较这些数据。一旦出现匹配,ElastAlert便发出警报并随附建议动作。
大多数DevSecOps工具都提供一定程度的自动化。此类工具自动扫描、发现并修复安全缺陷,只是自动化程度各有不同,从条件式事件驱动的自动化到运用深度学习技术的自动化都有。
1. CodeAI
()
旨在通过深度学习技术自动查找并修复源代码中的安全漏洞,号称可为开发人员提供可供参考的解决方案列表,而不仅仅是安全问题列表。其供应商QbitLogic宣称,已为CodeAI馈送了数百万个现实世界漏洞修复样本供训练。
2. Parasoft tool suite
()
Parasoft提供包括应用开发安全测试在内的多种自动化工具:
1)Parasoft C/C++test
()
用于开发过程早期缺陷识别;
2)Parasoft Insure++
()
可以查找不规范编程及内存访问错误;
3)Parasoft Jtest
()
用于Java软件开发测试;
4) Parasoft dotTEST
()
以深度静态分析和高级覆盖作为 Visual Studio 工具的补充。
3. Red Hat Ansible Automation
()
该工具包含三个模块——Ansible Tower、Ansible Engine 和 Red Hat Ansible Network Automation,可作为无代理IT自动化技术单独或联合使用。尽管不是专门的安全工具,Ansible Automation 却可供用户定义规则以确定自身软件开发项目中哪些部分是安全的。
4. StackStorm
()
该开源工具号称“可进行条件式运营”,其事件驱动的自动化能在检测到安全漏洞时提供脚本化的修复与响应,并附有持续部署、ChatOps优化等功能。
5. Veracode
()
该公司提供DevSecOps环境中广泛使用的一系列自动化安全工具,包括在代码编写时即时自动扫描的Greenlight;在沙箱中扫描代码漏洞的 Developer Sandbox;识别漏洞组件的 Software Composition Analysis (SCA);以及识别应用缺陷的 Static Analysis。
专用DevSecOps仪表板工具可使用户在同一图形界面中查看并共享从开发伊始到运营过程中的安全信息。有些DevSecOps应用,比如ThreatModeler和Parasoft已自带仪表板。
1. Grafana
()
该开源分析平台允许用户创建自定义仪表板,聚合所有相关数据以可视化及查询安全数据。如果不想自行构建,还可以在其网站上选用社区构建的仪表板。
2. Kibana
()
如果你使用Elasticsearch,该开源工具可在统一图形界面中集成成千上万的日志条目,包括运营数据、时间序列分析、应用监视等等。
威胁建模DevSecOps工具用以在复杂的攻击界面中识别、预测并定义威胁,以便用户可以做出主动安全决策。有些工具可根据用户提供的系统及应用信息自动构建威胁模型,并提供可视化界面以帮助安全及非安全人员 探索 威胁及其潜在影响。
1. IriusRisk
()
出自 Continuum Security 的解决方案,既可云部署,也可现场部署,能以基于问卷的界面自动化风险及需求分析,并设计出威胁模型和技术性安全要求。IriusRisk还可帮助用户管理代码构建及安全测试阶段。
2. ThreatModeler
()
该自动化威胁建模系统有两个版本:AppSec版和云版。在提供了用户应用或系统的功能性信息后,ThreatModeler会基于更新的威胁情报自动就整个攻击界面进行数据分析和潜在威胁识别。
3. OWASP Threat Dragon
()
一款基于Web的开源工具,提供系统图解和用于自动化威胁建模与缓解的规则引擎。Threat Dragon 承诺可与其他软件开发生命周期(SDLC)工具无缝集成,且界面易于使用。
在开发过程中测试应用以找出潜在漏洞是DevSecOps的关键部分,能够事先发现安全漏洞,避免漏洞被黑客利用。尽管其他工具往往包含了测试功能,比如Parasoft出品的那些,下列工具仍然在应用安全测试上表现强劲。
1. BDD-Security
()
该出自 Continuum Security 的开源框架可使安全人员在敏捷开发过程中测试行为驱动开发(BDD)语言编写的功能及非功能性安全场景。此BDD框架旨在使安全功能独立于应用特定的导航逻辑,让同样的安全要求能够更容易地应用到多个应用程序上。
2. Checkmarx CxSAST
()
可对25种编程及脚本语言进行未编译/未构建源代码扫描的静态应用安全测试(SAST)工具,能在SDLC早期发现成百上千种安全漏洞。CxSAST兼容所有集成开发环境(IDE),是Checkmarx软件暴露平台的一部分——该平台可在DevOps所有阶段植入安全。Checkmarx的交互式应用安全测试(IAST)工具可检测运行中应用的安全漏洞。
3. Chef InSpec
()
整个开发过程中的每一阶段都可以运用该开源工具自动化安全测试以确保针对传统服务器及容器和云API的合规、安全及其他政策要求。
4. Fortify
()
Micro Focus 出品,提供端到端应用安全,可供进行覆盖整个软件开发生命周期的现场及按需测试。Fortify on Demand 是 Micro Focus 的应用安全即服务产品,提供静态、动态和移动应用安全测试,以及生产环境中Web应用的持续监视。
5. Gauntlt
()
流行测试框架,旨在推动易操作的安全测试及安全、开发和运营团队间的沟通。GauntIt便于产生攻击测试用例,且能方便地钩入现有工具及进程。
6. Synopsys suite
()
Synopsys提供多个应用安全测试工具,包括:
1)SAST工具Coverity
()
自动化测试且融入持续集成/持续交付(CI/CD)管道;
2)SCA工具 Black Duck
()
采用容器及应用中的开源和第三方代码检测并管理安全;
3)SeekerIAST
()
识别可暴露敏感数据的运行时安全漏洞;
以及一系列用于应用安全测试的托管服务。
以下DevSecOps工具同样含有上述工具提供的功能,但或多或少略有不同。
1. Aqua Security
()
在整个CI/CD管道和运行时环境中管理端到端安全,可用于所有平台和云环境的容器及云原生应用。
2. Dome9 Arc
()
被 Check Point 收购,提供自动化测试及安全实施,使开发人员能够将安全及合规融入公共云应用的构建、部署及运营。
3. GitLab
()
该工具可将DevSecOps架构融入CI/CD过程,在提交时测试每一块代码,使开发人员能够在编程期间缓解安全漏洞,并提供涵盖所有漏洞的仪表板。
4. Red Hat OpenShift
()
为基于容器的应用提供内置安全,比如基于角色的访问控制、以安全增强的Linux(SELinux)实现隔离,以及贯穿整个容器构建过程的核查。
5. RedLock
()(前身为Evident.io)
Palo Alto Networks 出品,适用于部署阶段,帮助开发人员快速发现并缓解资源配置、网络架构及用户活动中的安全威胁,尤其是在亚马逊S3存储桶和弹性块存储(EBS)卷上。
6. SD Elements
()
出品自 Security Compass 的自动化平台,旨在收集客户软件信息,发现威胁及对策,突出相关安全控制措施以帮助公司企业实现其安全和合规目标。
7. WhiteHat Sentinel 应用安全平台
()
该解决方案提供贯穿整个SDLC的应用安全,适用于需将安全集成进工具中的敏捷开发团队,以及需持续测试以保证生产环境应用安全的安全团队。
8. WhiteSource
()
用于解决开源漏洞,可集成进用户的生成过程,无论用户采用什么编程语言、生成工具或开发环境。WhiteSource使用经常更新的开源代码数据库持续检查开源组件的安全及授权。
什么是devops
DevOps是IT服务管理的一种模式。过去的数十年间,IT运维发展经历了数个阶段。从早期的手工运维到标准化运维、自动化运维,到如今的DevOps、AIOps。
简言之,DevOps试图打通开发和运维的部门墙,从而打通整个IT价值交付的全生命周期,从产品需求到上线运维的全过程实现效率的提升。
DevOps最显著的作用是提高了企业产品的交付质量、缩短开发周期、减少故障。而降本增效是每一个公司在数字化转型之后的很大的挑战,DevOps无疑直击痛点。
而作为一名DevOps 工程师,除了要具备软件工程师基本的编程能力以外,还需要特定的人际交往、工具使用等技能。换句话说,DevOps 工程师需要“软”、“硬”技能兼备,具体如下:
一、沟通与协作技巧
DevOps 是一种横跨软件开发、测试和部署的协作方法。它将原本具有不同目标的开发、测试和运维小团队聚集在一起,以实现更高效和高质量的代码发布,这就要求 DevOps 流程中的不同角色之间不能有任何交流障碍。因此,良好的沟通技巧(无论是口头还是书面)对于优秀的 DevOps 工程师来说是必不可少的。
协作能力也很重要。DevOps 是团队合作的开发模式,每个工程师都是团队成员,需要在整个软件迭代过程中支持其他同事的工作。这不仅仅要求我们成为一名优秀的队友,还要在适当的时候给新人一些建议,包括但不限于指导和建议团队成员交付代码的最佳方式、编码时使用哪些工具以及如何测试最新功能。这就要求我们自身也要对这些 DevOps 流程中的必要技能有所了解。
二、熟悉和理解 DevOps 工具链
除了协作和沟通这样的“软”技能之外,DevOps 工程师还必须知道如何使用各种复杂工具协同工作以支持软件交付目标,这是成为一个优秀的 DevOps 工程师所必备的“硬”技能。
DevOps 工程师需要知道如何使用和理解以下类型工具的作用:
版本控制工具
详细地说,集合了代码审查、合并功能的版本控制工具是能让多个开发人员之间完美协作的主要DevOps 工具。由于 DevOps 流程汇集了来自各个部门的专家,所以他们需要了解源代码控制系统,以及系统跟踪不同应用程序中的更改。此外,它还维护应用程序的多个版本。
目前 DevOps 流程中常用的版本控制系统都基于开源分布式版本控制系统 Git,例如 GitHub、Gitee、GitLab 以及各大厂商基于 Git 定制的内源协作工具。
持续集成工具
持续集成(CI)是 DevOps 的关键技能之一,它是构建 pipeline 的重要部分。DevOps 要求运营和开发团队使用统一的系统。因此,持续集成所做的就是将开发人员的代码与 master 合并在一起。有了这样的技巧,就可以有效地合并数据。因此,DevOps 工程师一定要知道如何使用一些常用的 CI 工具,例如 GitHub Action、Jenkins、Bamboo、TeamCity、Travis CI 等。
容器与编排工具
容器作为现代微服务与云原生架构的核心技术,提供了关于 DevOps 的三个基本功能,包括持续的实验、流动和反馈。容器技术的不可变基础设施实现了操作系统层虚拟化,不仅方便运维程序升级和部署,还升华成了向应用代码隐藏环境复杂性的手段,成为推广分布式服务的必要前提。
目前,Docker 仍然是应用最广泛的容器技术,而以容器编排引擎 Kubernetes 为核心的云原生技术栈则是各大互联网企业构建容器技术基础设施的事实标准。
自动化工具
自动化是软件开发过程中必不可少的要素之一。几乎所有的手工任务都可以使用各种脚本语言自动完成。例如,Ruby、Bash、Python、Node、Shell 等等。可以说,使用自动化开发工具已经成为了很多 DevOps 团队加快开发和部署过程的关键。想要成为 DevOps 工程师,掌握自动化工具很有必要。
监控和报警工具
DevOps 持续集成和持续部署的实现离不开持续监控的辅助作用。许多微服务都是由数百个组件组合而成,其中一个服务的故障可能导致整个系统崩溃。当然,手动找到核心故障问题是很复杂和耗时的。其中一个解决方案就是持续监控关键特征,如 RAM 使用、请求数量、异常数量和存储空间。因此,需要根据系统的关键特性设置一个警报系统。例如,当存储空间使用率达到 80% 时应该触发警报,以便 DevOps 运维开发人员可以在整个系统崩溃之前解决问题。
三、具有成熟编码标准的特定编程技能
然编程能力是每个开发者最基本的能力,但 DevOps 工程师在这方面仍然有一些更特殊的要求。
通常来说,DevOps 工程师需要在专精 1-2 门编程语言的基础上熟悉多种语言,例如 Java、JavaScript、Ruby、Python、PHP、Go 等,这是由微服务时代同一系统不同服务可以由不同语言、不同框架实现的特性而决定的。DevOps 工程师至少需要了解这些语言的特性并具备在操作系统环境中编写和调试它们的能力。
四、技术支持和维护技能
优秀的 DevOps 工程师不仅需要开发方面的技能,有时还需要为客户提供维护和技术支持。这意味着 DevOps 工程师应该乐于为内部和外部客户提供支持,并在出现问题时进行故障排除。
DevOps适用于哪些领域啊?
DevOps最广为熟知是在软件服务领域,但其原则适用于任何与快速交付可靠的产品和服务相关的环境,它能够促进敏捷开发、服务管理和精益改进的协同作用,还能够确保持续交付中的安全性和保持控住,对整个组织的成功有很大帮助。
Devops概述
目前在国外,互联网巨头如Google、Facebook、Amazon、LinkedIn、Netflix、Airbnb,传统软件公司如Adobe、IBM、Microsoft、SAP等,亦或是网络业务非核心企业如苹果、沃尔玛、索尼影视娱乐、星巴克等都在采用DevOps或提供相关支持产品。那么DevOps究竟是怎样一回事?
DevOps一次词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
DevOps概念早先升温于2009年的欧洲,因传统模式的运维之痛而生。
DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。不过需要澄清的一点是,从开发到运维,中间还有测试环节。DevOps其实包含了三个部分:开发、测试和运维。
换句话说,DevOps希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。专家们总结出了下面这个DevOps能力图,良好的闭环可以大大增加整体的产出。
由上所述,相信大家对DevOps有了一定的了解。但是除了触及工具链之外,作为文化和技术的方法论,DevOps还需要公司在组织文化上的变革。回顾软件行业的研发模式,可以发现大致有三个阶段:瀑布式开发、敏捷开发、DevOps。
DevOps早在九年前就有人提出来,但是,为什么这两年才开始受到越来越多的企业重视和时间呢?因为DevOps的发展是独木不成林的,现在有越来越多的技术支撑。微服务架构理念、容器技术使得DevOps的实施变得更加容易,计算能力提升和云环境的发展使得快速开发的产品可以立刻获得更广泛的使用。
当今世界改变的速度已与过去不同,而每当经历一个颠覆性的技术革命时,都给这个世界带来了深刻的变化,大数据、云计算、人工智能、VR/AR和区块链等新兴技术推动着世界不断变化,如何应对这样一个VUCA时代,让我们能够在环境变化的时候快速响应呢?
在些我引用了圣贤王阳明的一句名言,他提倡“知行合一”,通俗的讲就是做事情要理论与实践相结合。我们在实现DevOps落地时也一定要遵循“理论与实践相结合”的方式进行,理论就是我们做事的指导思想,而实践就是具体做事的方法,接下来我就从我在公司中是如何按照理论与实践相结合来推动DevOps落实地。
首先我们还是要回到什么是DevOps,如果大家忘记了可以回到之前再温故一下,包括我总结的DevOps公式。
其实DevOps核心思想就是:“快速交付价值,灵活响应变化”。其基本原则如下:
DevOps的一个巨大好处就是可以高效交付,这也正好是它的初衷。Puppet和DevOps Research and Assessment (DORA) 主办了2016年DevOps调查报告中,根据全球4600位各IT公司的技术工作者的提交数据统计,得出高效公司可以完成平均每年1460次部署。与低效组织相比,高效组织的部署频繁200倍,产品投入使用速度快2555倍,服务恢复速度快24倍。在工作内容的时间分配上,低效者要多花22%的时间用在为规划好或者重复工作上,而高效者却可以多花29%的时间用在新的工作上。所以这里的高效不仅仅指公司产出的效率提高,还指员工的工作质量得到提升。
DevOps另外一个好处就是会改善公司组织文化、提高员工的参与感。员工们变得更高效,也更有满足和成就感;调查显示高效员工的雇员净推荐值(eNPS:employee Net Promoter Score)更高,即对公司更加认同。
快速的部署其实可以帮助更快地发现问题,产品被更快地交付到用户手中,团队可以更快地得到用户的反馈,从而进行更快地相应。而且,DevOps小步快跑的形式带来的变化是比较小的,出现问题的偏差每次都不会太大,修复起来也会相对容易一些。
因此,认为速度就意味着危险是一种偏见。此外,滞后软件服务的发布也并不一定会完全地避免问题,在竞争日益激烈的IT行业,这反而可能错失了软件的发布时机。
技术的发展使得DevOps有了更多的配合。早期时,大家虽然意识到了这个问题的,但是苦于当时没有完善丰富的技术工具,是一种“理想很丰满,但是现实很骨感”的情况。DevOps的实现可以基于新兴的容器技术;也可以在自动化运维工具Puppet、SaltStack, Ansible之后的延伸;还可以构建在传统的Cloud Foundry、OpenShift等PaaS厂商之上。
IT行业已经越来越于市场的经济发展紧密挂钩,专家们认为IT将会有支持中心变成利润驱动中心。事实上,这个变化已经开始了,这不仅体现在Google、苹果这些大企业中,而且也发生在传统行业中,比如出租车业务中的Uber、酒店连锁行业中的Airbnb、图书经销商Amazon等等。能否让公司的IT配套方案及时跟上市场需求的步伐,在今天显得至关重要。
DevOps 2016年度报告给出了一个运维成本的计算公式:
而对于工程师而言,他们也是DevOps的受益者。微软资深工程师Scott Hanselman说过“对于开发者而言,最有力的工具就是自动化工具”(The most powerful tool we have as developers is automation)。工具链的打通使得开发者们在交付软件时可以完成生产环境的构建、测试和运行;正如Amazon的VP兼CTO Werner Vogels那句让人印象深刻的话:“谁开发谁运行”。(You build it, you run it)
上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下:
在工具的选择上,需要结合公司业务需求和技术团队情况而定。(注:更多关于工具的详细介绍可以参见此文: 51 Best DevOps Tools for #DevOps Engineers )
DevOps成功与否,公司组织是否利于协作是关键。开发人员和运维人员可以良好沟通互相学习,从而拥有高生产力。并且协作也存在在业务人员与开发人员之间。出席了ITV公司在2012年就开始落地DevOps,其通用平台主管Clark在2016年伦敦企业级DevOps峰会接受InfoQ了采访,在谈及成功时表示,业务人员非常清楚他们希望在最小化可行产品中实现什么,工程师们就按需交付,不做多余工作。这样,工程师们使用通用的平台(即打通的工具链)得到更好的一致性和更高的质量。此外,DevOps对工程师个人的要求也提高了,很多专家也认为招募到优秀的人才也是一个挑战。
DevOps正在增长,尤其是在大企业中:调查发现,DevOps的接受度有了显著提高。74%的受访者已经接受了DevOps,而去年这一比例为66%。目前,在81%的大企业开始接受DevOps,中小企业的接受度仅为70%。
那么具体而言都有些公司在采用DevOps呢?Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Target(泛欧实时全额自动清算系统)、Walmart、Sony等等。
首先,大企业正在自下而上接受DevOps,其中业务单位或部门(31%)以及项目和团队(29%)已经实施DevOps。不过,只有21%的大企业在整个公司范围内采用了DevOps。
其次,在工具层面上,DevOps工具的用量大幅激增。Chef和Puppet依然是最常用的DevOps工具,使用率均为32%。Docker是年增长率最快的工具,用量增长一倍以上。Ansible的用量也有显著增加,使用率从10%翻倍至20%。
并且调查还发现不到半数(43%)的公司在使用诸如Chef、Puppet、Ansible或Salt等配置工具;然而使用配置工具的公司更有可能同时使用多个工具。25%的受访者使用两种或更多配置工具,只使用一种工具的比例为18%。其中Chef和Puppet是最常用的组合:使用Chef的组织中有67%同时也使用Puppet,类似的,使用Puppet的组织中也有67%同时使用了Chef。
结语:以上就是首席CTO笔记为大家介绍的关于devops哪些类型的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。