在Devops时期安全和合规尤为主要,为了保持持续高质量的软件开拓和交付,通过在Devops的各个环节自动进行安全审计和检讨是Devops工程能否顺利开展的关键,本日虫虫给大家先容一个免费开源的代码审计安全工具SonarQube,先容其功能、优点,事理和架构,以及怎么大略利用以及在K8S中安全的过程。
概述SonarQube是一种代码质量担保工具,可网络和剖析源代码,并供应项目代码质量报告。SonarQube由SonarSource开拓并开源并免费供应(收费的企业版),可以用于持续检讨代码质量,通过静态代码剖析实行自动审查,以检测20多种编程措辞(包括 C、C++、Java、Javascript、PHP、GO、Python等)的缺点、代码非常和安全漏洞。SonarQube结合了静态和动态剖析工具,并能够随着韶光的推移持续扫描项目的代码质量。从细微的样式选择到设计缺点,都可以通过 SonarQube来进行检讨和评估。
SonarQube可以和用户的开拓事情流程集成,以实现跨项目分支和拉取要求的持续代码检讨。SonarQube供应运用程序运行状况的详细报告并突出显示新引入的问题,为用户供应了丰富的可搜索代码历史记录,以剖析代码涌现问题的位置,并确定是否存在样式问题、代码失落败、代码重复、缺少测试覆盖率或代码过于繁芜。能从不同方面剖析源代码,并逐层钻取代码,将模块级别下移到类级别,每个级别都会天生指标值和统计数据,以揭示源代码中须要改进的问题区域。

