爱思维尔

系统与软件杂志

第181卷,2021年11月,111046年
系统与软件杂志

微服务系统中安全讨论的自动识别:工业调查与实验

https://doi.org/10.1016/j.jss.2021.111046获取权限和内容

摘要

缺乏对微服务特定安全挑战和解决方案的认识和知识,通常会导致在微服务系统开发。我们声称,识别和利用分散在现有微服务系统中的安全讨论可以部分地弥补这一差距。我们将安全讨论定义为开发人员讨论中的一段,包括与安全有关的设计决策、挑战或解决方案。我们首先调查了67名从业人员,发现保护微服务系统是一项独特的挑战,访问安全讨论对制定安全决策非常有用。调查还证实了可以自动识别此类安全讨论的潜在工具的有用性。我们开发了15个机器/深度学习模型来自动识别安全讨论。我们将这些模型应用于由4813个安全讨论和12464个非安全讨论组成的手动构建的数据集。我们发现所有模型都能有效地识别安全讨论:平均准确率为84.86%,召回率为72.80%,F1评分为77.89%,AUC为83.75%,G均值为82.77%。DeepM1,一个深度学习模型,表现最好,在所有指标中达到84%以上,并且显著优于三个基线。最后,从业人员从验证调查中收集的反馈显示,DeepM1确定的安全性讨论在实践中有很好的应用前景。

介绍

微服务体系结构(MSA)作为软件设计的最新趋势之一,旨在将可扩展的软件系统开发为可独立部署的小型服务(即微服务)的集合(Dragoni等人,2017年,Fowler和Lewis,2014年)。微服务可以有多种不同的解释,关于它们的特征(例如,微服务的规模)几乎没有共识(Jamshidi等人,2018)。然而,微服务的特点通常是提供有限数量的功能,通过轻量级消息传递方法(如HTTP api)彼此通信,围绕自主业务能力构建,并在高度隔离状态下进行维护和测试(Dragoni等人,2017年,Fowler和Lewis,2014年,Newman,2015年)。更快的部署、改进的可扩展性和更大的自治性是微服务系统(采用MSA风格的系统)的三大优势(Jamshidi等人,2018)。

在过去的几年里,一直在对MSA的不同方面进行研究。大量文献报告了从整体岩迁移到MSA的迁移技术(例如,Balalaie et al.,2016,Taibi et al.,2017a)(Di Francesco et al.,2019)。其他人研究微服务系统的测试和监控策略(例如,Heorhiadi等人,2016年,Heinrich等人,2017年)。另一项研究侧重于组织文化和结构的必要变化,以采用MSA风格(例如,Jamshidi等人,2018年,Haselboöck等人,2018年)。

然而,MSA中的安全仍然是一个开放的问题,并且没有得到足够的研究关注(Dragoni等人,2017年,Di Francesco等人,2019年,Waseem等人,2020年)。与MSA风格相关的安全问题很多,在传统的整体式建筑和面向服务的架构中找不到或关注的更少(Pahl and Donini,2018,Yarygina and Bagge,2018,Yu et al.,2019,Esposito et al.,2016)。它们的范围从单个微服务之间建立信任的需要(因为单个受损服务可能会恶意地影响整个系统),到微服务可以通过不同的技术和工具(例如容器)开发和部署,因此受到攻击的可能性越来越大,以更大的难度来保证运行中的数十个甚至上百个微服务的安全。此外,由于MSA风格是一种新的范式,且仍在不断发展,因此在设计和实施安全微服务系统方面,从业人员和组织之间存在知识差距(Ghofrani和Lübke,2018年,Zimmermann,2017年,Pereira Vale等人,2019年,Nadareishvili等人,2016年)。关于用于开发和部署微服务的(新)技术和工具(例如容器),存在着更重要的未知因素(McAfee,2018,Scott,2018,Zhang等人,2019a)。这是因为业界对这些技术和工具的潜在安全能力以及为安全目的配置这些技术和工具并解决其安全漏洞的最佳实践存在很多困惑(Bogner等人,2019年,Knoche和Hasselbring,2019年,Baškarada等人,2020年)。

在微服务系统中,缺乏安全意识和安全知识,往往会导致微服务系统开发中的安全决策不充分。这可能成为软件行业的一个实际问题,因为越来越多的组织已经或计划使用这种架构风格来实现软件解决方案的现代化或开发新的应用程序(Di Francesco et al.,2019)。我们的立场(部分)解决这个差距是自动识别和利用现有微服务系统的安全讨论。我们定义安全性讨论作为“开发人员讨论(对话)中的一段,包括与安全相关的设计决策、挑战或解决方案”. 有人认为,访问和学习过去的设计讨论和决策(如安全决策)有助于做出更好的设计决策(例如,Zimmermann,2017年,Pereira Vale等人,2019年,Capilla等人,2016年,Viviani等人,2019年)。然而,我们认为,从非微服务系统收集的安全讨论对于提高微服务从业人员对微服务系统安全的认识和认识可能是不实用的。为了证明我们的说法,我们首先需要确保微服务系统的安全是一个独特的挑战。这表明微服务开发者之间的安全讨论不同于其他类型的软件系统。然后,我们需要确认这样的安全讨论是否有助于保护微服务系统(例如,提高从业人员对微服务特定安全解决方案的认识)。

