使用Sonar来优化您的基础架构代码

如今,越来越多的企业采用基础架构即代码(Infrastructure as Code,简写为IaC)技术。IaC是一种通过代码(而非手动流程)来管理和配置基础架构的方法。通过使用IaC技术,企业可以方便地配置和管理云基础架构,实现敏捷性,同时也可以在开发的早期阶段嵌入安全性,减少被攻击的风险。但是,如果IaC使用不当,就会带来一些安全风险,从而引发数据泄露等问题。
作为SonarQube授权合作伙伴,创实关注代码防护领域,帮助您提升代码的安全防护。在本文中,您将找到如何解决IaC项目中的代码异味、错误和漏洞的方法,帮助您编写干净的代码。

全新的技术……相同的挑战

科技的伟大之处在于总会创造出有价值的新技术。虽然基础架构即代码(IaC)并不是全新的技术,但它仍然给人一种眼前一亮的感觉,并且它的受欢迎程度还在飞升。对于初次接触这个概念的开发人员,以下的简短总结可供参考:
基础架构即代码(IaC)是通过机器可读的定义文件(而非物理硬件配置或基于GUI的配置工具)来管理和配置基础架构的过程。这些定义文件可以通过声明式(WHAT)或命令式(HOW)方法在版本控制系统(例如Git系统)中进行维护。声明式方法定义了期望的状态,系统执行实现该期望状态所需的操作。命令式方法定义了需要以适当的顺序执行,以实现所需状态的特定命令。IaC工具侧重于使用声明式方法(例如AWS CDK、Terraform)。

IaC的卓越之处在于为开发人员的可实现目标提供了一种全新的途径。这是一种功能强大的技术,可使开发人员和云平台工程师以更大的灵活性和独立性进行工作。

“仅有技术是不够的。”——史蒂夫·乔布斯(Steve Jobs)

权限越大,责任就会越大。就如同源代码一样,IaC也可能存在错误和漏洞。这些可能对您的基础架构和企业声誉造成严重负面影响。

谁负责安全防护?

这里提出了一个叫做共同责任模型的概念。安全防护是云服务提供商(例如Amazon Web Services (AWS)、Microsoft Azure或Google Cloud Platform (GCP))与客户共同承担的责任。在这种“共享模型”中,云服务提供商负责提供“云服务安全防护”。这意味着云服务提供商负责保护传统服务的安全防护,包括物理主机防护、网络安全和虚拟化操作安全。

客户负责“遵守云端安全防护”,这意味着平台和资源配置均由您直接控制。当您启动云基础架构时,您就直接控制了操作环境,而与您是否使用服务器启动云基础架构无关。

但并非所有云开发人员都已意识到了这一点或已经理解了这一点的重要性。细微的错误可以暴露很多问题。乐观的方面在于IaC只是代码工具,通过SonarSource,我们获知了一些帮助人们编写干净且具有防护性代码的方法!

使用Sonar保护您的IaC

我们在Sonar解决方案中添加了规则,用于检测IaC项目中的代码异味、错误和漏洞。如果您已经在工作中使用IaC,或者只是想探究其价值,那么你可能正在开发云原生应用程序,而这正是Sonar真正大展身手的地方。通过使用Sonar,您可以查找并修复IaC中存在的问题,并且 Sonar 还可以扫描你的云原生应用程序中的源代码。无论是在后端运行的JavaScript还是作为微服务一部分的AWS Lambda函数,Sonar都能对质量和防护问题进行检测并帮助你解决这些问题。

以下是通过IaC特定规则检查到的问题示例:

Azure中具有辅助位置的作用域权限漏洞

AWS中的身份验证漏洞

我们知道人们并不总是使用单一的云提供商进行部署,所以我们有AWS、Azure和谷歌等平台的规则覆盖范围。我们在IaC/云原生领域才刚刚起步,我们已经添加了几十条规则,并且已经为客户创造了很多价值。

04 轻松开始

请访问Sonarpedia查看CloudFormation和Terraform规则。

想要亲自体验 SonarQube或试用SonarCloud,请联系SonarQube中国官方授权合作伙伴——创实 ,我们提供SonarQube产品的咨询、销售、 实施、培训及技术支持服务。

作者简介:

克林特·卡梅伦(CLINT CAMERON)

SonarSource产品营销经理

文章来源:https://blog.sonarsource.com/iac_code_quality/