1.一篇文章了解CI/CD管道全流程
2.Kettle插件开发
3.SecWiki周刊(第171期)
4.开源动态数据管理框架Apache Calcite
5.15种值得关注的源码大数据技术
6.DevSecOps之应用安全测试工具及选型
一篇文章了解CI/CD管道全流程
从CI/CD过程开始,包含所有阶段并负责创建自动化和无缝的源码软件交付的一系列步骤称为CI/CD管道工作流。使用CI/CD管道,源码软件发布工件可以从代码提交阶段到测试、源码构建、源码部署和生产阶段在管道中移动和前进。源码股票贝塔系数源码这个概念非常强大,源码因为一旦指定了一个管道,源码它的源码一部分或全部就可以实现自动化,从而加快流程并减少错误。源码换句话说,源码CI/CD管道使企业更容易一天自动多次交付软件。源码
DevOps工程师经常会因为CI/CD中各个阶段的源码自动化而与CI/CD管道混淆。虽然不同的源码工具可以使CI/CD中的各个复杂阶段实现自动化,但由于人工干预,源码CI/CD的整个软件供应链仍然可能被打破。那么,就首先了解CI/CD过程中的各个阶段,以及CI/CD管道为什么对于组织快速、大规模地交付代码至关重要。
企业应用程序开发团队通常由开发人员、测试人员/QA工程师、运营工程师和SRE(站点可靠性工程师)或IT运营团队组成。他们紧密合作,将高质量的软件交付给客户。CI/CD是两个独立过程的组合:持续集成和持续部署。下面列出了其中的主要步骤。
CI持续集成
CI持续集成(CI)是构建软件并完成初始测试的过程。持续部署(CD)是将代码与基础设施结合起来的过程,确保完成所有测试并遵循策略,然后将代码部署到预期的环境中。当然,许多公司都有自己的流程,但主要步骤如下。
CI:代码提交
人员:开发人员和工程师、数据库管理员(DBA)、基础架构团队
技术:GitHub、Gitlab、BitBucket
过程:代码提交阶段也称为版本控制。提交是将开发人员编写的最新更改发送到存储库的操作。开发人员编写的代码的每个版本都被无限期地存储。在与合作者讨论和审查变更之后,开发人员将编写代码,并在软件需求、功能增强、bug修复或变更请求完成后提交。管理编辑和提交变更的存储库被称为源代码管理(SCM工具)。在开发人员提交代码(代码推送请求)后,代码更改被合并到存储在中央存储库(如GitHub)中的基本代码分支中。
CI:静态代码分析
人员:开发人员和工程师、数据库管理员(DBA)、基础设施团队、测试人员
技术:GitHub、Gitlab、BitBucket
过程:一旦开发人员编写了代码并将其推送到存储库,系统就会自动触发,开始下一个代码分析过程。想象一下这样一个步骤:提交的代码直接进行构建,但在构建或部署过程中失败了。就资源利用率而言,猫云视频源码无论是机器还是人力,这都是一个缓慢而昂贵的过程。必须检查代码的静态策略。SAST(Static Application Security Test):SAST是一种白盒测试方法,使用SonarQube、Veracode、Appscan等SAST工具从内部检查代码,以发现软件缺陷、漏洞和弱点(如SQL注入等)。这是一个快速检查过程,检查代码是否有语法错误。虽然此阶段缺少检查运行时错误的功能,但这将在稍后的阶段执行。
将附加的策略检查放到自动化管道中可以显著减少稍后在该过程中发现的错误数。
CI:build
人员:开发人员和工程师
技术:Jenkins、Bamboo CI、Circle CI、Travis CI、Maven、Azure DevOps
过程:持续集成流程的目标是接受常规的代码提交,并持续构建二进制工件。持续集成过程通过检查添加的新模块是否与现有模块配合良好,有助于更快地发现bug。这有助于减少验证新代码更改的时间。构建工具有助于编译和创建可执行文件或包(.exe、.dll,.jar等)取决于用于编写源代码的编程语言。在构建过程中,还会生成SQL脚本,然后与基础设施配置文件一起测试。简而言之,构建阶段是编译应用程序的阶段。构建过程的其他子活动包括工件存储、构建验证和单元测试。
CI:测试阶段
人员:测试人员和QA工程师
技术:Selenium、Appium、Jmeter、SOAP UI、Tarantula
过程:发布一个构建过程一系列自动化测试来验证代码的准确性。这一阶段有助于防止错误到达产品。根据构建的大小,此检查可以持续数秒到数小时。对于由多个团队提交和构建代码的大型组织,这些检查将在并行环境中运行,以节省宝贵的时间并尽早将Bug通知给开发人员。
这些自动化测试是由测试人员(或者称为QA工程师)建立的,他们已经根据用户故事建立了测试用例和场景。他们进行回归分析,压力测试,以检查与预期产出的偏差。测试中涉及的活动有健全性测试、集成测试和压力测试。这是一个非常先进的测试水平。在这里会发现开发代码的开发人员可能不知道的问题。
集成测试:
集成测试是使用Cucumber、Selenium等工具来执行的,其中各个应用程序模块作为一个组进行组合和测试,同时评估是否符合指定的功能需求。在集成测试之后,店招生成源码需要有人批准将该组中的更新集移动到下一阶段,这通常是性能测试。这个验证过程可能很麻烦,但它是整个过程的重要组成部分。核查过程中出现了一些新的解决办法。
负载和压力测试:
负载平衡和压力测试也使用自动化测试工具(如Selenium、JMeter等)来执行,以检查应用程序在高流量环境下是否稳定和性能良好。此测试通常不会在每个更新上运行,因为完整的压力测试是长期运行的。在发布主要的新功能时,将对多个更新进行分组,并完成完整的性能测试。在单个更新被转移到下一个阶段的情况下,管道可能包括金丝雀测试作为替代方案。
持续部署:bake和部署
人员:基础设施工程师、现场可靠性工程师(SRE)、运维工程师
技术:Spinnaker、Argo CD、Tekton CD
过程:测试阶段完成后,清除了标准的代码就可以部署到服务器中,在那里它们将与主应用程序集成。在部署到生产环境之前,它们将被部署到产品团队内部使用的测试/暂存或beta环境中。在将构建移动到这些环境之前,构建必须经过两个子阶段Bake和Deploy。这两个阶段都是Spinnaker固有的。
CD:Bake
Bake是指从源代码中创建一个不可变的映像实例,该实例在生产环境中具有当前配置。这些配置可能是数据库更改和其他基础设施更新之类的内容。Spinnaker可以触发Jenkins来执行这个任务,有些组织更喜欢使用Packer。
CD:部署
Spinnaker将自动将烘焙的映像传递到部署阶段。这是将服务器组设置为部署到集群的位置。与上述测试过程类似,在部署阶段执行功能相同的过程。部署首先转移到测试、阶段,最后转移到生产环境,然后进行批准和检查。整个过程由Spinnaker之类的工具处理。
CD:验证
这也是团队优化整个CI/CD流程的关键所在。因为现在已经进行了很多测试,所以失败应该很少。但此时的任何故障都需要尽快解决,以便将对最终客户的影响降到最低。团队也应该考虑自动化这部分流程。
部署到生产环境是使用部署策略(如蓝绿部署、金丝雀分析、滚动更新等)执行的。在部署阶段,将监视正在运行的应用程序,以验证当前部署是否正确或是否需要回滚。
CD:监控
人员:SRE,运维团队
技术:Zabbix、Nagios、Prometheus、Elastic Search、Splunk、贪吃虫源码pythonAppdynamics、Tivoli
过程:要使一个软件发行版具有故障安全性和健壮性,在生产环境中跟踪发行版的运行状况是至关重要的。应用程序监控工具将跟踪CPU利用率和发布延迟等性能指标。日志分析器将扫描底层中间件和操作系统产生的日志流,以识别行为并跟踪问题的来源。在生产过程中出现任何问题时,都会通知相关人员,以确保生产环境的安全性和可靠性。此外,监视阶段帮助企业收集有关新软件更改如何为收入做出贡献的信息,并帮助基础架构团队跟踪系统行为趋势和进行容量规划。
持续部署:反馈和协作工具
人员:SRE、Ops和维护团队
技术:禅道、ServiceNow、Slack、Email、Hipchat
DevOps团队的目标是更迅速、持续地发布,然后不断减少错误和性能问题。这是通过slack或电子邮件频繁地向开发人员和项目经理反馈新版本的质量和性能,并在ITSM工具中及时提高票价来实现的。通常,反馈系统是整个软件交付过程的一部分;因此交付过程中的任何更改都会频繁地记录到系统中,以便交付团队可以对其采取行动。
企业必须评估一个整体的持续交付解决方案,它可以自动化或促进上述阶段的自动化。
Kettle插件开发
工欲善其事,必先利其器。Kettle作为离线或准实时ETL的工具链,在特殊业务流程的处理中,往往需要定制化插件开发。这种情况可能出现在需要对特定数据进行特殊函数处理,现有组件无法满足数据捕获需求,或者缺乏对数据重复消费的处理。因此,定制开发流程处理组件,实现数据管理、验证、转换和特定数据源抽取,成为解决此类问题的关键。
以splunk查询插件为例,其开发遵循Kettle转换插件的基本框架。该框架由四个关键类构成,分别扮演不同的角色。首先是步骤类(SplunkInput),继承自BaseStep父类,并实现StepInterface接口,是数据实际处理的位置。数据类(SplunkInputData)继承自BaseStepData,实现StepDataInterface接口,用于存储数据,每个执行线程拥有唯一的实例。对话框类(SplunkInputDialog)继承自BaseStepDialog,实现StepDialogInterface接口,用于组件步骤与开发者之间的交互配置。元数据类(SplunkInputMeta)继承自BaseStepMeta,实现StepMetaInterface接口,保存和序列化步骤实例的项目源码怎么生成配置信息,跟踪开发者设置的属性。
在展现配置方面,通过注解或plugin.xml实现插件在Kettle可视化UI工作台中的显示效果。配置项包括ID、名称、描述、图标、类别等,帮助开发者快速识别和理解插件功能。
开发过程中,步骤类需要实现初始化、释放资源和处理数据流的方法,如检查splunk连接状态、执行数据转换等。数据类在执行线程中提供数据存储空间,确保独立运行环境。对话框类负责输入属性监听、配置数据初始化、连接校验及结果字段预览等功能。元数据类则跟踪输入输出设置,提供参数序列化和扩展验证检查,确保步骤如何处理数据流行的信息清晰。
总体而言,Kettle自定义插件开发流程清晰,通过遵循基本框架和配置规则,开发者可以高效地实现复杂数据处理需求。如需深入了解源码、自定义插件集成或在开发过程中遇到问题,欢迎关注公众号"游走在数据之间",加入QQKettle交流群,获取更多支持和交流。
SecWiki周刊(第期)
本期SecWiki周刊聚焦于安全领域,特别强调了在Windows/Linux操作系统中的提权exp技术,以及如何利用这些技术进行安全技能提升。文章还探讨了破解路由器、物理路径搜索工具、正则表达式应用、穿越边界技术、nessus插件的更新,以及白帽子相关的法规和标准。内容涵盖从基础安全到高级渗透技术,包括ThinkPHP源码审计、挂马与检测、钓鱼技术、Nginx配置优化、信息收集、反序列化等关键领域。此外,文章还涉及了漏洞利用工具、白帽法规、Nessus插件经验分享、白帽法规、ThinkPHP源码审计、getsploit等工具的使用,以及网站物理路径搜索、边界穿越、安全加固规范等技术。
在安全资讯部分,文章提到了多个重要事件和报告,如WannaCry病毒的持续影响、NSA关于俄罗斯黑客活动的报告、FBI悬赏通缉的七大网络罪犯名单、中国公布的首批接受安全审查的网络设备名单等。安全技术板块则深入探讨了内核exploit、安全技能树、路由器破解方法、网站物理路径搜索工具、正则学习、黑客入侵应急分析、基线检查表与安全加固规范、边界穿越技巧、高性能分布式爬虫工具(AZSpider)、Nessus插件更新经验、白帽子法规、ThinkPHP源码审计、漏洞搜索与下载工具(getsploit)、渗透技巧与互联网挂马检测、钓鱼方法分析、内核级防火墙构建、OWASP检查列表、CTF比赛中关于ZIP的总结、Nginx配置安全案例、漏洞修复方案等。
文章还涉及到渗透技巧、程序降权启动、互联网挂马检测技术、自动化域渗透工具(DeathStar)、时间定位漏洞利用的分析、macOS应用HTTPS流量监听、伪基站监控系统搭建、两种钓鱼方法、大数据与机器学习的Web异常参数检测系统、Mac逆向工程、威胁情报市场分析、工业物联网安全态势报告、网络安全会议视频、病毒分析报告、HERCULES绕过杀软技术、安全赛事官方总结、服务端注入问题、splunk机器数据分析、WebKit漏洞利用、HTA和Scriptlet文件处理器漏洞、沙盒绕过技术、MOTS攻击技术分析、蓝牙安全研究、安卓恶意软件分析、内核驱动解包、V8 OOB写入漏洞、Python SOCKS4反向代理、通用安全事件格式(sigma)等技术与方法。
SecWiki周刊旨在为安全领域专业人士和爱好者提供最新的资讯、专题和导航,通过高质量的聚合与评论,帮助读者深入了解和掌握安全领域的最新动态和最佳实践。
开源动态数据管理框架Apache Calcite
随着大数据领域众多处理系统的崛起,如实时流处理的Flink和Storm,文本搜索的Elastic,以及批处理的Spark和OLAP系统Druid,组织在选择定制数据处理系统时面临着两个关键问题。这些问题的解决者便是Apache Calcite,一个开放源码的动态数据管理框架,由Apache软件基金会支持,使用Java构建。
Calcite的核心是一个全面的查询处理系统,它涵盖了数据库管理系统中除数据存储与管理之外的诸多功能,包括查询执行、优化和查询语言等。它并非一个完整的数据库,而是由多个组件组成,如SQL解析器、查询优化器和关系表达式构建API,旨在在多个数据存储和处理引擎之间提供中介服务。例如,它与Apache Hive、Drill、Storm和Flink等系统结合,提供SQL支持和优化。
尽管Calcite本身不直接处理数据存储和处理,但其架构优势在于它的灵活性和可扩展性。它允许系统通过SQL接口进行交互,即使这些系统本身没有内置优化器。Calcite的SQL解析器和验证器能将SQL查询转换为关系运算符树,适应外部存储引擎。通过Planner Rule,系统可以自定义优化规则,增强查询性能。
在使用Calcite时,开发人员需要先定义数据模型和表,然后通过ModelHandler和虚拟连接对象生成查询计划。例如,当进行Splunk和MySQL的Join查询时,Calcite会通过优化规则调整查询顺序,提升性能。数据源适配器是Calcite架构中的重要组成部分,它定义了如何整合不同数据源。
查询优化器在处理联接Join和表大小等问题时,面临挑战,但Calcite通过灵活的规则和策略提供了解决方案。它支持左深树和浓密树两种连接策略,以找到最佳的联接顺序,从而提高查询效率。
总的来说,Apache Calcite作为一款可插拔的、动态和灵活的查询处理框架,为处理异构数据源的查询提供了强大的支持,特别是其动态查询优化功能,是其最受欢迎的特点之一。
种值得关注的大数据技术
尽管Apache Hadoop可能不再像以前那样占主导地位,但要谈论大数据几乎是不可能的,而无需提及用于分布式处理大数据集的开源框架。Forrester预测,未来两年内%的大型企业将采用它(Hadoop和Spark等相关技术)进行大数据分析。
多年来,Hadoop已成长为涵盖相关软件的整个生态系统,许多商业大数据解决方案都基于Hadoop。实际上,Zion Market Research预测,到年,基于Hadoop的产品和服务市场将继续以%的复合年增长率增长,届时其价值将达到.4亿美元,高于年的.9亿美元。
Hadoop的主要供应商包括Cloudera, Hortonworks和MapR,领先的公共云都提供支持该技术的服务。
Apache Spark是Hadoop生态系统的一部分,但是它的使用变得如此广泛,以至于值得拥有自己的一类。它是用于在Hadoop中处理大数据的引擎,其速度比标准Hadoop引擎MapReduce快一百倍。
在《AtScale 大数据成熟度调查》中,有%的受访者说他们已经在生产中部署了Spark,还有%的受访者在开发中有Spark项目。显然,对该技术的兴趣在不断增长,并且许多具有Hadoop产品的供应商还提供基于Spark的产品。
R是另一个开放源代码项目,是一种旨在处理统计信息的编程语言和软件环境。它是数据科学家的宠儿,由R基金会管理,可根据GPL 2许可获得。许多流行的集成开发环境(IDE) ,包括Eclipse和VisualStudio,都支持该语言。几种对各种编程语言的流行度进行排名的组织表示,R已经成为世界上最受欢迎的语言之一。
为了更轻松地访问其庞大的数据存储,许多企业正在建立数据湖。这些是巨大的数据存储库,可以从许多不同的来源收集数据并将其以自然状态存储。数据湖与数据仓库不同,数据仓库也从不同的源收集数据,但是对其进行处理并对其进行结构化以进行存储。在这种情况下,湖泊和仓库的隐喻是相当准确的。如果数据像水,那么数据湖是自然的,没有像水体一样经过过滤,而数据仓库更像是存储在架子上的水瓶的集合。
随着大数据趋势的发展,NoSQL数据库变得越来越流行。NoSQL数据库提供存储非结构化数据并提供快速性能的功能,尽管它们没有提供与传统关系数据库管理系统(RDBMS)相同的一致性级别。NoSQL数据库的流行推动了其市场增长,据联合市场研究公司(Allied MarketResearch)称,到年, NoSQL市场的价值将达到亿美元。
预测分析是大数据分析的子集,它试图根据历史数据预测未来的事件或行为。它利用数据挖掘,建模和机器学习技术来预测接下来会发生什么。近年来,人工智能技术的进步极大地提高了预测分析解决方案的功能。许多供应商如Microsoft, IBM, SAP, SAS, Statistica, RapidMiner,KNIME等都提供了预测分析解决方案。
在任何计算机系统中,内存(也称为RAM)都比长期存储快几个数量级。如果大数据分析解决方案可以处理存储在内存中的数据,而不是存储在硬盘驱动器上的数据,那么它的执行速度将大大提高。而这正是内存数据库技术所做的。许多领先的企业软件供应商,包括SAP, Oracle, Microsoft和IBM,现在都提供内存数据库技术。
大数据安全解决方案是企业日益关注的重大问题。安全是与大数据相关的第二大关注领域。最流行的大数据安全解决方案类型包括身份和访问控制(由%的受访者使用),数据加密(%) 和数据隔离(%) 。数十家供应商提供大数据安全解决方案,并且ApacheRanger (Hadoop生态系统的一个开源项目)也吸引了越来越多的关注。
数据治理是与安全性概念密切相关的话题。数据治理是一个广泛的主题,涉及与数据的可用性,可用性和完整性有关的所有过程。它提供了基础,可确保用于大数据分析的数据准确,适当,并提供审计跟踪,以便业务分析人员或执行人员可以查看数据的来源。
在数据科学家和其他大数据专家供不应求的情况下,并要求高薪,许多组织正在寻找大数据分析工具,以使业务用户能够自助满足自己的需求。Tableau, Microsoft, IBM, SAP, Splunk, Syncsort, SAS, TIBCO, Oracle等多家商业智能和大数据分析供应商已在其解决方案中添加了自助服务功能。
尽管人工智能(AI) 的概念与计算机的历史差不多,但该技术仅在过去几年才真正可用。在许多方面,大数据趋势推动了AI的发展,特别是在该学科的两个子集中:机器学习和深度学习。
流分析是一个圣杯,对于组织来说,具有分析数据流能力的流分析可以立即或尽可能接近地提供见解。IBM,Software AG, SAP, TIBCO, Oracle,DataTorrent, SQL stream, Cisco, Informatica等供应商提供了承诺流分析功能的产品。
边缘计算系统没有将数据传输到集中式服务器进行分析,而是在网络边缘非常接近创建数据的位置分析数据。边缘计算系统的优势在于,它减少了必须通过网络传输的信息量,从而减少了网络流量和相关成本。边缘计算系统的发展引起了人们的关注,被认为是“下一件大事”。
区块链技术是比特币数字货币基础上的分布式数据库技术,也是前瞻性分析师和风险投资家的最爱。区块链数据库的独特之处在于,一旦写入数据,事后便无法删除或更改。高度安全性使其成为银行,保险,医疗保健,零售等敏感行业中大数据应用程序的绝佳选择。IBM,AWS, Microsoft和多家初创公司已推出基于区块链技术的实验性或入门性解决方案。
规范分析为公司提供建议,帮助他们实现预期的结果。尽管目前很少有具有这些功能的产品,但这是组织开始体验预测分析的好处之后的下一个大投资领域。
DevSecOps之应用安全测试工具及选型
应用安全测试(AST)工具在构建安全软件开发过程中至关重要,帮助企业快速检测并修复潜在的安全问题。%的软件漏洞源自应用层,使用AST工具可以在软件开发生命周期中预防这些问题,提升应用程序的可靠性和安全性,降低安全风险。选择合适的AST工具成为IT领导、开发人员和工程师的重要任务,以应对应用安全测试的多样性。
AST工具主要分为静态应用程序安全测试(SAST)、动态应用程序安全测试(DAST)、交互式应用程序安全性测试(IAST)以及软件构成分析(SCA)。
静态应用程序安全测试(SAST)通过分析或检查源代码或字节码,专注于发现代码中可能引发安全漏洞的弱点,如缓冲区溢出、身份认证和授权等。SAST工具主要用于编码、构建和开发阶段,侧重于代码级别的安全检测。
动态应用程序安全测试(DAST)则侧重于从系统外部接口测试应用软件,通过模拟黑客行为来发现安全性问题。DAST工具不需要访问源代码,通过网络连接测试应用的客户端渲染,其误报率相对较低,适用于Web应用或API的安全测试。
交互式应用程序安全性测试(IAST)结合了SAST和DAST的优点,通过代理嵌入应用程序内部,监控网络内容、堆栈等信息,以发现动态行为下的安全漏洞。IAST工具能够提高安全性测试的效率,定位到发生漏洞的代码行。
软件构成分析(SCA)专注于识别开发人员使用的源码、模块、框架和库,以检测应用系统的组件及其构成和依赖关系中的安全漏洞或潜在的许可证授权问题,有助于提前排查风险,加快确定优先级和补救工作。
应用安全测试编排(ASTO)工具通过自动化和编排,简化了在复杂网络和安全场景下的安全运维工作。这些工具可以与安全数据分析工具集成,如Splunk、QRadar等,通过自动化脚本进行安全事件响应。
ASTO工具将软件开发生命周期内的安全工具整合起来,特别在DevSecOps中发挥关键作用。应用程序漏洞关联(AVC)工具则将各种安全测试数据源整合到一个中央工具中,实现对安全缺陷的分析、优先级排序和协作处理。
在选择安全工具时,应考虑工具适用的阶段、领域和业务需求。安全工具的选择不仅依赖于技术特性,还应关注工具如何融入现有流程并得到有效的执行。选择合适的安全工具需要综合考虑工具的成熟度、实现难度、成本效益以及是否符合企业的安全策略和目标。
综上所述,AST工具的合理选择和应用是构建安全软件开发流程的关键,有助于在开发、测试和部署阶段及时发现并修复安全漏洞,提高软件系统的整体安全性。在持续跟踪和研究中,不断优化安全工具的选择和应用策略。