如何为分布式系统设计一种安全架构

  发布时间:2025-12-07 21:31:32   作者:玩站小弟   我要评论
译者 | 布加迪审校 | 重楼由于涉及多种多样的大规模组件,保护分布式系统是一项复杂的挑战。鉴于多个服务在可能不安全的网络上交互,未经授权的访问和数据泄露的风险显著增加。本文探讨了一种使用开源项目保护 。

译者 | 布加迪

审校 | 重楼

由于涉及多种多样的分布大规模组件 ,保护分布式系统是式系一项复杂的挑战。鉴于多个服务在可能不安全的统设网络上交互,未经授权的计种架构访问和数据泄露的风险显著增加。本文探讨了一种使用开源项目保护分布式系统的安全实用方法 ,该项目演示了如何集成几种安全机制和技术来应对常见的分布安全挑战,比如身份验证 、式系授权和安全通信 。统设

理解分布式系统中的建站模板计种架构安全挑战

分布式系统涉及多个服务或微服务,这些服务或微服务必须通过网络安全地通信 。安全这类架构中的分布主要安全挑战包括 :

1. 安全通信 :确保服务之间传输的数据经过加密、安全可靠 ,式系以免被窃听或篡改。统设

2. 身份验证 :验证用户和服务的计种架构身份,防止未授权访问。安全

3. 授权 :根据身份已验证的用户和服务的角色和权限,控制允许用户和服务执行的操作  。

4. 策略执行:实施管理服务到服务和用户交互的云计算细粒度访问控制和策略 。

5. 证书管理:管理用于加密数据 、建立服务之间信任的数字证书 。

这个开源项目使用几种集成的技术和解决方案来克服这些挑战 。

项目设置和配置

该项目先使用shell脚本和Docker建立一个安全的环境。设置需要提供数字证书和启动必要的服务,以确保所有组件都准备好进行安全通信 。

设置环境的步骤

1. 提供证书

该项目使用shell脚本(provisioning.sh)以模拟证书颁发机构(CA) ,并为服务生成必要的证书。

复制./provisioning.sh1. 2. 启动服务

Docker Compose用于启动项目中定义的高防服务器所有服务,确保它们被正确配置以实现安全运行。

复制docker-compose up1. 3. 测试服务到服务通信

为了使用证书和JWT令牌验证服务到服务通信  ,提供test_services.sh脚本 。该脚本演示了不同的服务如何使用分配给它们的证书安全地交互。

解决分布式系统中的安全挑战

该项目集成了几项关键技术来解决前面提到的主要安全挑战  。以下是应对每个挑战的方法:

1. 使用相互TLS(mTLS)的安全通信

挑战

在分布式系统中,服务必须安全地通信 ,以防止未经授权的香港云服务器访问和数据泄露。

解决方案

该项目使用相互TLS(mTLS)来保护服务之间的通信。mTLS确保客户端和服务器都使用各自的证书对彼此进行身份验证 。这种相互验证可以防止未经授权的服务与合法服务进行通信。

实施

Nginx被配置为反向代理来处理mTLS 。它需要客户端证书和服务器证书来建立安全连接 ,确保服务之间传输的数据保持机密和防篡改。

2. 使用Keycloak的身份验证

挑战

正确地验证用户和服务的身份对于防止未经授权的访问至关重要。

解决方案

该项目利用开源身份和访问管理解决方案Keycloak来管理身份验证 。免费模板Keycloak支持多种身份验证方法,包括OpenID Connect和客户端凭据 ,既适合用户身份验证 ,又适合服务身份验证  。

用户身份验证:

使用OpenID Connect对用户进行身份验证 。Keycloak配置了客户端(appTest-login-client),该客户端处理用户身份验证流,包括登录 、令牌颁发和回调处理 。

服务身份验证 :

针对服务到服务的身份验证 ,项目使用为客户端凭据授予类型配置的Keycloak客户端(client_credentials-test)。这种方法非常适合在没有用户干预的情况下对服务进行身份验证。

身份验证流示例用户导航到登录页面。源码下载成功登录后 ,Keycloak将用户重定向到带有授权码的回调页面。然后将授权码交换为JWT令牌,用于后续请求。nginx/njs目录中的authn.js文件提供了该流程的详细实施。使用客户端凭据的服务身份验证示例 复制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"1.2.3.4.5.

