Spring Boot 应用端到端安全通信 - 在零信任环境中

工程 | Josh Long | 2021年12月8日 | ...

Spring Boot 应用端到端安全通信 - 在零信任环境中

嗨,Spring 粉丝们!今天,我们很高兴地宣布所有功能的正式可用性,这些功能可在零信任环境中为 Spring Boot 应用提供端到端安全通信。您可以为 Spring Boot 应用保护端到端通信或在任何通信点终止传输层安全性。您还可以自动化为保护通信所需的所有 Azure 资源的预配和配置。

将安全通信作为解决方案架构的一部分进行实施可能具有挑战性。许多客户手动轮换其证书或创建自己的解决方案来自动化预配和配置。即使这样,仍然存在数据泄露风险 - 例如,从服务器系统未经授权复制或传输数据。使用 Azure Spring Cloud,所有这些都将为您处理;无需弄清楚这些难题。Azure Spring Cloud 隐藏了大部分复杂性,将安全通信保留为服务中的可配置和可自动化的选项。

“实施端到端加密和零信任一直是我们新 API 平台安全需求的首要任务。这两个要求在我们旧的平台上都无法实现。Azure Spring Cloud 及其与 Azure Key Vault 和托管标识等服务的内置集成将最终帮助我们以易于自动化和管理的方式满足这些要求。” – Claus Lund,基础设施工程主管,National Life Group

“对于 Liantis 而言,在处理非常敏感的财务、医疗和工资数据时,端到端安全通信是不可协商的。同样,Azure Spring Cloud 兑现了其隐藏大部分复杂性、减少与证书预配、配置和证书轮换相关的运营开销的承诺,并通过与 Azure Key Vault 的简单直接集成以无缝方式实现。” - Kurt Roggen,基础设施和安全架构师,Liantis

安全互联网通信

TLS/SSL 协议建立身份和信任,并加密所有类型的通信,从而实现安全通信 - 特别是承载商业数据和个人身份信息的 Web 流量。

您可以使用任何类型的 SSL 证书 - 由证书颁发机构颁发的证书、扩展验证证书、支持任意数量子域的通配符证书或用于开发和测试环境的自签名证书。

零信任 - 安全加载证书

基于“永不信任,始终验证和无凭据”的原则,零信任 通过消除未知和未管理的证书来帮助保护所有通信,并且只信任通过验证身份来共享的证书,然后再授予对这些证书的访问权限。

为了从Azure Key Vault 安全地加载证书,Spring Boot 应用使用托管标识Azure 基于角色的访问控制,而 Azure Spring Cloud 使用提供程序服务主体和 Azure 基于角色的访问控制。此安全加载是使用 Azure Key Vault JCA(Java 密码体系结构)提供程序实现的。

使用 Azure Key Vault

  • 您可以控制证书的存储和分发,以减少意外泄露。
  • 应用程序和服务可以安全地访问证书。Key Vault 使用 Azure 基于角色的访问控制来锁定访问权限,仅限于需要访问的用户,例如管理员,当然还有使用最小权限原则的应用程序。应用程序和服务使用 Azure Active Directory 和 Azure 基于角色的访问控制进行身份验证和授权,以访问证书。
  • 您可以通过其完整的审计跟踪监控 Key Vault 中证书的访问和使用情况。

端到端安全通信或在任何点终止 TLS

如下图所示,通过以下几个通信段:

  • 网络接入点,例如 Azure 前门、Azure 应用网关、F5 BIG-IP 本地流量管理器、Azure API 管理和 Apigee API 管理
  • Spring Boot 应用和
  • 后端系统,例如数据库、消息和事件系统以及应用程序缓存。

您可以为 Spring Boot 应用保护端到端通信或在任何通信点终止传输层安全性。

保护与 Azure Spring Cloud 的通信

段 1 表示保护来自消费者(如浏览器、手机、桌面、信息亭或网络接入点,例如 Azure 前门、Azure 应用网关、F5 BIG-IP 本地流量管理器、Azure API 管理和 Apigee API 管理)到 Azure Spring Cloud 中入口控制器的通信。

