注释
Azure Spring Apps 是 Azure Spring Cloud 服务的新名称。 虽然该服务有新名称,但一些地方仍会使用旧名称,我们仍在更新屏幕截图、视频和图形等资产。
本文适用于:✔️ 标准 ✔️ 企业
此参考体系结构是使用 Azure Spring Apps 的典型企业中心和分支设计的基础。 在设计中,Azure Spring Apps 部署在一个依赖于承载共享服务的网络中心的单一分支中。 该体系结构是使用组件构建的,以实现 Microsoft Azure Well-Architected Framework 中的信条。
Azure Spring Apps 有两种风格:标准计划和企业计划。
Azure Spring Apps Standard 计划由 Spring Cloud 配置服务器、Spring Cloud 服务注册表和 kpack 生成服务组成。
Azure Spring Apps Enterprise 计划由 VMware Tanzu 生成服务、VMware Tanzu 的应用程序配置服务、VMware® Tanzu® 服务注册表、适用于 VMware Tanzu® 的 Spring Cloud Gateway 和 VMware Tanzu®® 的 API 门户组成。™
有关此体系结构的实现,请参阅 GitHub 上的 Azure Spring Apps 参考体系结构。
此体系结构的部署选项包括 Azure 资源管理器(ARM)、Terraform、Azure CLI 和 Bicep。 此存储库中的工件提供了一个基础,您可以根据需要为您的环境进行自定义。 可以将 Azure 防火墙或应用程序网关等资源分组到不同的资源组或订阅中。 此分组有助于将不同的功能分开,例如 IT 基础结构、安全性、业务应用程序团队等。
规划地址空间
Azure Spring Apps 需要两个专用子网:
- 服务运行时
- Spring Boot 应用程序
每个子网都需要一个专用的 Azure Spring Apps 群集。 多个群集不能共享相同的子网。 每个子网的最小大小为 /28。 Azure Spring Apps 可以支持的应用程序实例数因子网大小而异。 可以在 虚拟网络要求 部分中找到详细的虚拟网络要求,在虚拟网络中部署 Azure Spring Apps。
警告
所选子网大小不能与现有虚拟网络地址空间重叠,不应与任何对等或本地子网地址范围重叠。
用例
此体系结构的典型用途包括:
- 专用应用程序:在混合云环境中部署的内部应用程序
- 公共应用程序:面向外部的应用程序
这些用例是类似的,除了它们的安全性和网络流量规则。 此体系结构旨在支持各自的细微差别。
专用应用程序
以下列表描述了专用应用程序的基础结构要求。 这些要求在高度管控的环境中很典型。
- 子网必须只有一个 Azure Spring Apps 实例。
- 应强制实施至少一个安全基准。
- 应用程序主机域名服务(DNS)记录应存储在 Azure 专用 DNS 中。
- Azure 服务依赖项应通过服务终结点或专用链接进行通信。
- 静态数据应加密。
- 传输中的数据应加密。
- DevOps 部署管道可以使用(例如 Azure DevOps),并且需要与 Azure Spring 应用建立网络连接。
- 出口流量应通过中央网络虚拟设备(NVA)(例如 Azure 防火墙)传输。
- 如果 Azure Spring Apps 配置服务器 用于从存储库加载配置属性,则存储库必须是专用的。
- Microsoft的零信任安全方法要求机密、证书和凭据存储在安全保管库中。 建议的服务是 Azure Key Vault。
- 本地和云中主机的名称解析应该是双向的。
- 除了控制平面流量之外,没有直接访问公共互联网。
- 不得修改由 Azure Spring Apps 部署管理的资源组。
- 不得修改由 Azure Spring Apps 部署管理的子网。
以下列表显示了构成设计的组件:
- 本地网络
- 域名服务(DNS)
- 网关
- Hub订阅
- 应用程序网关子网
- Azure 防火墙子网
- 共享服务子网
- 已连接的订阅
- Azure Bastion 子网
- 虚拟网络对等互连
以下列表描述了此参考体系结构中的 Azure 服务:
Azure Key Vault:硬件支持的凭据管理服务,与Microsoft标识服务和计算资源紧密集成。
Azure Monitor:适用于在 Azure 和本地部署的应用程序的监视服务套件。
Azure Pipelines:一项功能齐全的持续集成/持续开发(CI/CD)服务,可自动将更新的 Spring Boot 应用部署到 Azure Spring Apps。
Microsoft Defender for Cloud:适用于本地、多个云和 Azure 工作负载的统一安全管理和威胁防护系统。
Azure Spring Apps:这是一个托管服务,专为 Java Spring Boot 应用程序和 .NET Steeltoe 应用程序而设计和优化。
下图展示了一个架构良好的中心与辐射设计,可以满足上述要求:
公共应用程序
以下列表描述了公共应用程序的基础结构要求。 这些要求在高度管控的环境中很典型。
- 子网必须只有一个 Azure Spring Apps 实例。
- 应强制实施至少一个安全基准。
- 应用程序主机域名服务(DNS)记录应存储在 Azure 专用 DNS 中。
- 应启用 Azure DDoS 防护。
- Azure 服务依赖项应通过服务终结点或专用链接进行通信。
- 静态数据应加密。
- 传输中的数据应加密。
- DevOps 部署管道可以使用(例如 Azure DevOps),并且需要与 Azure Spring 应用建立网络连接。
- 出口流量应通过中央网络虚拟设备(NVA)(例如 Azure 防火墙)传输。
- 入口流量应至少由应用程序网关或 Azure Front Door 管理。
- Internet 可路由地址应存储在 Azure 公共 DNS 中。
- Microsoft的零信任安全方法要求机密、证书和凭据存储在安全保管库中。 建议的服务是 Azure Key Vault。
- 本地和云中主机的名称解析应该是双向的。
- 除了控制平面流量之外,没有直接访问公共互联网。
- 不得修改由 Azure Spring Apps 部署管理的资源组。
- 不得修改由 Azure Spring Apps 部署管理的子网。
以下列表显示了构成设计的组件:
- 本地网络
- 域名服务(DNS)
- 网关
- 枢纽订阅
- 应用程序网关子网
- Azure 防火墙子网
- 共享服务子网
- 已连接的订阅
- Azure Bastion 子网
- 虚拟网络对等体
以下列表描述了此参考体系结构中的 Azure 服务:
Azure 应用程序防火墙:Azure 应用程序网关的一项功能,可集中保护应用程序免受常见攻击和漏洞的伤害。
Azure 应用程序网关:是一种负责应用流量的负载均衡器,并在第 7 层运行传输层安全 (TLS) 卸载。
Azure Key Vault:硬件支持的凭据管理服务,与Microsoft标识服务和计算资源紧密集成。
Azure Monitor:适用于在 Azure 和本地部署的应用程序的监视服务套件。
Azure Pipelines:一项功能齐全的持续集成/持续开发(CI/CD)服务,可自动将更新的 Spring Boot 应用部署到 Azure Spring Apps。
Microsoft Defender for Cloud:适用于本地、多个云和 Azure 工作负载的统一安全管理和威胁防护系统。
Azure Spring Apps:这是一个托管服务,专为 Java Spring Boot 应用程序和 .NET Steeltoe 应用程序而设计和优化。
下图显示了一个架构良好的集线器和辐射结构,可满足之前提到的要求。 只有中心虚拟网络与 Internet 通信:
Azure Spring Apps 内部网络连接
Azure Spring Apps 中的应用程序可以与各种 Azure、本地和外部资源通信。 通过使用中心节点和辐射拓扑,应用程序可以使用 ExpressRoute 或站点到站点虚拟专用网络 (VPN) 将流量路由到外部网络或本地网络。
Azure 优秀架构框架注意事项
Azure Well-Architected 框架 是建立强大基础结构基础时要遵循的一套指导原则。 框架包含以下类别:成本优化、卓越运营、性能效率、可靠性和安全性。
成本优化
由于分布式系统设计的性质,基础结构蔓延是现实。 这种现实会导致意外和无法控制的成本。 Azure Spring Apps 是使用可缩放的组件构建的,以便满足需求并优化成本。 此体系结构的核心是 Azure Kubernetes 服务(AKS)。 该服务旨在降低管理 Kubernetes 的复杂性和运营开销,其中包括群集运营成本的效率。
可以将不同的应用程序和应用程序类型部署到 Azure Spring Apps 的单个实例。 该服务支持自动缩放由指标或计划触发的应用程序,这些指标或计划可以提高利用率和成本效益。
还可以使用 Application Insights 和 Azure Monitor 来降低运营成本。 通过全面的日志记录解决方案提供的可见性,可以实现自动化以实时扩展系统组件。 还可以分析日志数据,以在应用程序代码中揭示效率低下的问题,以便改进系统的总体成本和性能。
卓越运营
Azure Spring Apps 解决了卓越运营的多个方面。 可以结合这些方面来确保服务在生产环境中高效运行,如以下列表所述:
- 可以使用 Azure Pipelines 来确保部署可靠且一致,同时有助于避免人为错误。
- 可以使用 Azure Monitor 和 Application Insights 来存储日志和遥测数据。 可以评估收集的日志和指标数据,以确保应用程序的运行状况和性能。 应用程序性能监视(APM)通过 Java 代理完全集成到服务中。 此代理提供对所有已部署应用程序和依赖项的可见性,而无需额外的代码。 有关详细信息,请参阅博客文章 毫不费力地监视 Azure Spring Apps中的应用程序和依赖项。
- 可以使用 Microsoft Defender for Cloud 来确保应用程序通过提供平台来分析和评估提供的数据来维护安全性。
- 该服务支持各种部署模式。 有关详细信息,请参阅在 Azure Spring Apps 中设置过渡环境。
可靠性
Azure Spring Apps 基于 AKS 构建。 虽然 AKS 通过群集提供一定程度的复原能力,但此参考体系结构会进一步整合服务和体系结构注意事项,以提高应用程序的可用性(如果有组件故障)。
通过在清晰定义的枢纽辐射设计的基础上构建,此架构的基础确保您可以将其部署到多个地区。 对于专用应用程序用例,体系结构使用 Azure 专用 DNS 来确保在地理故障期间持续可用性。 对于公共应用程序用例,Azure Front Door 和 Azure 应用程序网关可确保可用性。
安全
此体系结构的安全性通过遵循行业定义的控件和基准来解决。 在此上下文中,“控制”是指简洁而明确的最佳做法,例如“在实现信息系统访问时采用最低特权原则”。 此体系结构中的控制措施来自 云控制矩阵(云安全联盟 (CCM)),以及由 Internet 安全中心(CIS)提供的 Microsoft Azure 基础基准(MAFB)。 在应用的控件中,重点是治理、网络和应用程序安全性的主要安全设计原则。 负责处理标识、访问管理和存储的设计原则,因为它们与目标基础结构相关。
治理
此架构在治理中主要解决的问题是通过隔离网络资源来实现隔离。 在 CCM 中,DCS-08 建议对数据中心进行入口和出口控制。 为了满足控制要求,架构采用网络安全组(NSG)的中心和节点设计,以过滤资源之间的东西向流量。 该体系结构还会筛选枢纽中的中心服务与分支中的资源之间的流量。 该体系结构使用 Azure 防火墙的实例来管理 Internet 与体系结构中的资源之间的流量。
以下列表显示了此参考中解决数据中心安全性的控件:
CSA CCM 控件 ID | CSA CCM 控制域 |
---|---|
DCS-08 | 数据中心安全未经授权的人员进入 |
网络
支持此体系结构的网络设计派生自传统的中心辐射模型。 此决策可确保网络隔离是一种基础构造。 CCM 控制 IVS-06 建议在受信任和不受信任的环境之间限制和监视网络和虚拟机之间的流量。 此体系结构通过实施 NSG 来控制东西方流量(在“数据中心”内),以及用于南北流量的 Azure 防火墙(位于“数据中心”外部)。 CCM 控制 IPY-04 建议基础结构应使用安全网络协议在服务之间交换数据。 支持此体系结构的 Azure 服务都使用标准安全协议,例如用于 HTTP 和 SQL 的 TLS。
以下列表显示了用于解决本参考中网络安全的 CCM 控件:
CSA CCM 控制编号 | CSA CCM 控制域 |
---|---|
IPY-04 | 网络协议 |
IVS-06 | 网络安全 |
通过定义 MAFB 中的控制,进一步保护网络实现。 控制措施确保限制从公共互联网进入环境的流量。
以下列表显示了解决本参考中网络安全的 CIS 控件:
CIS 控制 ID | CIS 控制说明 |
---|---|
6.2 | 确保限制从互联网进行的 SSH 访问。 |
6.3 | 确保 SQL 数据库不允许从任何 IP 地址(0.0.0.0/0)进行访问。 |
6.5 | 确保网络观察者已“启用”。 |
6.6 | 确保使用 UDP 的入口受 Internet 限制。 |
Azure Spring Apps 要求在安全环境中部署时需要管理流量从 Azure 出口。 请允许在 中列出的客户在虚拟网络中运行 Azure Spring Apps 责任的网络和应用程序规则。
应用程序安全性
此设计原则涵盖标识、数据保护、密钥管理和应用程序配置的基本组件。 根据设计,在 Azure Spring Apps 中部署的应用程序以仅满足运行所需的最低权限运行。 使用服务时,授权控件集与数据保护直接相关。 密钥管理增强了这种分层的应用程序安全方法。
以下列表显示了用于解决此参考中密钥管理的 CCM 控件:
CSA CCM 控件 ID | CSA CCM 控制域 |
---|---|
EKM-01 | 加密和密钥管理权利 |
EKM-02 | 加密和密钥管理密钥生成 |
EKM-03 | 加密和密钥管理敏感数据保护 |
EKM-04 | 加密和密钥管理存储和访问 |
从 CCM、EKM-02 和 EKM-03 中,建议策略和过程来管理密钥,并使用加密协议来保护敏感数据。 EKM-01 建议所有加密密钥都具有可识别的所有者,以便可以管理它们。 EKM-04 建议使用标准算法。
以下列表显示了解决此参考中密钥管理的 CIS 控件:
CIS 控制 ID | CIS 控制说明 |
---|---|
8.1 | 确保所有密钥上都设置了到期日期。 |
8.2 | 确保所有机密都设置了到期日期。 |
8.4 | 确保密钥保管库可恢复。 |
CIS 控制 8.1 和 8.2 建议为凭据设置过期日期,以确保强制实施轮换。 CIS 控制 8.4 可确保可以还原密钥保管库的内容,以保持业务连续性。
应用程序安全性的各个方面为使用此参考体系结构来支持 Azure 中的 Spring 工作负荷奠定了基础。
后续步骤
通过 Azure Spring Apps 参考体系结构 存储库中提供的 ARM、Terraform 和 Azure CLI 部署来探索此参考体系结构。