3. 使用开放策略代理(OPA)和JWT的用户授权

挑战

实施细粒度的访问控制,以确保身份已验证的用户和服务只能访问授权的资源。

解决方案

该项目结合使用开放策略代理(OPA)和JWT令牌来执行授权策略。该项目演示了三种不同的JWT验证策略,以确保可靠的安全性:

从Keycloak获取证书:从Keycloak动态获取证书以验证令牌。使用x5t(拇指纹) :使用令牌中嵌入的拇指纹,从本地信任存储中检索公钥。嵌入式证书验证 :使用嵌入式证书验证令牌 ,确保对照受信任的证书颁发机构(CA)验证证书 。

有关这些策略的详细实施 ,请参阅nginx/njs/token.js文件:https://github.com/apssouza22/security-architecture/blob/main/nginx/njs/token.js 。

4. 使用开放策略代理(OPA)的策略执行

挑战

为服务和用户实施动态灵活的访问控制策略。

解决方案

OPA用于实施细粒度的访问控制策略 。策略用声明性语言(Rego)加以编写,存储在opa/目录中 。这些策略规定了服务可以通信 、用户可以访问资源的条件 ,确保在整个系统中一致地运用访问控制  。

5. 证书管理

挑战

管理服务的数字证书 ,以建立信任和安全通信 。

解决方案:

该项目包括一个强大的证书管理系统。shell脚本(provisioning.sh)用于模拟证书颁发机构(CA),并为每个服务生成证书。这种方法简化了证书管理,并确保所有服务都拥有安全通信所需的凭据。

我们还添加了一个端点来更新服务证书,不需要重启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.key1.

结论

构建安全的分布式系统需要仔细考虑各个安全方面 ,包括安全通信  、身份验证、授权 、策略执行和证书管理 。这个开源项目提供了一个全面的示例 ,表明如何集成多种安全机制来有效地应对这些挑战 。

如果遵循本项目中演示的设置和配置  ,开发人员就可以利用相互TLS、Keycloak、Open Policy Agent和Nginx来构建一套稳健的安全架构 。这些技术结合在一起,就可以为保护分布式系统免受各种威胁提供坚实的基础,确保数据保护和安全访问控制。

原文标题:Designing a Secure Architecture for Distributed Systems,作者:Alexsandro Souza

  • Tag:

相关文章

  • PyPI中发现新恶意Python库

    Check Point的安全研究人员在Python软件包索引PyPI)上发现了10个恶意软件包,这是Python开发人员使用的主要Python软件包索引。第一个恶意软件包是Ascii2text,这是一
    2025-12-07
  • AI算力驱动散热方式变革:数据中心液冷散热技术分析

    生成式AI和各种大模型给我们带来全新的应用体验,也对算力提出了更高的需求。对于数据中心运营管理者而言,由于GPU服务器的功率密度大幅提升,对数据中心的制冷设备和技术提出了更高要求。因此,他们除了关注算
    2025-12-07
  • 如何为企业数据中心存储部署在边缘做好准备

    根据研究机构的预测,到2025年,40%以上的企业存储将部署在边缘,与2022年的15%相比显著增长。此外,到2025年,大型企业存储在内部部署设施、边缘设施或公共云中的文件或对象存储的非结构化数据容
    2025-12-07
  • 数据中心几个基础功能组件及其作用

    数据中心不再仅仅是一座建筑,而是一个庞大而精密的系统,汇聚着各种关键要素。主机房、辅助区、支持区和行政管理区等各个区域共同构成了这个数字化的大脑。每个区域都扮演着特定的角色,它们如同身体的不同器官,各
    2025-12-07
  • 如何实现存储层数据加密,不妨试试透明加密(TDE)

    数据库透明加密Transparent Data Encryption,简称TDE)是一种用于加密数据库存储的数据的技术,它可以在数据库系统的文件或磁盘层面对数据进行加密,而不需要修改应用程序代码。TD
    2025-12-07
  • 2024 年及以后影响数据中心的主要趋势和技术

    有许多趋势和技术在全球范围内影响着数据中心。 其中包括实现可持续性的压力、不断增加的机架密度、应对苛刻的人工智能工作负载、对更多数据中心的需求以及先进冷却的实施。 Omdia 云
    2025-12-07

最新评论