自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 Istio 保護(hù)您的微服務(wù)

開發(fā) 開發(fā)工具
Istio 是一個開源項目,旨在管理云上微服務(wù)之間的通信。它獨(dú)立于平臺,但通常且主要與 Kubernetes 一起使用。Istio 提供了多項關(guān)鍵功能,例如流量管理、安全性和可觀察性。

 

本文轉(zhuǎn)載自微信公眾號「新鈦云服」,作者祝祥 。轉(zhuǎn)載本文請聯(lián)系新鈦云服公眾號。

介紹

Istio 是一個開源項目,旨在管理云上微服務(wù)之間的通信。它獨(dú)立于平臺,但通常且主要與 Kubernetes 一起使用。Istio 提供了多項關(guān)鍵功能,例如流量管理、安全性和可觀察性。

在本文中,我們將重點(diǎn)介紹 Istio 的安全能力,包括增強(qiáng)認(rèn)證、透明 TLS 加密、身份驗證和授權(quán)。我們將 Istio 部署在 Kubernetes 集群上,并逐步介紹 Istio 安全功能,討論這些功能如何保護(hù)您的服務(wù)。

示例

我們使用 Istio 提供的示例應(yīng)用 Bookinfo[1] 來演示本文中 Istio 的功能。讓我們來看看 Istio 安全和 Bookinfo 的架構(gòu)。

ISTIO 安全架構(gòu)

Istio 安全涉及多個組件;下圖顯示了該架構(gòu)。在控制平面的 Istiod 組件中,我們有一個 CA(Certificate Authority)來管理證書,相關(guān)配置通過 API 服務(wù)器發(fā)送到數(shù)據(jù)平面(Envoy)。Envoy 作為策略執(zhí)行點(diǎn) (PEP) 來保護(hù)網(wǎng)格中客戶端和服務(wù)器之間或網(wǎng)格外部和內(nèi)部之間的通信安全。

Bookinfo應(yīng)用架構(gòu)

Bookinfo 應(yīng)用程序分為四個獨(dú)立的微服務(wù):

  • productpage:調(diào)用詳細(xì)信息和評論微服務(wù)
  • details:包含書籍詳細(xì)信息
  • eviews:調(diào)用 ratings 微服務(wù)生成書評
  • ratings:包含伴隨書評的排名信息

評論微服務(wù)共有三個版本;productpage 以循環(huán)方式訪問這些版本:

· 版本 v1 不調(diào)用ratings服務(wù)。

· 版本 v2 調(diào)用ratings服務(wù)并將每個評級顯示為 1 到 5 顆黑星。

· 版本 v3 調(diào)用ratings服務(wù)并將每個評級顯示為 1 到 5 顆紅星。

該應(yīng)用程序的端到端架構(gòu)如下所示。這些是沒有 Istio sidecar 部署的原始純服務(wù)。

ISTIO 認(rèn)證

如果您已經(jīng)安裝了 Istio,則無需對應(yīng)用程序進(jìn)行任何更改即可運(yùn)行示例?;蛘?,您可以簡單地在支持 Istio 的環(huán)境中配置和運(yùn)行服務(wù),并在每個服務(wù)旁邊注入 Envoy sidecar。生成的部署如下所示:

這里我們特意部署了沒有 sidecar 的 review-v2 和其他有 sidecar 的服務(wù)。這可以通過設(shè)置 Kubernetes 命名空間標(biāo)簽“istio-injection=enabled/disabled”輕松控制。一旦我們?yōu)?Pod 注入一個 sidecar 或者只是設(shè)置一個單一的邊緣代理作為入口網(wǎng)關(guān),Istio 身份就會生效。

Istio 身份模型使用一流的服務(wù)身份來確定請求來源的身份。在 Kubernetes 上,Istio 使用 Kubernetes 服務(wù)帳戶作為身份。下圖展示了 Istio 的身份配置工作流程。

  • 啟動一個注入了 Istio 的 Pod,它還會啟動一個 Envoy 實例作為 Pod 的 sidecar。
  • 當(dāng)工作負(fù)載啟動時,Envoy 通過 Envoy secret發(fā)現(xiàn)服務(wù) (SDS) API 從 Istio 代理請求證書。
  • Istio 代理將證書簽名請求 (CSR) 及其憑據(jù) (JWT) 發(fā)送到 istiod 進(jìn)行簽名。
  • Istio 代理將從 istiod 收到的以 SPIFFE 格式簽名的證書通過 Envoy SDS API 發(fā)送給 Envoy。