Sonarqube还确保代码可靠性、运用程序安全性,并通过使代码库干净且可掩护来减少技能债务。SonarQube还供应CI/CD集成,并在代码审查期间通过分支剖析和拉取要求实时供应反馈。
紧张功能Sonarqube利用两种方法进行代码安全审计升级:静态代码剖析或动态代码剖析。
动态代码剖析
动态代码剖析依赖于研究代码在实行过程中的行为办法。目的是在程序运行时创造程序中的缺点,而不是通过离线反复检讨代码。动态代码剖析支持进行以下各项剖析:
代码覆盖率:打算测试套件对一段代码进行了多少测试。
内存缺点检测:检讨是否发生内存泄露或缺点。
故障定位:将有bug的代码定位到详细位置。
不变推理:不雅观察程序打算的值,然后报告在不雅观察到的实行中为true的属性,并且这可能在所有实行中为true。
安全剖析:检测安全问题。
并发缺点:动态利用运行时缺点检测来暴露毛病,例如竞争条件、非常、资源和内存泄露以及安全攻击漏洞
程序切片:包括将程序减少到仍能产生所选行为的最小形式。
性能剖析:在运行时动态跟踪软件运用程序并捕获可用于剖析和识别性能不佳缘故原由的数据。
静态代码剖析
静态代码剖析是在不实行任何代码的情形下完成的。它通过白盒剖析的方法扫描程序源代码以来搜索可能的缺点用法和不良编码实践的算法和技能的凑集。这是通过编译器缺点和运行时调试技能来完成的。静态代码剖析也被认为是自动化代码审查过程的一种方法。静态代码剖析涉及的任务可以分为:
检测程序中的缺点。
关于利用格式化程序格式化代码的建议。
指标打算,它可以给出关于代码的好坏的评级。
静态代码剖析的同类盛行工具有Checkstyle、PMD和FindBugs。
SonarQube优点创建SonarQube的动机源于掩护代码质量的须要,这对付开拓可靠、可掩护和安全的软件至关主要。在SonarQube等工具涌现之前,检讨代码是否存在潜在缺点、漏洞以及掩护编码标准常日是手动过程,随意马虎涌现人为缺点并且非常耗时。
随着软件项目规模和繁芜性的增长,跟踪和管理代码质量变得越来越困难。SonarQube通过自动化的思想来持续监控代码的技能债务以及影响代码可掩护性、性能和安全性的问题。通过自动化代码审查过程,SonarQube帮助开拓职员:
尽早创造并修复问题:在开拓周期的早期创造缺点和漏洞可以节省韶光和资源,并防止问题影响莅临盆。
实行编码标准:它确保团队遵守一套编码标准和实践,从而产生更具可读性和可掩护性的代码。
跟踪技能债务:它供应了对技能债务的洞察,并帮助团队确定重构事情的优先级。
提高代码安全性:有助于识别安全热点和漏洞,从而减少安全漏洞的机会。
教诲开拓职员:它还可以作为开拓职员的教诲工具,供应有关最佳实践的反馈并辅导他们如何编写更好、更简洁的代码。
入门SonarQube有几个级别,这取决希望软件实行的功能以及您希望利用该软件进行的开拓级别。
社区版:在CI/CD中采代替码质量的出发点
开拓职员版:最大的运用程序安全性以及SonarQube跨分支机构和 RS的代价
企业版:管理运用程序组合,在企业级别实当代码质量和安全性
数据中央版:环球支配的高可用性
要在本地安装SonarQube来剖析项目,有两种不同的方法:利用zip安装包,或利用docker镜像
利用Zip压缩包SonarQube
从此处下载SonarQube下载社区版zip文件。
将其解压到须要安装的目录,比如d:/sonarqube 或/opt/sonarqube
启动SonarQube做事器:
在Windows版本:D:\sonarqube\bin\windows-x86-64\StartSonar.bat
在其他操作系统上:/opt/sonarqube/bin/[OS]/sonar.sh console
利用Docker安装
在Docker Hub上找到您想要利用的SonarQube社区版本
然后,可以通过运行一键命令启动做事器:
docker run -d --name sonarqube -p 9000:9000 <镜像名称>
然后就可以通过浏览器localhost:9000访问(用户和密码均为admin)
利用SonarQube剖析项目
登录sonarqube后,要剖析项目,可通过以下步骤操作:
单击创建新项目按钮
当讯问希望如何创建项目时,请选择手动。
为的项目供应项目密钥和显示名称,然后单击“设置”按钮。
下在“供应令牌”,选择“天生令牌”。为令牌命名,单击“天生” 按钮,然后单击 连续”。
下选择项目的紧张措辞在对项目运行剖析,然后按照解释剖析项目。在这里,将下载并在代码上实行扫描程序(如果利用的是Maven或Gradle,则会自动下载扫描程序)。
成功剖析代码后,将在 SonarQube看到剖析结果:
事情事理和架构
SonarQube通过详细、系统地审查源代码来发挥浸染。它集成在软件开拓事情流程中,常日在新代码提交到版本掌握系统时在持续集成过程中激活。
核心操作从SonarQube扫描器开始,只通过扫描代码而不实行它(静态剖析)。 根据预定义的规则和模式审查代码以识别问题。这些规则的范围可以从潜在的缺点和安全漏洞到代码非常,这些代码中的模式可能并不是真正的漏洞,但可能会在未来引起问题。
扫描完成后,SonarQube会将结果编译成综合报告。该报告供应了一个仪表板,开拓职员可以利用它来清晰地理解代码质量,突出显示重复代码、违反编码标准以及可以简化的繁芜代码构造等问题。
该平台还供应代码质量的历史视图,使开拓职员能够跟踪他们在一段韶光内改进代码的进度。 这种历史视角不仅是为了创造问题所在,也是为了验证掩护或提高代码质量的持续努力的有效性。
此外,SonarQube可以配置为在不知足某些条件时使构建失落败,从而确保新代码在合并和支配之前知足项目的质量标准。这创建了一种新变更必须通过的“质量门”,从而将代码质量检讨直接集成到软件开拓过程中。
SonarQube架构SonarQube的架构为一个完善的集群架构模式,紧张由做事器、扫描以及数据库构成。
做事器端SonarQube做事器端提要供应Web用户交互界面和后台信息处理打算引擎(Computer Engine),包括:
Web做事器:供应SonarQube用户交互界面和Web的API交互接口。
搜索做事器:为Elasticsearch搜索引擎,它对剖析结果进行索引,以便在UI内进行快速搜索和检索。
打算引擎:处理代码剖析报告并将其结果保存在SonarQube数据库中。
扫描器扫描器是一个客户端命令行工具,可以在构建做事器或本地打算机上运行它来剖析项目的源代码。不同的构建系统和环境有不同的扫描仪。扫描代码后,扫描仪会将报告发送到SonarQube做事器进行处理。
数据库SonarQube利用数据库来存储当前配置、每个项目剖析的质量快照以及用户信息。SonarQube数据库可以选择多种数据后台,比如PostgreSQL、Microsoft SQL Server 或Oracle等实例。
其他赞助系统插件系统
SonarQube支持扩展其功能的插件,例如措辞剖析器、持续集成做事器的集成插件和源代码掌握系统。这些插件可以安装在做事器上以增强做事器的功能。
质量概况和质量门
质量概况实质上是在剖析过程中应检讨项目的一组规则,而质量门是确定项目质量的条件或阈值。
持续集成(CI)做事器
SonarQube可与GitLab、Jenkins、TeamCity或 Azure DevOps等CI做事器集成。这些系统可以触发SonarQube扫描作为CI管道的一部分。这样的架构让SonarQube能够适应各种开拓环境,同时供应同等且集中的办法来管理代码质量。它足够灵巧,可供开拓职员在本地打算机上利用,也可以完备集成到大规模CI/CD管道中以进行持续剖析和反馈。
DevOps和SonarQube集成在DevOps周期中,强调开拓(Dev)和运营(Ops)的统一,以提高敏捷性并减少从开拓到支配的韶光, SonarQube紧张提现在“Dev”方面发挥浸染,特殊是在持续集成(CI)方面)和持续交付(CD)实践。
持续集成(CI)当开拓职员将代码提交到版本掌握存储库时,CI做事器会自动运行一系列步骤来构建和测试代码。SonarQube集成到这些步骤中以实行静态代码剖析,确保新代码在合并到主分支之前符合质量标准。
持续交付(CD)CI之后,SonarQube角色将连续实行质量门。如果代码通过了这些关卡,则视为已准备好支配莅临盆环境。SonarQube确保在支配之前评估代码质量,从而降落将毛病或问题推向生产的可能性。
反馈和监控 在DevOps中,反馈至关主要。SonarQube直接向开拓职员供应有关代码质量的详细反馈(可以集成邮件或者slack等通讯工具告警)。此反馈循环许可快速修复,这是在DevOps环境中保持高速的关键。
协作与沟通 DevOps强调开拓职员、QA 和运营之间须要更好的沟通和协作。在这个中SonarQube充当一个通用平台,所有利益干系者都可以在个中查看代码质量指标并理解软件的运行状况,从而培养透明度和共同承担质量任务的文化。
持续提高 供应的指标和历史趋势SonarQube使团队能够衡量随着韶光的推移在提高代码质量方面的进展,这与持续改进的DevOps原则保持同等。
通过将SonarQube集成到DevOps周期中,企业可以确保代码质量是共同的任务,并且持续监控和改进,这是DevOps理念的核心。
在K8S集群中安装SonarQubeSonarQube 可以利用Helm 图表模板直接安装在K8S,其余SonarQube须要PostgreSQL。
下载Helm Chart模板(可自行修正)
git clone git@github:8grams/microk8s-helm-chart.git
然后,创建一个文件values.yaml覆盖默认的Helm值
安装它
helm install sonarqube ./charts/general -n sonarqube -f values.yaml --create-namespace
检讨安装
kubectl -n sonarqube get deployment
OK,统统正常,现在你的K8S集群上安装了一个强大的开源代码剖析工具。可以通过访问SonarQube Web Admin利用。
总结
SonarQube是一款高质量的开源代码安全审计工具,可以在单机情形下载利用检讨我们的项目代码。也可以方便的集成到企业的DevOps中去实现自动化代码安全审计和持续安全迭代。