使用混沌候攻擊測試Spring Boot應用
在編寫了許多單元和整合測試後,程式碼覆蓋範圍從70%到80%,但是還是存在一種焦慮,我們的寶寶在生產中的表現如何?
許多問題仍然沒有答案:
1. 我們的後備工作會起作用嗎?
2. 應用程式如何處理網路延遲?
3. 如果我們的某項服務出現故障怎麼辦?
4. 服務發現是否有效,但我們的客戶端負載平衡是否也有效?
如果你開始在你的公司實施混沌工程,那麼你必須是一個非常社交和溝通的人。為什麼,因為當你的混亂實驗發生時,你會在很短的時間內親自認識你的許多同事。
您的服務是否具有彈性並可以處理故障?如果沒有,請不要開始混亂實驗!
不要在生產環境啟用混沌候!
Spring Boot Chaos Monkey是一個小型庫(30kb),可以使用以下選項將Chaos Monkey整合到Spring Boot App中:
對於Spring Boot 2.0.x:
使用Spring Profile chaos-monkey啟動應用程式以初始化Chaos Monkey,從版本1.5.0和2.0.0 開始,它預設不會對應用啟動攻擊,需要在執行時動態啟用它。
java -jar your-app.jar --spring.profiles.active=chaos-monkey
也可以透過Spring Boot PropertiesLauncher注入外部JAR檔案方式啟用:
或者透過 loader.path系統設定與 Spring Boot PropertiesLauncher啟動:
透過環境變數 LOADER_PATH和Spring Boot PropertiesLauncher啟用:
在所有情況下:
無論你如何嵌入Chaos Monkey,只要不將屬性“ chaos.monkey.enabled ”設定為“ true ”,就什麼都不會發生!
無需更改原始碼就能啟用!
透過配置可以定義啟用哪些攻擊和監視器,預設情況下僅啟用@Service觀察器和延遲攻擊。
Watcher是一個Chaos Monkey for Spring Boot元件,它將掃描應用程式以獲取特定型別的註釋,在Spring AOP的幫助下,Chaos Monkey會識別出一個公共方法的執行,提供以下攻擊:
1. 延遲攻擊
2. Exception 攻擊
3. AppKiller攻擊
許多問題仍然沒有答案:
1. 我們的後備工作會起作用嗎?
2. 應用程式如何處理網路延遲?
3. 如果我們的某項服務出現故障怎麼辦?
4. 服務發現是否有效,但我們的客戶端負載平衡是否也有效?
如果你開始在你的公司實施混沌工程,那麼你必須是一個非常社交和溝通的人。為什麼,因為當你的混亂實驗發生時,你會在很短的時間內親自認識你的許多同事。
您的服務是否具有彈性並可以處理故障?如果沒有,請不要開始混亂實驗!
不要在生產環境啟用混沌候!
Spring Boot Chaos Monkey是一個小型庫(30kb),可以使用以下選項將Chaos Monkey整合到Spring Boot App中:
<dependency> <groupId>de.codecentric</groupId> <artifactId>chaos-monkey-spring-boot</artifactId> <version>X.X.X</version> </dependency> <p class="indent"> |
對於Spring Boot 2.0.x:
<dependency> <groupId>de.codecentric</groupId> <artifactId>chaos-monkey-spring-boot</artifactId> <version>2.0.0-SNAPSHOT</version> </dependency> <p class="indent"> |
使用Spring Profile chaos-monkey啟動應用程式以初始化Chaos Monkey,從版本1.5.0和2.0.0 開始,它預設不會對應用啟動攻擊,需要在執行時動態啟用它。
java -jar your-app.jar --spring.profiles.active=chaos-monkey
也可以透過Spring Boot PropertiesLauncher注入外部JAR檔案方式啟用:
java -cp your-app.jar -Dloader.path=chaos-monkey-spring-boot-X.X.X.jar org.springframework.boot.loader.PropertiesLauncher --spring.profiles.active=chaos-monkey <p class="indent"> |
或者透過 loader.path系統設定與 Spring Boot PropertiesLauncher啟動:
java \ -Xbootclasspath/a:aspectjrt-1.9.1.jar \ -cp your-app.jar \ -Dloader.path=chaos-monkey-spring-boot-X.X.X.jar \ -Dspring.profiles.active=chaos-monkey \ org.springframework.boot.loader.PropertiesLauncher <p class="indent"> |
透過環境變數 LOADER_PATH和Spring Boot PropertiesLauncher啟用:
LOADER_PATH=chaos-monkey-spring-boot-X.X.X.jar \ java \ -Xbootclasspath/a:aspectjrt-1.9.1.jar \ -Dspring.profiles.active=chaos-monkey \ -cp your-app.jar \ org.springframework.boot.loader.PropertiesLauncher <p class="indent"> |
在所有情況下:
無論你如何嵌入Chaos Monkey,只要不將屬性“ chaos.monkey.enabled ”設定為“ true ”,就什麼都不會發生!
無需更改原始碼就能啟用!
執行時的動態配置
從版本1.5.0和2.0.0開始,可以透過Spring Boot Actuator Endpoint在執行時配置Chaos Monkey for Spring Boot。
工作原理
如果Spring Boot Chaos Monkey在類路徑中並使用配置檔名稱“chaos-monkey”啟用,它將自動掃描應用程式以查詢以下使用Spring註釋的所有類:
@Controller @RestController @Service @Repository @Component <p class="indent"> |
透過配置可以定義啟用哪些攻擊和監視器,預設情況下僅啟用@Service觀察器和延遲攻擊。
Watcher是一個Chaos Monkey for Spring Boot元件,它將掃描應用程式以獲取特定型別的註釋,在Spring AOP的幫助下,Chaos Monkey會識別出一個公共方法的執行,提供以下攻擊:
1. 延遲攻擊
2. Exception 攻擊
3. AppKiller攻擊
相關文章
- 開發者測試-採用精準測試工具對Spring Boot應用進行測試Spring Boot
- Spring Boot乾貨系列:(十二)Spring Boot使用單元測試Spring Boot
- Spring Boot如何防暴力破解攻擊?Spring Boot
- 攻擊樹測試
- 【星雲測試】開發者測試-採用精準測試工具對Spring Boot應用進行測試Spring Boot
- 使用 Spring Boot 和 @SpringBootTest 進行測試Spring Boot
- 使用 Spring Boot 進行單元測試Spring Boot
- Spring Boot(十二):Spring Boot 如何測試打包部署Spring Boot
- 使用 Spring Boot 和 @WebMvcTest 測試 MVC Web ControllerSpring BootWebMVCController
- Spring Boot 單元測試Spring Boot
- 021-Spring Boot 測試Spring Boot
- Spring Boot 中測試 CORSSpring BootCORS
- 混沌測試介紹
- 攻擊JavaWeb應用[4]-SQL隱碼攻擊[2]JavaWebSQL
- 攻擊JavaWeb應用[3]-SQL隱碼攻擊[1]JavaWebSQL
- Spring Boot之單元測試用例總結Spring Boot
- 使用dbunit測試spring + mybatis的資料庫應用SpringMyBatis資料庫
- 在Spring Boot應用程式中使用Kubernetes ConfigMapSpring Boot
- 使用Prometheus和Grafana監控Spring Boot應用PrometheusGrafanaSpring Boot
- Spring Boot中如何使用Ostara監控應用?Spring Boot
- Spring Boot中使用TestContainer測試快取機制Spring BootAI快取
- 攻擊者使用SQLite資料庫中的惡意程式碼攻擊應用程式SQLite資料庫
- Spring Boot介面如何設計防篡改、防重放攻擊Spring Boot
- ChaosBlade混沌測試實踐
- 怎樣使用Spring Boot專案的單元測試Spring Boot
- 怎樣使用Spring Boot專案的單元測試?Spring Boot
- 使用 SAP BTP 建立一個 Spring Boot Java 應用Spring BootJava
- 使用Spring Security 6.1及更高版本保護Spring Boot 3應用Spring Boot
- Mokito 單元測試與 Spring-Boot 整合測試Springboot
- Spring boot應用如何支援httpsSpring BootHTTP
- Spring Boot 之路(一):一個簡單的Spring Boot應用Spring Boot
- spring-boot-route(十八)spring-boot-adtuator監控應用Springboot
- 攻擊JavaWeb應用————5、MVC安全JavaWebMVC
- 利用Burp Suite攻擊Web應用UIWeb
- 攻擊JavaWeb應用[5]-MVC安全JavaWebMVC
- 使用jest測試Koa應用
- 使用Spring Boot REST API進行測試驅動開發Spring BootRESTAPI
- Akamai:65.1%的Web應用程式攻擊來自SQL隱碼攻擊AIWebSQL