這里的證書是x.509,SPIFFE格式的URL作為x.509證書的擴(kuò)展字段進(jìn)行識別。SPIFFE 是開源的;k8s環(huán)境下Istio身份的格式類似于“spiffe:///ns//sa/”。我們可以通過使用 Istioctl 工具并手動解析證書中的 Spiffe URL 來獲取證書。我們還可以轉(zhuǎn)儲并檢查 sidecar 的配置以驗證 URL 是否已注入其中。

雙向 TLS

Istio 支持雙向 TLS 來加密服務(wù)之間傳輸?shù)臄?shù)據(jù)。在 Bookinfo 應(yīng)用程序中,所有服務(wù)最初都是基于純 HTTP 協(xié)議相互通信的,其中數(shù)據(jù)沒有加密。當(dāng)一個工作負(fù)載使用雙向 TLS 認(rèn)證策略向另一個工作負(fù)載發(fā)送請求時,工作負(fù)載和 sidecar 之間的數(shù)據(jù)仍然是純文本的,而客戶端 Envoy 和服務(wù)器端 Envoy 建立雙向 TLS 連接。

對等認(rèn)證

應(yīng)用對等身份驗證策略(如上所示)后,Istio 會自動將兩個 PEP 之間的所有流量升級為雙向 TLS。由于默認(rèn)情況下啟用了 Istio 的自動 mTLS,因此仍然可以通過 HTTP 訪問 Reviews-v2。Istio 中的 Auto-mTLS 有助于確定客戶端 Sidecar 可以發(fā)送的流量類型:

如果配置了 DestinationRule,則信任它

如果服務(wù)器有 sidecar 并允許 mTLS,發(fā)送 mTLS – review-v1 & v3

否則,發(fā)送純文本 – review-v2

對等身份驗證僅定義服務(wù)器sidecar可以接收哪種類型的流量。Reviews-v2 沒有 sidecar,所以客戶端向它發(fā)送純文本。服務(wù)器端默認(rèn)處于 PERMISSIVE 模式,這意味著服務(wù)器端可以接受純文本和 mTLS。這在開始將集群與服務(wù)網(wǎng)格集成時非常有用,因為操作員通常無法同時為所有客戶端安裝 Istio sidecar,或者甚至沒有權(quán)限在某些客戶端上這樣做。

目的規(guī)則

與對等身份驗證相比,目標(biāo)規(guī)則定義了客戶端 Sidecar 可以發(fā)送的流量類型。應(yīng)用目標(biāo)規(guī)則策略(如上所示)后,review-v2 無法再訪問,因為目標(biāo)規(guī)則限制 productpage sidecar 發(fā)送 mTLS 流量,而 review-v2 只能接收純文本。

保護(hù)入口流量

Istio 支持通過入口網(wǎng)關(guān)將安全的 HTTPS 服務(wù)暴露給外部流量,因此無需更改內(nèi)部協(xié)議。它總共支持四種模式來在入口啟用 TLS。SIMPLE/MUTUAL 和 ISTIO_MUTUAL 對傳入的請求執(zhí)行 TLS 終止;它們用于配置對 HTTP 服務(wù)的

HTTPS 入口訪問。PASSTHROUGH 和 AUTO_PASSTHROUGH 僅按原樣傳遞入口流量,而不是使用 TLS 終止。

授權(quán)入口流量

添加要求最終用戶 JWT 用于入口網(wǎng)關(guān)的請求身份驗證策略。如果您在授權(quán)標(biāo)頭中提供令牌(其隱式默認(rèn)位置),則 Istio 將使用公鑰集驗證令牌,并在不記名令牌無效時拒絕請求。但是,接受沒有令牌的請求。

要拒絕沒有有效令牌的請求,請?zhí)砑右粋€ AuthorizationPolicy 規(guī)則,為具有請求主體的請求指定 ALLOW 操作,在上面的示例中顯示為 requestPrincipals。requestPrincipals 僅在提供有效的 JWT 令牌時可用。因此,該規(guī)則只允許具有有效令牌的請求。