这样的安全讨论可以在商业和开源微服务系统的问题跟踪系统中找到。堆栈溢出帖子可以作为另一个源来识别微服务系统上的安全讨论。研究表明,这些构件包括广泛的信息,例如用户故事、需求、设计决策、设计解决方案、设计原理、缺陷报告等(例如,Bhat等人,2017年,Viviani等人,2019年,Tsay等人,2014年,Lopez等人,2019b)。因此,问题跟踪系统和堆栈溢出站是微服务从业人员共享和交流有关安全问题、实践、设计决策的知识并证明其安全决策的理想场所(Palacio等人,2019年,Lopez等人,2019b)。然而,手动识别安全讨论对于实践者来说是一个挑战,因为它容易出错,对实践者来说需要大量的时间,并且需要大量的领域专业知识(Bettaieb et al.,2019,Li and Chen,2020)。因此,需要一种自动化的方法来识别这些数据源中的安全内容。

在本文中,我们首先确定了GitHub基于MSA风格设计的十个开源项目。然后我们进行了一项由67名微服务从业者完成的在线调查,征求他们对微服务系统安全性的看法。调查参与者证实,保护微服务系统对他们来说是一个独特的挑战。他们还发现,以前从现有的微服务系统中收集的安全讨论对做出安全决策很有用。根据调查结果,我们开发了12个机器学习(ML)和3个深度学习(DL)模型,以自动识别微服务开发人员讨论(GitHub问题和堆栈溢出帖子)中的安全讨论。为了评估ML和DL模型(以下简称学习模型)的性能,我们手工构建了17277个段落的数据集并对其进行了标记。17277段,包括4813个安全讨论和12464个非安全讨论,是从两个数据源收集的:1692个问题讨论来自五个采用MSA风格的开源项目,以及498个带有“微服务”和“安全”标签的堆栈溢出帖子。实验结果表明,所有的学习模型都是有希望的,平均准确率为84.86%,召回率为72.80%,F1分数为77.89%,AUC(接收器工作特性曲线下面积)为83.75%,G均值为82.77%。在15个学习模型中,DeepM1(一个DL模型)表现最好,达到了86.73%的准确率、84.25%的召回率、85.47%的F1分数、89.63%的AUC和89.07%的G-mean。DeepM1的性能也超过了三个最先进的基线,改进幅度从1.018不等×至3.756×在所有指标中。

我们进行了另一项调查(验证调查),以证明DeepM1的结果在实践中的有用性和可操作性。一般来说,68%-78%的验证调查受访者认为DeepM1检测到的安全讨论在安全微服务系统的设计和开发中有七个实际应用。值得注意的应用是:检测到的安全讨论可以帮助他们在未来做出明智的安全决策,或者改进现有的次优安全决策,并提供提示/线索,以更快地定位微服务系统中的关键问题(如安全漏洞、安全错误等)。

本文的主要贡献是:(一)我们对微服务系统中的安全问题有了更好的理解。(二)这是开发ML和DL模型以区分微服务系统开发人员讨论中的安全讨论和非安全讨论的第一个工作。(三)我们构建了一个包含4813个微服务安全讨论和12464个非安全讨论的数据集。(四)我们免费在线发布本文中使用的模型和数据集的实现(Rezaei Nasab等人,2021年)。

纸张组织:在第2节中,我们提供了一个激励方案。第3节描述了从GitHub定位基于MSA的项目并构建安全讨论数据集的过程。第四部分介绍了我们的研究方法,包括调查和实验。第5节报告了调查结果。第6节回顾了调查结果,第7节报告了有效性受到的威胁。第九部分总结全文,并对未来的工作进行展望。

节代码段

激励情景

鲍勃为一家在不同领域开发各种软件系统的公司工作。几个月前,Bob作为一名高级软件工程师参与开发一个电子商店web应用程序(称为eShopOnContainers项目)1)在公司,这是基于MSA风格设计的。最近,该公司中标了将大型单片系统移植到MSA风格(我们称之为C项目)的投标。考虑到鲍勃参与了eShopOnContainers

安全讨论数据集

