#資安工具 ![[軟體操作手冊/SonarQube_Photo/image.png| center]] ### 壹、[[#^9e18ca | 簡介]] ### 貳、[[#^6f6739 | 安裝流程]] ### 參、[[#^15edbe | 掃描實作]] ### 肆、[[#^45010f | 擴充套件]] ### 伍、[[#^f2434f | 常見問題]] --- #### <center> **壹、簡介**</center> ^9e18ca - 一個開源程式碼品質和安全分析平台,能夠自動偵測程式碼中的錯誤、技術債務和安全漏洞,並提供即時回饋與報告。 - 支援多種主流程式語言,並能與 CI/CD工具 整合,協助開發團隊持續監控和改善程式碼品質,提升軟體的穩定性和可維護性。 - 簡單來說,他的優勢如下: > [!ABSTRACT] **如下所列** > - [ ] 靜態程式碼分析 > - [ ] 程式碼品質管理 > - [ ] 安全漏洞檢測 > - [ ] 多語言支援與可擴展性 > - [ ] 與CI/CD 流程整合 > - [ ] 開發者體驗 > - [ ] Freeeee(Community版本) --- #### <center> **貳、 安裝流程**<center> ^6f6739 - 那麼,接著開始安裝吧: 官網在這: ``` https://www.sonarsource.com/products/sonarqube/ ``` - 本章節會以Windows 作為安裝環境,下載連結下收: ``` https://www.sonarsource.com/products/sonarqube/downloads/ ``` - 首先映入眼簾的是可下載版本,目前拿Community版本來作介紹。 > <img src="軟體操作手冊/SonarQube_Photo/image-1.png" style="width:600; text-align:LiArrowLeftToLine:"> - 在下載之後解壓縮,會得到這樣的檔案內容: > <img src="軟體操作手冊/SonarQube_Photo/image-2.png" style="width:600; text-align:LiArrowLeftToLine:"> - 接下來要啟動她,這邊以windows為例,把目錄切到bin/windows-x86-64 點開StartSonar.bat,他會自動執行。 > [!WARNING] **是否已安裝java?** > ([JRE latest version](https://www.java.com/zh-TW/download/manual.jsp)、[JDK latest version](https://www.oracle.com/tw/java/technologies/downloads/)) - 啟動成功時cmd會跟你說SonarQube is operational,就可以開始操作了: > <img src="軟體操作手冊/SonarQube_Photo/image-4.png" style="width:600; text-align:LiArrowLeftToLine:"> --- #### <center> 參、掃描實作 </center> ^15edbe - 接著打開(任一)瀏覽器,輸入127.0.0.1:9000,會出現: > <img src="軟體操作手冊/SonarQube_Photo/image-5.png" style="width:600; text-align:LiArrowLeftToLine:"> - 預設帳/密皆為admin,首次登入後需改密碼。 > <img src="軟體操作手冊/SonarQube_Photo/image-6.png" style="width:400; text-align:LiArrowLeftToLine:"> - 更改後就會進到歡迎畫面,會說一些新功能的tutorial。 > <img src="軟體操作手冊/SonarQube_Photo/image-7.png" style="width:600; text-align:LiArrowLeftToLine:"> - 再來就是設定掃描專案了,這邊直接點選Add Project,接著這次會拿本機端進行說明,所以直接選Create a local project。 > <img src="軟體操作手冊/SonarQube_Photo/image-8.png" style="width:600; text-align:LiArrowLeftToLine:"> - 輸入自訂的名稱跟分支項目: > <img src="軟體操作手冊/SonarQube_Photo/image-9.png" alt="center" style="width:400; text-align:LiArrowLeftToLine:"> - 再來是程式碼的判定規則設定,這邊先用預設,意思為"每一次變更都是一個新版本" > <img src="軟體操作手冊/SonarQube_Photo/image-10.png" alt="center" style="width:500; text-align:LiArrowLeftToLine:"> - 接著點選Create(忘記截圖了),下一個畫面會詢問分析工具,這邊也先選取Locally: > <img src="軟體操作手冊/SonarQube_Photo/image-11.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:"> - 就會跳到Generate Token的部分,這是給專案使用的,可以設定到期天數。 (真的不小心忘記也可以重新設定。) > <img src="軟體操作手冊/SonarQube_Photo/image-12.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:"> - 產生後會出現這樣,這個token要自己記好: > <img src="軟體操作手冊/SonarQube_Photo/image-13.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:"> - 記下來後,會詢問你的project是用什麼語言開發? 這邊以.NET Core為例,呈現如下,會需要安裝SonarQube的擴充模組, 可以用他的指令(橘框處)安裝,或是從visual studio自己手動載。 安裝好之後,在專案的根目錄底下用cmd執行(藍框處)的指令。 <img src="軟體操作手冊/SonarQube_Photo/image-14.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:"> - 藍框的環境設定完之後,跑dotnet build讓他編譯,提供指令如下: > ``` > 1. dotnet tool install --global sonarscanner > 2. dotnet sonarscanner begin /k: "你的專案名稱" > 3. /d:sonar.host.url=http://127.0.0.1:9000 /d:sonar.token="你的token" > 4. dotnet build > 5. dotnet sonarscanner end /d:sonar.token="你的token" > ``` - 接著就會呈現結果,像下圖,就是一個不太理想的檢測結果。 > <img src="軟體操作手冊/SonarQube_Photo/image-16.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:"> > [!CAUTION] 注意! > - 如果掃描之後,**OverView沒有出現任何資訊**(如Measures、Security HotSpots..等,可能是專案被定義為測試程式(TEST-code)而非正式程式,如下圖: > <img src="軟體操作手冊/SonarQube_Photo/image-15.png" alt="center" style="width:400; text-align:LiArrowLeftToLine:"> > 如果要調整,需要從專案檔(Visual Studio)去進行調整,詳細資訊可以參考: > [https://github.com/SonarSource/sonar-scanner-msbuild/wiki/Analysis-of-product-projects-vs.-test-projects](https://github.com/SonarSource/sonar-scanner-msbuild/wiki/Analysis-of-product-projects-vs.-test-projects) --- #### <center> 肆、擴充套件 </center> ^45010f - 不論檢測結果如何,產生一個檢測報表還是比較方便閱讀, 而Community版本,就必須得使用額外的套件進行報表功能的擴充, 目前測下來,CNES Report還蠻方便使用,github記錄於此,[https://github.com/cnescatlab/sonar-cnes-report](https://github.com/cnescatlab/sonar-cnes-report) - 若安裝成功,將會顯示於選單列表上。 - 此報表套件還提供了多種產製格式。 > <img src="軟體操作手冊/SonarQube_Photo/image-17.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:"> - 以docx格式為例,會產生下圖的報告: > <img src="軟體操作手冊/SonarQube_Photo/image-18.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:"> <img src="軟體操作手冊/SonarQube_Photo/image-19.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:"> - 還有各項問題的詳細說明,但不好截圖就不截了。 --- ##### <center>伍、常見問題:</center> ^f2434f - 安裝時,若出現 ``` java.lang.Error: A command line option has attempted to allow or enable the Security Manager. Enabling a Security Manager is not supported ``` <img src="軟體操作手冊/SonarQube_Photo/image-3.png" style="width:700; text-align:LiArrowLeftToLine:"> - 代表你的JDK版本太新>=24,主要是**Security Manager**這個工具已經被棄用,詳細可以參考這篇說明: ``` https://docs.oracle.com/en/java/javase/24/security/security-manager-is-permanently-disabled.html ``` - > [!CAUTION] 處理方式 > **解決方式就是降版,寫這個說明文件的時候,sonarqube-25.5.0.107428 Community還不支援JDK 24。(2525/06/03)**