應(yīng)用RequestAuthentication,如上圖:

  • 使用有效的 JWT 令牌請求 √
  • 請求沒有 JWT 令牌 √
  • 使用無效的 JWT 令牌請求 ×

應(yīng)用AuthorizationPolicy,如上圖

  • 使用有效的 JWT 令牌請求 √
  • 沒有 JWT 令牌的請求 ×
  • 使用無效的 JWT 令牌請求 ×

網(wǎng)格流量中的授權(quán)

AuthorizationPolicy 不僅可以應(yīng)用于入口網(wǎng)關(guān),還可以用于控制網(wǎng)格內(nèi)部的訪問。授權(quán)策略規(guī)范包括選擇器、操作和規(guī)則列表:

· 選擇器字段指定策略的目標(biāo)

· action 字段指定是允許還是拒絕請求;默認(rèn)值為“允許”

· 規(guī)則指定何時觸發(fā)動作

  • 規(guī)則中的 from 字段指定請求的來源
  • 規(guī)則中的 to 字段指定請求的操作
  • when 字段指定應(yīng)用規(guī)則所需的條件

如果應(yīng)用拒絕所有 AuthorizationPolicy,則默認(rèn)命名空間下的服務(wù)之間的所有請求都將被拒絕。如果您隨后應(yīng)用 productpage-viewer 如下例所示,它允許對 productpage 服務(wù)進(jìn)行“GET”操作。

與productpage-viewer AuthorizationPolicy相比,reviews-viewer在spec規(guī)則的source字段多了一項配置;它指定只允許具有“[“cluster.local/ns/default/sa/bookinfo-productpage”]”服務(wù)帳戶的服務(wù)發(fā)送“GET”請求。一一應(yīng)用其他 AuthorizationPolicy 并測試產(chǎn)品頁面。Bookinfo 服務(wù)提供的不同信息都會再次出現(xiàn)在您的網(wǎng)頁上。圖片

概括:Istio 自動提供強(qiáng)大的識別功能。它還具有雙向 TLS,可對流量進(jìn)行加密以抵御中間人攻擊。Auto-mTLS 幫助您加入 Istio,PeerAuthentication 和 DestinationRule 簡化了對配置進(jìn)行細(xì)微調(diào)整的過程。此外,Istio 提供了靈活的服務(wù)訪問控制,因此您可以使用 RequestAuthentication、AuthorizationPolicy 等來設(shè)置細(xì)粒度的訪問策略。

參考

· Istio 官方文檔:https ://istio.io/latest/docs/

· https://istio.io/latest/docs/examples/bookinfo/

原文

https://01.org/blogs/luyaozhong/2021/secure-your-microservices-istio

 

責(zé)任編輯:武曉燕 來源: 新鈦云服
相關(guān)推薦

2022-08-16 08:19:04

Sentinel微服務(wù)

2023-05-08 07:05:26

2019-01-10 13:17:15

微服務(wù)容器微服務(wù)架構(gòu)

2023-10-04 19:01:44

微服務(wù)雪崩故障

2021-11-14 11:53:05

Linux 系統(tǒng)攻防Linux 系統(tǒng)

2022-02-12 21:08:56

微服務(wù)SpringIstio

2020-08-10 08:07:59

IstioK8s微服務(wù)

2021-10-19 14:02:12

服務(wù)器SpringSecurity

2016-09-08 14:40:44

2012-03-01 11:47:01

2018-11-07 10:00:00

微服務(wù)Service MesIstio

2022-07-17 11:45:39

微服務(wù)架構(gòu)

2019-09-25 07:17:42

KubernetesIstio測試

2021-12-26 23:34:00

微服務(wù)Istio壓縮

2023-01-30 15:55:08

2017-07-03 09:50:07

Spring Clou微服務(wù)架構(gòu)

2018-12-12 09:59:47

微服務(wù)架構(gòu)分布式系統(tǒng)

2012-06-14 10:11:05

2024-03-14 11:12:28

2022-05-13 14:01:46

微服務(wù)架構(gòu)安全微服務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號