我们的目标是(部分)弥合从业人员之间在保护微服务系统方面的知识差距,方法是从以前的微服务开发人员讨论中自动识别安全性讨论。为此,我们需要创建一个安全讨论的数据集。正如引言部分所讨论的,安全性讨论可以在商业和开源系统的问题跟踪系统和堆栈溢出帖子中找到。商业软件系统的安全性探讨

研究设计

本研究的目的是帮助减少从业人员在保障微服务系统安全方面的知识差距。为此,我们正式提出了三个研究问题(RQ):

理论基础.目标第一季度收集软件从业者对微服务系统安全性的看法。它还旨在认识到,在新的微服务系统开发期间,从过去的微服务系统收集到的安全讨论是否有助于做出安全决策。第一季度通过调查得到答案

调查结果

本节首先对初步调查结果进行报告回答第一季度(第5.1节)。然后,我们提出实验的结果来回答这个问题第二季度(第5.2节)。最后,我们报告了验证调查的结果以回应第三季度(第5.3节)。

讨论

本节根据我们的主要发现和对开放式问题回答的分析,讨论了对从业者和研究人员的启示:我们的方法有哪些改进可以进一步帮助开发安全的微服务系统?”.

仍然需要更好的支持。MSA风格的安全性具有挑战性(经初步调查证实),这给所有微服务从业者以及

有效性威胁

本节列出了与我们的研究方法和发现有关的对有效性的可能威胁,以及针对这些威胁采取的缓解策略。我们将威胁分为三类:内部威胁、构造威胁和外部威胁(Wohlin等人,2012年)。

相关工作

据我们所知,目前还没有研究使用学习模型来识别微服务系统的开发人员讨论(例如GitHub问题和堆栈溢出帖子)中的安全信息。我们总结了讨论微服务系统中安全支持的研究(第8.1节),并讨论了使用基于ML和DL的模型来识别文本软件构件中的安全内容的研究(第8.2节)。在第8.3节中,我们讨论了我们的研究与

结论和今后的工作

在设计和实现安全的微服务系统方面,从业者和组织之间存在知识差距。这项研究试图(部分)弥合这一差距,通过自动识别先前微服务开发人员讨论中的安全性讨论。我们首先对67名微服务从业者进行了初步调查,了解他们对微服务系统安全性的看法。初步调查结果显示,获得微服务

信贷作者出资声明

阿里·雷扎伊·纳萨布:概念化,调查,写作-原稿,可视化。莫吉塔巴·沙欣:概念化,调查,写作-初稿,写作-审查和编辑,可视化,监督,项目管理。彭亮:概念化,调查,资源,写作-审查和编辑,监督,资金获取。穆罕默德·埃桑·巴西里:概念化,调查,写作-评论和编辑,可视化,监督。赛义德·阿里·霍塞尼

竞合利益声明

作者声明,他们没有已知的竞争性的经济利益或个人关系,可能会影响本文报告的工作。

致谢

我们要感谢所有参与调查的从业者。这项工作部分由国家重点研发项目批准号。2018年YFB1402800.

阿里·雷扎伊·纳萨布是武汉大学计算机科学学院客座研究员。他目前的研究主要集中在软件工程、机器学习和深度学习上。

