導航:首頁 > 文檔加密 > grpc加密傳輸

grpc加密傳輸

發布時間:2024-10-04 12:35:40

1. Dapr介紹

Dapr 實際是被定義為Distributed Application Runtime(分布式的程序運行時),為開發人員提供一個分布式的程序的開發環境,提供分布式的程序所依賴的功能模塊庫,提供了分布式程序的運行環境,或者說為分布式的程序提供了一套完整運行方案。

Dapr是一個自上而下的框架,也就是說從從頂層開發者運行介面(遠程服務方法調用 pubsub ),到傳輸協議(http grpc),到消息組件, 到基礎設施環境(k8s 本地主機 docker)。這種設計的好處是將開發者作為第一位,先滿足需求而不是創造需求。從解決問題出發到最終實現。本人比較喜歡這種自上而下的理念,在現實中這種理念也相較成功率更高。

Dapr是站在開發者角度設計的,給開發者提供了服務調用,消息隊列,事件驅動的服務模型,並提供需要的狀態存儲,加密數據存儲的基礎服務,使得開發者不用去關心底層基礎設施細節。

Dapr同時支持standalone和基於Kubernetes的模式,想要了解可以從standalone模式開始,standalone相對概念較少,排除Kubernetes復雜概念的干擾。

Dapr實現遠程方法直接調用,實現了事件匯流排非同步處理功能,將兩者集中到一個平台,這就滿足了絕大部分分布式程序的核心需求。

Dapr從使用角度出發,優先實現了程序員所關心的最核心的功能,並沒追究serverless概念的完整實現,如沒有提供從零擴容等類似非核心功能和概念,當然Dapr也是在一個快速開發與擴展階段,一些新的概念和功能會不斷引入,但是肯定是以最核心功能為基點來拓展。

Dapr提供了完備的可觀察性,提供了完備的tracing metrics logs, 方便追蹤問題,支持opentelemetry(opencensus), 所有支持opentelemetry的tracing工具都可以被接入,opentelemetry目前還在發展階段。

Dapr 採用 mutual authentication TLS 加密安全方式,提供了生產級別的安全性。

Dapr是基於sidecar模式模式, 實際等於給程序提供一個直接的代理,類似於每個web app 前面綁定一個nigix。

Dapr K8S模式利用AdmissionReview AdmissionRequest通過PatchOperation注入Dapr的sidecar。

Dapr沒用採用標準的net/http庫,而是採用fasthttp一個高性能http庫,在性能上有顯著提升。

web session之間是無狀態的,State store components提供了狀態的存儲,類似於web開發中將web session存儲於伺服器端的功能。

Dapr不是service mesh,service mesh是關注於網路服務,Dapr則是為用戶構建microservices提供基礎架構支持,使用戶更方便的構建microservices,是以開發者為中心而不是網路為中心。

Service invocation 實現遠程服務方法的調用,實現類似faas功能,實際提供了服務發現,反向代理的功能。

DaprService invocation 實現了反向代理、負載均衡。

2. gRPC 安全篇-2: 快速實現服務端 JWT 驗證

本文將介紹如何利用rk-boot實現服務端JWT驗證邏輯。

JWT,即JSON網路令牌,是一種Internet標准,用於在兩方之間安全地表示聲明,並可選擇性地使用簽名或加密。通過JWT機制,客戶端可以使用密鑰加密信息,並將其添加到HTTP請求的Header中,服務端則驗證客戶端的合法性。更多關於JWT的信息,可以參考其官網。

許多SAAS服務,如github,都採用了JWT作為用戶驗證方式。

想要獲取完整教程,請訪問以下地址。

rk-boot默認會為gRPC服務開啟grpc-gateway,使得兩個協議監聽同一個埠。因此,無論是gRPC請求還是Restful請求,都可以驗證JWT。

創建boot.yaml文件,這個文件會指導rk-boot如何啟動gRPC服務。

在下面的YAML文件中,我們聲明了三件事:

因此,boot.yaml文件會告訴rk-boot在8080埠啟動gRPC服務,並開啟commonService以及JWT驗證攔截器。

由於我們開啟了commonService,所以不需要額外給gRPC添加API進行驗證。

根據不同的語言,有許多開源庫可以幫助我們創建JWT Token,更多信息可以參考官網。

為了方便,我們直接從官網創建一個Token,這個Token使用了my-secret作為密鑰,HS256作為演算法,與boot.yaml里的配置一致。

rk-boot提供了若干JWT攔截器選項,除非有特殊需要,通常不推薦覆蓋這些選項。

支持的簽名演算法包括HS256,HS384,HS512,RS256,RS384,RS512,ES256,ES384,ES512,EdDSA。

gRPC只支持從Header里讀取Token,如果是gRPC協議發出的請求,Header就是grpc.metadata。

請參考RFC7515以了解多種signing keys的使用方法。

提供多個signing keys,用:分開Key和Value。

下面的例子中,我們使用了Restful API作為請求例子,這次,我們使用gRPC。

啟動同樣的gRPC服務,這次我們使用grpcurl直接調用gRPC服務。

為了能使用grpcurl,我們需要在boot.yaml中通過enableReflection開啟grpc reflection。

閱讀全文

與grpc加密傳輸相關的資料

熱點內容
ug自學編程入門 瀏覽:612
英語口語900句pdf 瀏覽:565
javabyte拼接 瀏覽:481
加密應用在哪裡找vivo 瀏覽:290
python讀寫圖像 瀏覽:289
不是金山毒霸會員文件還能加密嗎 瀏覽:955
python網站開發教程 瀏覽:875
安卓超感畫質引擎是什麼意思 瀏覽:323
ug80編程穩定嗎 瀏覽:706
樂高ev3魔方機器人編程 瀏覽:891
文件夾120 瀏覽:753
怎麼判斷用幾個密鑰進行加密 瀏覽:433
學韓語哪個app最好 瀏覽:940
怎麼才能讓蘋果手機登安卓號 瀏覽:599
史上最強大腦演算法 瀏覽:327
java圖形識別演算法 瀏覽:971
安卓手機開機怎麼會出現圓圈 瀏覽:203
定常流體一定是不可壓縮流體嗎 瀏覽:508
java基本演算法 瀏覽:390
專業自學編程的教程 瀏覽:623