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

如何為分布式系統(tǒng)設計一種安全架構

譯文 精選
安全 應用安全
由于涉及多種多樣的大規(guī)模組件,保護分布式系統(tǒng)是一項復雜的挑戰(zhàn)。鑒于多個服務在可能不安全的網(wǎng)絡上交互,未經(jīng)授權的訪問和數(shù)據(jù)泄露的風險顯著增加。

譯者 | 布加迪

審校 | 重樓

由于涉及多種多樣的大規(guī)模組件,保護分布式系統(tǒng)是一項復雜的挑戰(zhàn)。鑒于多個服務在可能不安全網(wǎng)絡上交互,未經(jīng)授權的訪問和數(shù)據(jù)泄露的風險顯著增加。本文探討了一種使用開源項目保護分布式系統(tǒng)的實用方法,該項目演示了如何集成幾種安全機制和技術來應對常見的安全挑戰(zhàn),比如身份驗證、授權和安全通信。

理解分布式系統(tǒng)中的安全挑戰(zhàn)

分布式系統(tǒng)涉及多個服務或微服務,這些服務或微服務必須通過網(wǎng)絡安全地通信。類架構中的主要安全挑戰(zhàn)包括

1. 安全通信確保服務之間傳輸?shù)臄?shù)據(jù)經(jīng)過加密、安全可靠,以免被竊聽或篡改。

2. 身份驗證:驗證用戶和服務的身份,防止未授權訪問。

3. 授權根據(jù)身份驗證的用戶和服務的角色和權限,控制允許用戶和服務執(zhí)行的操作。

4. 策略執(zhí)行實施管理服務到服務和用戶交互的細粒度訪問控制和策略。

5. 證書管理管理用于加密數(shù)據(jù)、建立服務之間信任數(shù)字證書

這個開源項目使用幾種集成的技術和解決方案來克服這些挑戰(zhàn)。

項目設置和配置

該項目先使用shell腳本和Docker建立一個安全的環(huán)境。設置需要提供數(shù)字證書和啟動必要的服務,以確保所有組件都準備好進行安全通信。

設置環(huán)境的步驟

1. 提供證書

該項目使用shell腳本provisioning.sh)以模擬證書頒發(fā)機構CA,并為服務生成必要的證書。


./provisioning.sh

2. 啟動服務

Docker Compose用于啟動項目中定義的所有服務,確保它們被正確配置以實現(xiàn)安全運行。


docker-compose up

3. 測試服務到服務通信

為了使用證書和JWT令牌驗證服務到服務通信,提供test_services.sh腳本。腳本演示了不同的服務如何使用分配給它們的證書安全地交互。

解決分布式系統(tǒng)中的安全挑戰(zhàn)

該項目集成了幾關鍵技術來解決前面提到的主要安全挑戰(zhàn)。以下是應對每個挑戰(zhàn)的方法

1. 使用相互TLSmTLS)的安全通信

挑戰(zhàn)

在分布式系統(tǒng)中,服務必須安全地通信,以防止未經(jīng)授權的訪問和數(shù)據(jù)泄露。

解決方案

該項目使用相互TLSmTLS來保護服務之間的通信。mTLS確??蛻?/span>和服務器使用各自的證書對彼此進行身份驗證。這種相互驗證可以防止未經(jīng)授權的服務與合法服務進行通信。

實施

Nginx被配置為反向代理來處理mTLS。它需要客戶端證書和服務器證書來建立安全連接,確保服務之間傳輸?shù)臄?shù)據(jù)保持機密和防篡改。

2. 使用Keycloak的身份驗證

挑戰(zhàn)

正確地驗證用戶和服務身份于防止未經(jīng)授權的訪問至關重要。

解決方案

該項目利用開源身份和訪問管理解決方案Keycloak來管理身份驗證。Keycloak支持多種身份驗證方法,包括OpenID Connect和客戶憑據(jù),適合用戶身份驗證,又適合服務身份驗證。

  • 用戶身份驗證:

使用OpenID Connect對用戶進行身份驗證。Keycloak配置了客戶端(appTest-login-client,該客戶端處理用戶身份驗證流,包括登錄、令牌頒發(fā)和回調處理。

  • 服務身份驗證:

針對服務到服務的身份驗證,項目使用為客戶端憑據(jù)授予類型配置的Keycloak客戶端client_credentials-test。這種方法非常適合在沒有用戶干預的情況下對服務進行身份驗證。

身份驗證流示例

  • 用戶導航到登錄頁面。
  • 成功登錄后,Keycloak將用戶重定向到帶有授權碼的回調頁面。
  • 然后將授權碼交換為JWT令牌,用于后續(xù)請求。nginx/njs目錄中的authn.js文件提供了該流程的詳細實施。

使用客戶端憑據(jù)的服務身份驗證示例

curl -X POST "http://localhost:9000/realms/tenantA/protocol/openid-connect/token" \
 -H "Content-Type: application/x-www-form-urlencoded" \
 -d "grant_type=client_credentials" \
 -d "client_id=client_credentials-test" \
 -d "client_secret=your-client-secret-here"

3. 使用開放策略代理OPA和JWT用戶授權

挑戰(zhàn)

實施細粒度的訪問控制,以確保身份驗證的用戶和服務只能訪問授權的資源。

解決方案

該項目結合使用開放策略代理OPA和JWT令牌來執(zhí)行授權策略。該項目演示了三種不同的JWT驗證策略,以確保可靠的安全性

  • 從Keycloak獲取證書從Keycloak動態(tài)獲取證書以驗證令牌。
  • 使用x5t拇指紋):使用令牌中嵌入的拇指紋,從本地信任存儲中檢索公鑰。
  • 嵌入式證書驗證使用嵌入式證書驗證令牌,確保對照受信任的證書頒發(fā)機構CA驗證證書。

有關這些策略的詳細實施,請參閱nginx/njs/token.js文件https://github.com/apssouza22/security-architecture/blob/main/nginx/njs/token.js。

4. 使用開放策略代理OPA)的策略執(zhí)行

挑戰(zhàn)

服務和用戶實施動態(tài)靈活的訪問控制策略

解決方案

OPA用于實施細粒度的訪問控制策略。策略用聲明性語言Rego)加以編寫,存儲在opa/目錄中。這些策略規(guī)定了服務可以通信、用戶可以訪問資源的條件,確保在整個系統(tǒng)中一致地運用訪問控制。

5. 證書管理

挑戰(zhàn)

管理服務的數(shù)字證書,以建立信任和安全通信

解決方案

該項目包括一個強大的證書管理系統(tǒng)。shell腳本provisioning.sh用于模擬證書頒發(fā)機構CA),并為每個服務生成證書。這種方法簡化了證書管理,并確保所有服務都擁有安全通信所需的憑據(jù)。

我們還添加了一個端點來更新服務證書,不需要重啟nginx。

curl --insecure https://localhost/certs --cert certificates/gen/serviceA/client.crt --key certificates/gen/serviceA/client.key -F cert=@certificates/gen/serviceA/client.crt -F key=@certificates/gen/serviceA/client.key

結論

構建安全的分布式系統(tǒng)需要仔細考慮各安全方面,包括安全通信、身份驗證、授權、策略執(zhí)行和證書管理。這個開源項目提供了一個全面的示例,表明如何集成多種安全機制來有效地應對這些挑戰(zhàn)。

如果遵循本項目中演示的設置和配置,開發(fā)人員可以利用相互TLS、Keycloak、Open Policy Agent和Nginx來構建一套穩(wěn)健的安全架構。這些技術結合在一起,就可以為保護分布式系統(tǒng)免受各種威脅提供堅實的基礎,確保數(shù)據(jù)保護和安全訪問控制。

原文標題:Designing a Secure Architecture for Distributed Systems,作者:Alexsandro Souza

責任編輯:華軒 來源: 51CTO
相關推薦

2023-10-16 09:00:00

數(shù)據(jù)庫分布式系統(tǒng)

2017-12-05 14:55:56

2023-05-29 14:07:00

Zuul網(wǎng)關系統(tǒng)

2024-05-13 08:02:10

PostgreSQLRedisson監(jiān)控

2019-08-27 07:40:47

2023-02-11 00:04:17

分布式系統(tǒng)安全

2024-09-23 04:00:00

java架構分布式系統(tǒng)

2016-09-30 10:13:07

分布式爬蟲系統(tǒng)

2023-02-10 00:04:53

2023-10-08 10:49:16

搜索系統(tǒng)分布式系統(tǒng)

2018-09-06 22:49:31

分布式架構服務器

2021-07-03 19:21:50

架構分布式系統(tǒng)

2015-05-28 10:58:57

分布式彈性計算云計算架構

2024-03-25 08:35:07

分布式系統(tǒng)設計

2022-07-08 07:22:44

數(shù)據(jù)庫架構運維

2023-02-23 07:55:41

2018-07-11 09:34:55

分布式架構高可用

2013-01-07 10:29:31

大數(shù)據(jù)

2017-12-12 14:51:15

分布式緩存設計

2019-10-10 09:16:34

Zookeeper架構分布式
點贊
收藏

51CTO技術棧公眾號