工具书类(122个)

  • 巴西里M、 E。等等。

    ABCDM:一个基于注意的双向CNN-RNN情绪分析深度模型

    未来一代。计算机。系统。

    (2021年)
  • 巴西里M、 E。等等。

    基于深度学习和机器学习融合的药品评论情感分类新方法

    知道-基于系统。

    (2020年)
  • 阿布达卡雷姆R。等等。

    一种改进CI跳过提交检测的机器学习方法

    IEEE传输。软。工程。

    (2020年)
  • 阿布哈亚美国。等等。

    文本规范中需求的自动划分:一种基于机器学习的方法

    帝国。软。工程。

    (2020年)
  • 艾哈迈瓦德M。等等。

    可伸缩和安全的微服务(de)组合的需求协调

  • 阿洛玛E、 A。等等。

    大海捞针:无障碍用户评论的自动识别

  • 阿尼切M。等等。

    有监督机器学习算法在预测软件重构中的有效性

    (2020年)
  • 巴拉莱A。等等。

    微服务架构支持devops:迁移到云本地架构

    IEEE软件。

    (2016年)
  • L。等等。

    GitHub项目长期贡献者预测的大规模研究

    IEEE传输。软。工程。

    (2019年)
  • 巴西里M、 E。等等。

    基于双向LSTM深度模型的在线医生评论极性检测

  • 巴斯卡拉达美国。等等。

    构建微服务:实践机遇与挑战

    J、 计算机。信息系统。

    (2020年)
  • 贝塔伊布美国。等等。

    基于机器学习的安全控制识别决策支持

  • 井底钻具组合M。等等。

    从问题管理系统中自动提取设计决策:一种基于机器学习的方法

  • 美国。等等。

    Python的自然语言处理:用自然语言工具箱分析文本

    (2009年)
  • 主教C、 M。

    模式识别与机器学习

    (2006年)
  • 博涅J。等等。

    工业微服务:对技术、特性和软件质量的洞察

  • 布斯奎特O。等等。

    统计学习理论导论

  • 布雷曼L。

    随机森林

    机器。学习。

    (2001年)
  • 布朗利J。

    机器学习掌握

    (2014年)
  • 卡特N。等等。

    三角剖分在定性研究中的应用

    肿瘤学。努斯。论坛

    (2014年)
  • T。等等。

    Xgboost:一个可扩展的树提升系统

  • 科洛贝尔R。等等。

    自然语言处理(几乎)从头开始

    J、 马赫。学习。物件。

    (2011年)
  • 科尔特斯C。等等。

    支持向量网络

    机器。学习。

    (1995年)
  • 迪索波A。等等。

    用户会在我的应用程序中更改什么?总结应用程序评论以推荐软件更改

  • 德拉戈尼N。等等。

    微服务:昨天、今天和明天

  • 埃斯波西托C。等等。

    以微服务的形式在云中交付软件的挑战

    IEEE云计算。

    (2016年)
  • 福勒M。等等。

    微服务是这个新的体系结构术语的定义

    (2014年)
  • 甘内美国。等等。

    单词嵌入评价与组合

  • 戈夫拉尼J。等等。

    微服务体系结构的挑战:实践现状调查

  • 格拉泽B、 G。等等。

    扎根理论的发现;定性研究策略

    努斯。物件。

    (1968年)
  • 戈塞娃·波普斯托贾诺娃K。等等。

    基于监督和非监督分类的文本挖掘识别安全相关缺陷报告

  • 古西奥斯G。等等。

    从GitHub中挖掘软件工程数据

  • 古力A。等等。

    Keras深度学习

    (2017年)
  • Z。等等。

    学习仅使用漏洞描述来预测软件漏洞的严重性

  • 哈塞尔博克美国。等等。

    微服务设计领域的专家访谈研究

  • 哈塔H。等等。

    960万条源代码注释链接:目的、进化和衰退

  • 海因里希R。等等。

    微服务的性能工程:研究挑战与方向

  • 霍尔希亚迪五。等等。

    Gremlin:微服务的系统弹性测试

  • C、 -W。等等。

    支持向量分类实用指南技术报告

    (2003年)
  • 艾德H。等等。

    基于稀疏正则化的ReLU激活CNN学习的改进

  • 阿里·雷扎伊·纳萨布是武汉大学计算机科学学院客座研究员。他目前的研究主要集中在软件工程、机器学习和深度学习上。

    莫吉塔巴·沙欣是澳大利亚莫纳什大学的研究员。他于2018年在澳大利亚阿德莱德大学完成计算机科学博士学位。此前,他曾是伊朗伊斯兰阿扎德大学尼利兹分校计算机工程系讲师和研究员。他目前的研究主要集中在软件架构、经验软件工程、DevOps、持续交付和部署以及软件工程中的人为因素。他在软件工程领域(如EMSE、JSS、IJIM、ESEM、WICSA、ECSA和EASE)的科学期刊和会议上撰写/合著了25篇同行评审文章。更多详情请访问https://mojtabashahin.wordpress.com.

    彭亮武汉大学计算机科学学院软件工程教授。他的研究兴趣涉及软件架构和需求工程领域。他是《计算机科学前沿》的年轻副主编。他在同行评议的国际期刊、会议和研讨会论文集以及书籍上发表了100多篇文章。

    穆罕默德·埃桑·巴西里是伊朗沙赫雷科德大学的助理教授。他的研究兴趣是机器学习、深度学习和数据挖掘。

    赛义德·阿里·霍塞尼·拉维兹是武汉大学计算机科学学院客座研究员。他目前的研究主要集中在软件工程、机器学习和深度学习上。

    哈拉杰扎德是澳大利亚莫纳什大学的研究员。她的研究领域是软件工程、数据分析和机器学习。

    穆罕默德·瓦西姆武汉大学计算机科学学院博士研究生。在攻读博士学位之前,他曾在巴基斯坦国际伊斯兰大学计算机科学和软件工程系担任讲师和教学研究助理。他在巴基斯坦国际伊斯兰大学获得软件工程硕士学位。他目前的研究兴趣包括软件架构、微服务架构和DevOps。

    纳赛里胺是伊朗Sirjan技术大学的讲师。她的研究领域是人工智能、机器视觉和机器学习。

    编辑:亚历山大·查齐格奥尔乔。

    查看全文