本周 Spring 动态 - 2022 年 10 月 4 日

工程 | Josh Long | 2022 年 10 月 04 日 | ...

各位 Spring 粉丝们好!欢迎来到新一期的《本周 Spring 动态》!今天是 2022 年 10 月 4 日,我在德克萨斯州奥斯汀,参加之前名为 Kafka Summit 的新版本展会,在这里与大家交流 Spring Boot 和 Apache Kafka 的绝佳机会。12 日,我将前往比利时安特卫普,参加精彩的 Devoxx 展会。10 月 17-20 日,我将在拉斯维加斯参加新版的 JavaOne。还有更多安排,但具体细节暂时保密。敬请期待!

至于现在,我很高兴来到这里!这周有很多精彩的内容要分享,所以让我们直接开始吧……

一个 Bootiful 播客:思想领袖 Chris Richardson(不,我使用这个头衔并非出于讽刺!)

工程 | Josh Long | 2022 年 09 月 29 日 | ...

各位 Spring 粉丝们好!在本期节目中,Josh Long (@starbuxman) 与他的朋友 Chris Richardson (@crichardson) 进行了交流。Chris 在云计算、响应式编程、微服务、领域驱动设计、事件溯源等众多领域,早在这些概念流行起来之前就对其进行了阐述和推进。另外,我们以前还是同事!

想认识我们生态系统中更多像 Chris 这样杰出的人吗?SpringOne 2022 就要来了!我感觉就像是在一个重要的节日前,那种既紧张又兴奋的心情,因为你可以收到礼物!同时,Spring Boot 3 和 Spring Framework 6 也即将发布。我们将在…公布…

删除密码:Spring Boot 应用到 Azure 服务的无密码连接

工程 | Josh Long | 2022 年 09 月 27 日 | ...

使用用户名/密码凭据从一个应用程序访问另一个应用程序会带来巨大的安全风险。今天,我们宣布面向 Java 应用程序连接 Azure 数据库和事件服务提供无密码连接预览版,让您最终摆脱使用密码。

密码带来的安全挑战

密码应谨慎使用,开发人员绝不应将密码存放在不安全的位置。许多 Java 应用程序使用用户名和密码连接到后端数据、缓存、消息传递和事件服务,或使用访问令牌或连接字符串等其他敏感凭据。如果泄露,这些密码可能被用于未经授权访问敏感信息,例如您为即将到来的营销活动构建的销售目录,或者所有必须保密的客户数据。

将密码直接嵌入应用程序本身会带来巨大的安全风险,原因有很多,包括通过代码仓库被发现(见下图图 1)。许多开发人员使用环境变量将此类密码外部化,以便应用程序可以从不同环境中加载它们。然而,这只是将风险从代码本身转移到了执行环境。任何获得环境访问权限的人都可以窃取密码,这反过来又会增加您的数据泄露风险。

图 1 – 显示嵌入用户名和密码连接数据库的 Java 代码

我们的客户可能对连接 Azure 服务有严格的安全要求,不允许向开发人员、操作员或任何其他人暴露密码。他们通常使用密钥保管库来存储密码并将其加载到应用程序中,并通过添加密码轮换要求和流程来进一步降低风险。然而,这会增加操作复杂性,并可能导致应用程序连接中断。

无密码连接 – 零信任

现在,您可以在应用程序中使用无代码配置连接到基于 Azure 的服务,无需密码。您不再需要轮换密码。零信任采用“永不信任,始终验证且无需凭据”的原则,通过在授予对后端服务的访问权限之前仅在验证身份后才信任机器或用户来帮助保护所有通信。

“我们拥有的每个密码和每个密钥保管库都是潜在的负担,增加了额外的开销和管理成本。我很高兴看到更多的认证和授权由我们处理,并作为简单的集成方式发布到 Azure 上的 Java 和 Spring 生态系统中。现在 PostgreSQL 支持无密码连接了,当我删除我们的密钥保管库时,我不会流一滴眼泪。”
-Jonathan Jones,首席解决方案架构师,瑞士再保险有限公司。(瑞士)

