持续集成和交付(CI/CD)管道旨在支持每天数以万计的部署。生产部署的频率不能以牺牲安全为代价,这也需要与CI/CD管道集成。这就是为什么我们在开发到生产管道的每一步都添加了持续的安全验证,以帮助确保我们的应用程序始终安全。作为管道的一部分,我们开始使用SonarQube来提高代码质量,因为SonarQube已集成到开发人员的IDE中,这种验证发生在开发人员提交代码之前。我们决定利用SonarQube进一步检查易受攻击的编码模式。一路上,我们使用了很棒的现有插件,例如FindsecbugsforJava,我们从SonarSecrets开始,为开发人员提供有关使用硬编码凭据带来的安全风险的早期反馈。尽早向开发人员提供反馈使我们能够将安全控制转移到左侧,从而使开发人员能够在生产代码上线之前满足内部定义的安全标准。为了保护我们的用户、合作伙伴和员工,我们的服务旨在使用加密的密钥库来保护所有相关的敏感数据。然后,开发人员可以使用变量在代码中引用此数据,而无需对值进行硬编码。构建打包SonarQube?的SonarSecrets插件https://github.com/Skyscanner/sonar-secrets—由Skyscanner产品安全团队创建,用于识别密码、API令牌、AWS凭证等硬编码秘密。cdsonar-secrets/java&&mvncleanpackagecdsonar-secrets/javascript&&mvncleanpackage构建成功会提示如下信息:...[INFO]BUILDSUCESS[INFO]----------------------------------------------------------------------[INFO]Totaltime:7.065s[INFO]Finishedat:2017-10-26T05:00:33-04:00[INFO]FinalMemory:23M/252M[INFO]--------------------------------------------------------------------sonar-secrets-java-x.x.jar在sonar-secrets/java/target目录下。sonar-secrets-javascript-x.x.jar位于sonar-secrets/javascript/target目录中。安装配置复制Jar包文件到sonarqube插件目录/opt/sonarqube/extensions/plugins重启sonarqubeserver在启动日志中应该看到:...INFOweb[][o.s.s.p.ServerPluginRepository]DeploypluginSonarSecretsJava/x.xINFOweb[][o.s.s.p.ServerPluginRepository]??DeploypluginSonarSecretsJavaScript/x.x...在质量配置文件中启用sonar-secrets-java和sonar-secrets-javascript。IDERenderingsSonarSecrets帮助我们主动检测和防止代码中的敏感数据泄漏。我们决定开源该项目,以便社区可以从这项技术中受益并帮助改进它。该插件是完全可定制的,并且可以使用新规则进行扩展。这个第一个版本目前只支持Java和Javascript项目。
