SonarQube檢查項目中是否存在秘鑰信息
持續(xù)集成和交付(CI / CD)管道旨在支持每天數(shù)以萬計的部署。生產(chǎn)部署的頻率不能以犧牲安全為代價,安全流程也需要與CI / CD管道集成在一起。這就是為什么我們在從開發(fā)到生產(chǎn)的流水線的每個步驟中都添加了持續(xù)的安全驗證,以幫助確保我們的應用程序始終是安全的。
作為管道的一部分,我們開始將SonarQube用于代碼質量,因為SonarQube已集成到開發(fā)人員的IDE中,所以此驗證發(fā)生在開發(fā)人員提交其代碼之前。我們決定利用SonarQube來進一步檢查易受攻擊的編碼模式。
在此過程中,我們使用了現(xiàn)有的出色插件,例如Java的Findsecbugs,我們從Sonar Secrets開始向開發(fā)人員提供早期反饋,提醒他們使用硬編碼憑據(jù)所帶來的安全風險。盡早為開發(fā)人員提供反饋,使我們可以將安全控制權向左移動,從而使開發(fā)人員可以在生產(chǎn)代碼投入使用之前達到內部定義的安全標準。
為了保護我們的用戶,合作伙伴和員工,我們的服務旨在使用加密的密鑰庫來保護所有相關的敏感數(shù)據(jù)。然后,開發(fā)人員可以使用變量在代碼中引用此數(shù)據(jù),而不必對值進行硬編碼。
構建打包
SonarQube™的Sonar Secrets插件https://github.com/Skyscanner/sonar-secrets —由Skyscanner產(chǎn)品安全小組創(chuàng)建,旨在識別硬編碼的機密,例如密碼,API令牌,AWS憑證等。
- cd sonar-secrets/java && mvn clean package
- cd sonar-secrets/javascript && mvn clean package
build成功會提示以下信息:
- ...
- [INFO] BUILD SUCCESS
- [INFO] ------------------------------------------------------------------------
- [INFO] Total time: 7.065 s
- [INFO] Finished at: 2017-10-26T05:00:33-04:00
- [INFO] Final Memory: 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
- 重啟sonarqube服務器
In startup logs you should see:
- ...
- INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin Sonar Secrets Java / x.x
- INFO web[][o.s.s.p.ServerPluginRepository] Deploy plugin Sonar Secrets JavaScript / x.x
- ...
啟用 sonar-secrets-java and sonar-secrets-javascript 在 Quality Profiles。
IDE效果圖
Sonar Secrets幫助我們在檢測和防止代碼中的敏感數(shù)據(jù)泄漏方面保持主動。我們已決定將該項目開源,以便社區(qū)可以從這項技術中受益并幫助改進它。該插件是完全可定制的,并且可以使用新規(guī)則進行擴展。該第一個發(fā)行版目前僅支持Java和Javascript項目。