使用托管身份和 Azure RBAC(基于角色的访问控制)相结合是 Java 应用程序安全、无密码连接到 Azure 服务的推荐身份验证选项。开发人员或操作员无需手动跟踪和管理托管身份的许多不同机密,因为这些任务由 Azure 在内部安全地处理。

您可以使用 Service Connector(见下图图 2)配置到 Azure 服务的无密码连接,或者您可以手动配置。Service Connector 在 Azure Spring Apps、App Service 和 Azure Container Apps 等应用程序托管服务中启用托管身份。它使用托管身份和 Azure RBAC 为后端服务配置无密码连接,并向应用程序提供必要的连接信息——不再需要密码。

图 2 – Service Connector 配置 Java 应用到 PostgreSQL 数据库的无密码连接

如果您检查已配置为无密码连接的应用程序运行环境,可以看到完整的连接字符串。例如,图 3 显示了它如何包含数据库服务器地址、数据库名称以及将身份验证委托给 Microsoft Azure 的 JDBC 身份验证插件的指令。

图 3 – 数据源配置“spring.datasource.url”显示无密码连接

让我们考虑一个使用 Spring Cloud Azure starter 连接到 PostgreSQL 数据库的 Spring Boot 应用程序。该 starter 为 Spring Data JPA 模块组合了一个不含密码的连接字符串。从连接字符串中,驱动程序知道必须加载 Azure 的 JDBC 身份验证插件,该插件使用 Azure Identity Client Library 获取访问令牌。驱动程序使用该令牌作为密码登录数据库——不再需要密码。

对于本地开发和测试,开发人员可以使用相同的配置连接到服务而无需使用密码。您将通过 Azure CLI、IntelliJ 或任何开发工具进行身份验证,并使用该身份安全地授权应用程序无需密码即可连接到 Azure 服务。

了解更多并删除密码!

您可以在应用程序中摆脱使用密码。立即迁移您现有的 Java 应用程序,使用无密码连接到 Azure 服务!

了解更多关于无密码连接的信息 – https://aka.ms/Delete-Passwords

资源

<tbody>

<tr>
    <td>Azure Service</td>
    <td>Java Quickstart</td>
    <td>Spring Quickstart</td>
    <td>Migration Guide</td>
</tr>


<tr>
    <td> Azure Database for MySQL</td>
    <td>
    <a href="https://learn.microsoft.com/en-us/azure/mysql/single-server/connect-java?toc=%2Fazure%2Fdeveloper%2Fintro%2Ftoc.json&amp;bc=%2Fazure%2Fdeveloper%2Fintro%2Fbreadcrumb%2Ftoc.json&amp;tabs=passwordless">JDBC</a>
    </td>
    <td>
        <div><a href="https://learn.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-data-jdbc-with-azure-mysql?tabs…

本周 Spring 动态 - 2022 年 9 月 27 日

工程 | Josh Long | 2022 年 09 月 27 日 | ...

各位 Spring 粉丝们好!欢迎来到新一期的《本周 Spring 动态》!

已经是九月的最后一周了!一年已经过大半。天黑得越来越早。南瓜香料拿铁的季节也到了。虽然日照减少、天气转冷有点令人沮丧,但每到这个时候我仍然感到兴奋和高兴。你知道为什么吗?

SpringOne 2022 就要来了!我感觉就像在一个重要的节日前,那种既紧张又兴奋的心情,因为你可以收到礼物!同时,Spring Boot 3 和 Spring Framework 6 也即将发布。我们当然会在这里,在 Spring 博客上公布所有消息,但如果您想有机会向原作者学习,我希望您能加入我们,于 2022 年 12 月 6 日至 8 日,就在我的家乡,美国我最喜欢的西海岸城市旧金山。悄悄话:如果您现在注册,使用代码 S1VM22_Advocate_200,可以获得 200 美元的门票折扣……

Spring Boot 3.0.0-M5 中的原生支持

工程 | Stéphane Nicoll | 2022 年 09 月 26 日 | ...

Spring 团队致力于 Spring 应用程序的原生镜像支持已有一段时间。在 Spring Boot 2 的 Spring Native 实验项目中孵化了 3 年多后,原生支持将在 Spring Framework 6 和 Spring Boot 3 中正式发布!