默认情况下,段 1 使用 Microsoft 提供的用于 *.azuremicroservices.io 域的 SSL 证书进行保护。您可以通过将自定义域绑定到 Azure Spring Cloud 中的应用程序来在 Azure Key Vault 中应用您自己的 SSL 证书。无需任何代码。

保护从入口控制器到应用程序的通信

段 2 表示保护来自 Azure Spring Cloud 入口控制器到 Azure Spring Cloud 上任何应用程序的通信。您可以启用TLS/SSL 以保护从入口控制器到支持 HTTPS 的应用程序的流量

Spring Boot 应用程序可以使用 Spring 的方法通过使用Azure Key Vault 证书 Spring Boot 启动器 来启用 HTTPS 或安全通信 - 通过三个配置步骤来使用来自 Azure Key Vault 的 SSL 证书保护通信。无需任何代码。

步骤 1 - 包含 Azure Key Vault 证书 Spring Boot 启动器

步骤 2 - 通过指定 Azure Key Vault 的 URI 和证书名称来配置应用程序以从 Azure Key Vault 加载 SSL 证书

步骤 3 - 启用应用程序的托管标识 并向托管标识授予对 Azure Key Vault 的“获取”和“列出”访问权限

应用到托管中间件的通信安全

段3表示任何应用到Azure Spring Cloud中的托管Spring Cloud Config Server和Spring Cloud Service Registry的通信。默认情况下,段3使用Microsoft提供的SSL证书进行保护。

应用间通信安全

段4表示Azure Spring Cloud中一个应用到另一个应用的通信。

您可以使用Azure Key Vault Certificates Spring Boot Starter配置调用方应用程序,以信任HTTPS启用的被调用应用程序提供的SSL证书。

接收方Spring Boot应用程序可以使用Spring的方法启用HTTPS或通过使用Azure Key Vault Certificates Spring Boot Starter来保护通信。

应用到外部系统通信的安全

段5表示在Azure Spring Cloud中运行的应用与外部系统之间的通信。您可以配置在Azure Spring Cloud中运行的应用,以信任任何外部系统提供的SSL证书——使用Azure Key Vault Certificates Spring Boot Starter

隐式地将SSL证书从Key Vault加载到应用中

如果您的Spring代码、Java代码或开源库(例如openssl)依赖于JVM默认的JCA链来隐式地将证书加载到JVM的信任库中,那么您可以将您的SSL证书从Key Vault导入到Azure Spring Cloud并在应用中使用这些证书。

上传用于后端系统的知名公共SSL证书

为了使应用能够与云中或本地系统中的后端服务进行通信,可能需要使用公共SSL证书来保护通信。您可以上传这些SSL证书以保护出站通信。

自动化配置和配置以保护通信

使用ARM模板、Bicep或Terraform,您可以自动化上述所有Azure资源的预配和配置以保护通信。

立即构建您的解决方案并保护通信!

Azure Spring Cloud是适用于Spring Boot应用程序的完全托管服务。它将基础设施和Spring Cloud中间件管理的复杂性从用户手中抽象出来。因此,您可以专注于构建业务逻辑,并让Azure负责动态扩展、修补、安全、合规性和高可用性。只需几个步骤,您就可以预配Azure Spring Cloud,创建应用程序,部署和扩展Spring Boot应用程序,并在几分钟内开始保护通信。

Azure Spring Cloud由Microsoft和VMware联合构建、运营和支持。我们将继续为Azure Spring Cloud带来更多开发人员友好型和企业级功能。我们很乐意听取您如何使用Azure Spring Cloud构建有影响力的解决方案……

将Spring Boot应用程序部署到Azure Spring Cloud并端到端地保护通信!

立即开始

为Spring Boot应用程序端到端保护通信

其他资源

获取Spring新闻通讯

随时关注Spring新闻通讯

订阅

领先一步

VMware提供培训和认证,以加快您的进度。

了解更多

获取支持

Tanzu Spring在一个简单的订阅中提供OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看Spring社区中所有即将举行的活动。

查看全部