1. 程式人生 > 其它 >使用Sonar來優化您的基礎架構程式碼

使用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/雲原生領域才剛剛起步,我們已經添加了幾十條規則,並且已經為客戶創造了很多價值。

輕鬆開始

請訪問Sonarpedia檢視CloudFormation和Terraform規則。

想要親自體驗SonarQube或試用SonarCloud,請聯絡SonarQube中國官方授權合作伙伴——創實資訊 ,我們提供SonarQube產品的諮詢、銷售、 實施、培訓及技術支援服務。

作者簡介:
 


克林特·卡梅倫(CLINT CAMERON)

SonarSource產品營銷經理

本文轉載自 創實資訊