原生镜像为 Java 应用程序提供了几乎即时的启动时间和更低的内存消耗。最近发布的 Spring Boot 3.0.0-M5 标志着我们首次就原生支持向更广泛的社区征求反馈。如果您需要回顾基础知识,请参考 3 月底的Ahead Of Time 基础知识博客文章。您还可以了解如何为 Spring Boot 3.0 准备您的应用程序……

我的 SpringOne 2022

工程 | Josh Long | 2022 年 09 月 23 日 | ...

让我感到尴尬的是,我花了很长时间才体会和理解到,软件开发的魔鬼藏在细节里。编写快乐路径的业务逻辑并不是难点!难的是失败案例、可观测性、韧性以及流程。是安全性和其他所谓的非功能性需求。是为*敏捷性*进行架构设计。是生产环境。Spring 之所以独特,是因为它位于许多令人兴奋的应用程序开发讨论的交汇点。

Spring 的社区包罗万象,是其关键的特色之一。这种讨论的多样性意味着任何试图涵盖所有想法的会议都面临着艰巨的任务。我不知道还有哪个展会——我在生命中参加并发表过*无数次*展会和活动!——能像 SpringOne 一样全面涵盖应用程序开发的不同维度……

Spring Batch 5.0.0-M6 和 4.3.7 发布了!

发布 | Mahmoud Ben Hassine | 2022 年 09 月 22 日 | ...

我很高兴地宣布 Spring Batch 5.0.0-M6 现已可从我们的里程碑仓库获取,并且 4.3.7 可从 Maven Central 获取。版本 4.3.7 是一个补丁版本,可以作为 4.3.6 的直接替代。您可以在此处找到其发布说明。这篇博客文章主要介绍新的里程碑版本 5.0.0-M6。在这个里程碑版本中,我们专注于改进 Spring Batch 的配置过程,使其更加灵活和直接。这篇博客文章将介绍框架在此领域的主要变化,并展示引入的新特性…

Spring Boot 2.6.12 现已发布

发布 | Andy Wilkinson | 2022 年 09 月 22 日 | ...

我代表团队以及所有贡献者,很高兴地宣布 Spring Boot 2.6.12 已发布,现已可从 Maven Central 获取。

此版本包含33 项错误修复、文档改进和依赖升级。感谢所有通过问题报告和拉取请求做出贡献的人。

Java 19

在本周早些时候正式发布后,现已支持 Java 19。

您如何提供帮助?

如果您有兴趣提供帮助,请查看 issue 仓库中带有 “ideal for contribution”(适合贡献)标签的问题。如果您有一般性问题,请在 stackoverflow.com 上使用 spring-boot 标签提问,或在 Gitter 上与社区交流……

Spring Boot 2.7.4 现已发布

发布 | Andy Wilkinson | 2022 年 09 月 22 日 | ...

我代表团队以及所有贡献者,很高兴地宣布 Spring Boot 2.7.4 已发布,现已可从 Maven Central 获取。

此版本包含48 项错误修复、文档改进和依赖升级。感谢所有通过问题报告和拉取请求做出贡献的人。

Java 19

在本周早些时候正式发布后,现已支持 Java 19。

您如何提供帮助?

如果您有兴趣提供帮助,请查看 issue 仓库中带有 “ideal for contribution”(适合贡献)标签的问题。如果您有一般性问题,请在 stackoverflow.com 上使用 spring-boot 标签提问,或在 Gitter 上与社区交流……

Spring Boot 3.0.0-M5 现已发布

发布 | Scott Frederick | 2022 年 09 月 22 日 | ...

我代表团队以及所有贡献者,很高兴地宣布 Spring Boot 3.0.0-M5 已发布,现已可从 https://repo.spring.io/milestone 获取。

此版本包含153 项增强、文档改进、依赖升级和错误修复。值得注意的新功能包括

  • 改进的提前编译 (AOT) 处理和原生镜像支持
  • 改进的 actuator 端点净化
  • 重新启用了 Jersey 支持

有关更多详细信息和升级说明,请参阅发布说明

感谢所有通过问题报告和拉取请求做出贡献的人……

订阅 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您快速提升。

了解更多

获取支持

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

了解更多

近期活动

查看 Spring 社区的所有近期活动。

查看全部