欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

微服務架構如何保證安全性

阮建安2年前46瀏覽0評論
微服務架構如何保證安全性?

一.微服務架構回顧

那我們先回憶一下,常用4種架構之微服務架構。

微服務架構,主要是中間層分解,將系統拆分成很多小應用(微服務),微服務可以部署在不同的服務器上,也可以部署在相同的服務器不同的容器上。當應用的故障不會影響到其他應用,單應用的負載也不會影響到其他應用,其代表框架有Spring cloud、Dubbo等。其架構圖如下所示:

易于開發和維護:一個微服務只會關注一個特定的業務功能,所以它業務清晰、代碼量較少。開發和維護單個微服務相對簡單。而整個應用是由若干個微服務構建而成的,所以整個應用也會被維持在一個可控狀態。

單個微服務啟動較快:單個微服務代碼量較少, 所以啟動會比較快。

局部修改容易部署:單體應用只要有修改,就得重新部署整個應用,微服務解決了這樣的問題。一般來說,對某個微服務進行修改,只需要重新部署這個服務即可。

技術棧不受限:在微服務架構中,可以結合項目業務及團隊的特點,合理地選擇技術棧。例如某些服務可使用關系型數據庫MySQL;某些微服務有圖形計算的需求,可以使用Neo4j。甚至可根據需要,部分微服務使用Java開發,部分微服務使用Node.js開發。微服務雖然有很多吸引人的地方,但它并不是免費的午餐,使用它是有代價的。使用微服務架構面臨的挑戰。

運維要求較高:更多的服務意味著更多的運維投入。在單體架構中,只需要保證一個應用的正常運行。而在微服務中,需要保證幾十甚至幾百個服務服務的正常運行與協作,這給運維帶來了很大的挑戰。

分布式固有的復雜性:使用微服務構建的是分布式系統。對于一個分布式系統,系統容錯、網絡延遲、分布式事務等都會帶來巨大的挑戰。

接口調整成本高:微服務之間通過接口進行通信。如果修改某一個微服務的API,可能所有使用了該接口的微服務都需要做調整。

重復勞動:很多服務可能都會使用到相同的功能,而這個功能并沒有達到分解為一個微服務的程度,這個時候,可能各個服務都會開發這一功能,從而導致代碼重復。盡管可以使用共享庫來解決這個問題(例如可以將這個功能封裝成公共組件,需要該功能的微服務引用該組件),但共享庫在多語言環境下就不一定行得通了。

二.親身小經歷

上面扯皮了這么多,還不到關鍵的地方,到底搞什么鬼呀?我不是有意的,我就想讓大家再過過概念。好啦,現在我們開始吧!看看我當時的微服務架構(我那會用Sping Cloud,就根據Sping Cloud講一講),大家看安不安全?以下內容基本使用白話文扯皮子。

看不清楚的,大家可以點擊圖片放大看一看。從中可以看出這是Spring Cloud微服務架構圖,至于Dubbo等微服務架構思路大體也是這樣。從中我們看出為了保證安全可靠性,我們用了gateway、oauth2.0。至于這兩項技術到底穩不穩,我們分開聊一聊。

三.gateway

1.gateway是什么?

Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技術開發的網關,Spring Cloud Gateway旨在為微服務架構提供一種簡單而有效的統一的API路由管理方式。Spring Cloud Gateway作為Spring Cloud生態系中的網關,目標是替代Netflix ZUUL,其不僅提供統一的路由方式,并且基于Filter鏈的方式提供了網關基本的功能,例如:安全,監控/埋點,和限流等。

2.gateway怎么用?

Spring Cloud Gateway怎么用,在這里我主要是為了講述微服務的安全性,我就不上代碼了,我就講講理論知識,具體細節等下我提供一些我之前的文章鏈接,供大家學習。

一個組件引入,無非就以下幾件事情:

引入依賴包。

相關yml配置(即文件配置)。

上手方式:要么使用文件配置方式、要么使用java api(如果有其它的再說,目前我知道就這兩種),然后就完事了。

3.gateway能為微服務提供什么安全性保障?

Spring Cloud Gateway為我們提供了什么服務?由上面微服務架構圖,我們可以看出移動客戶端、管理后臺訪問微服務1、2、3接口必須經過gateway。gateway作為中間件,它的核心方法是filter,它就可以做以下幾件事情:

按照自定的過濾方式進行攔截,符合約定的就可以通過或者被攔截。這樣亂七八糟的接口就不能訪問了嘛,這樣就可以保證服務微服務的安全性。

既然能攔截到一切接口,那就可以對一些熱點接口,做一些限流操作,比如a接口在一分鐘內訪問次數超過2萬次,我們就讓他降級,讓它響應其它事件。

容錯處理,請求有問題,就做一些特殊回調。

其它呀,反正接口都流經過你這里,你想怎么玩就怎么玩咯。

我曾經寫過的一些Spring Cloud Gateway文章:

Spring Cloud之Gateway(一):基本了解及謂詞詳解

Spring Cloud之Gateway(二):網關過濾器

Spring Cloud之Gateway(三):全局過濾器

Spring Cloud之Gateway(四):TLS/SSL、配置、跨域訪問配置、執行器API、開發人員指南及MVC或Webflux搭建Gateway

四.oauth2.0

oauth2.0按照gateway方式,我們同樣從以下三個問題分析一下:

1.oauth2.0是什么?

OAuth2.0協議為用戶資源的授權提供了一個安全又簡易的標準。與以往的授權方式不同之處是 OAuth的授權不會使第三方觸及到用戶的帳號信息(如用戶名與密碼),即第三方無需使用用戶的用戶名與密碼就可以申請獲得該用戶資源的授權,因此 OAuth2.0是安全的。

2.oauth2.0怎么用?

Spring Cloud可以使用OAuth2.0來實現多個微服務的統一認證授權,通過向OAuth2.0服務進行集中認證和授權,獲得access_token,而這個token是受其他微服務信任的,在后續的訪問中都把access_token帶過去,從而實現了微服務的統一認證授權。核心功能主要是以下兩點:

其一是認證與鑒權,對于請求的用戶身份的授權以及合法性鑒權;

其二是API級別的操作權限控制,這個在第一點之后,當鑒定完用戶身份合法之后,對于該用戶的某個具體請求是否具有該操作執行權限進行校驗。

OAuth 2.0定義了四種授權方式。

授權碼模式(authorization code)

簡化模式(implicit)

密碼模式(resource owner password credentials)

客戶端模式(client credentials)

3.oauth2.0能為微服務提供什么安全性保障?

由上可知,只需在訪問服務前增加OAuth2.0服務就能保證用戶的相對安全了,一個用戶能不能訪問接口,oauth2.0來做最后一道關閘。這樣就能保證微服務架構的相對安全性了。

五.其它

1.使用nginx服務器,作用如下:

反向代理:代理我們要訪問的目標服務器。

2.中間件搭建集群。

3.其它,你來補充