你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Spring Apps 登陆区域加速器的安全注意事项

本文介绍 Azure Spring Apps 中托管的工作负荷的安全注意事项和建议。 本指南可帮助你创建能够检测、阻止和响应安全漏洞的工作负荷。

安全应用程序无法保证整个工作负荷的安全性。 作为工作负荷所有者,评估人为错误,并评估攻击面,例如应用程序与应用程序交互的基础结构服务。

Azure 为网络、标识和数据提供安全控制,以支持深层防御策略。 许多控件内置于 Azure Spring Apps 中。 本指南基于 Azure Spring Apps 的 Azure 安全基线,该基线派生自 Azure 安全基准版本 2.0。 该基准提供了有关如何保护在 Azure Spring Apps 云上运行的工作负荷的建议。

作为平台的一部分,集中式团队提供网络和标识控制。 它们提供防护措施,以保持对 Azure 中的平台、应用程序和资源的控制。 为工作负荷提供的应用程序登陆区域订阅是预先预配的策略,这些策略继承自管理组。

在设计工作负荷时,请确保拥有的安全控件与中心控件保持一致。 该设计受集中式安全团队定期评审的约束。 定期与中心团队一起查看安全控制和平台策略,以确保满足工作负荷要求。

有关平台设计的信息,请参阅:

设计注意事项

  • 内部流量。 限制或允许内部资源之间的流量遵循符合业务风险的企业分段原则。 如有必要,请通过虚拟网络和子网创建隔离边界。 实施规则以限制网络之间的流量流。

  • 外部流量。 使用 Azure 本机资源保护工作负荷资源免受来自外部网络的攻击,包括:

    • 分布式拒绝服务 (DDoS) 攻击。
    • 特定于应用程序的攻击。
    • 未经请求的潜在恶意 Internet 流量。
  • 标识管理。 使用 Microsoft Entra 功能,例如托管标识、单一登录、强身份验证、托管标识和条件访问,通过 Microsoft Entra ID 提供身份验证和授权。

  • 安全监视。 系统应具有监视工具,以使用组织目标和 Azure 安全基准控制来检测威胁并衡量合规性。 这些工具应与中心安全信息和事件管理(SIEM)系统集成,以便全面了解安全状况。

  • 传输中的数据。 必须在组件、位置或 API 调用之间传输的数据进行加密。

  • 静态数据。 所有持久化数据(包括配置)都必须加密。

  • 治理策略。 应检测与组织设置的符合性标准偏差。 Azure Policy 提供应应用于检测偏差的内置定义。 应用策略时,它不确保完全符合控件的所有要求。 可能存在未在内置定义中解决的合规标准。

  • 凭据公开。 可以使用标识或机密部署和运行代码、配置和持久化数据。 确保访问资产时检查凭据。

  • 证书管理。 证书必须基于永不信任的零信任原则进行加载,始终验证证书,并且证书必须无凭据。 在授予对证书的访问权限之前,仅通过验证标识来信任共享证书。

  • 一致的部署。 使用基础结构即代码(IaC)自动预配和配置所有 Azure 资源,并增强安全态势。

设计建议

网络作为外围

这些网络控制创建隔离边界,并限制进出应用程序的流。

网络分段

部署 Azure Spring Cloud 服务资源时创建或使用现有虚拟网络。

通过子网在虚拟网络中创建隔离。 使用 NSG 规则限制或允许内部资源之间的流量。 使用 Microsoft Defender for Cloud 的自适应网络强化功能进一步强化限制端口和源 IP 的 NSG 配置。 这些配置基于外部网络流量规则。

创建安全规则时,请使用 Azure 服务标记 来定义网络访问控制,而不是特定的 IP 地址。 在相应规则的源或目标字段中指定服务标记名称时,允许或拒绝相应服务的流量。 Microsoft管理服务标记涵盖的地址前缀。 当地址发生变化时,它会自动更新服务标记。

使用AzureSpringCloud网络安全组上的服务标记或Azure 防火墙允许流量流向 Azure Spring Apps 中的应用程序。

有关详细信息,请参阅 客户在虚拟网络中运行 Azure Spring Cloud 的责任。

与专用网络的连接

在共置环境中,使用 Azure ExpressRoute 或 Azure 虚拟专用网络(VPN)在 Azure 数据中心与本地基础结构之间创建专用连接。 ExpressRoute 连接 不会通过公共 Internet,其可靠性、更快的速度和较低的延迟。

对于 点到站点 VPN 和站点到站点 VPN,请将本地设备或网络连接到虚拟网络。 使用这些 VPN 选项和 Azure ExpressRoute 的任意组合。

若要连接 Azure 中的两个或多个虚拟网络,请使用 虚拟网络对等互连。 对等虚拟网络之间的网络流量是专用的。 此类流量保留在 Azure 主干网络上。

来自外部网络的攻击

使用集成 Web 应用程序防火墙(WAF)Azure 应用程序网关阻止应用程序层攻击的入站流量和阻止应用程序层攻击。

使用Azure 防火墙来限制来自应用程序的出站流量。 可以使用Azure 防火墙来保护应用程序和服务免受来自 Internet 和其他外部位置的潜在恶意流量。

Azure 防火墙基于威胁情报的筛选可以向你发送警报或阻止来自已知恶意 IP 地址和域的流量。 IP 地址和域源自 Microsoft 威胁智能源。 如果需要有效负载检查,请从具有有效负载检查功能的Azure 市场部署第三方入侵检测/入侵防护系统(IDS/IPS)。 或者,可以使用基于主机的 IDS/IPS 或基于 主机的终结点检测 和响应(EDR)解决方案,或者使用基于网络的 IDS/IPS。

若要保护工作负荷资源免受 DDoS 攻击,请在 Azure 虚拟网络上启用 DDoS 标准保护 。 使用 Microsoft Defender for Cloud 检测网络相关资源的错误配置风险。

保护域名服务 (DNS)

使用 Azure DNS 托管 DNS 域。 保护 DNS 区域和记录免受不良执行组件的影响。 出于该目的,建议使用 Azure 基于角色的访问控制(Azure RBAC)和资源锁。 有关详细信息,请参阅阻止无关联的 DNS 项并避免子域接管

标识用作外围

Azure 通过 Microsoft Entra ID 提供标识控制。 应用程序具有许多功能,例如单一登录、强身份验证、托管标识和条件访问。 有关体系结构的设计选择的信息,请参阅 Azure Spring Apps 登陆区域加速器的标识注意事项。

以下部分介绍这些选项的安全方面。

与集中式标识系统集成

Azure 登陆区域使用 Microsoft Entra ID 作为默认标识和访问管理服务。 若要管理工作负荷服务,建议使用集中式Microsoft Entra ID。 集中式Microsoft Entra ID 包括访问组织网络资源、Azure 存储、密钥库以及应用程序依赖的其他服务。

若要授予对 Azure Spring Apps 数据平面的访问权限,请使用 Azure Spring Cloud 数据读取器 内置角色。 此角色提供只读权限。

建议使用以下Microsoft Entra 功能:

  • 应用程序标识。 应用程序可能需要访问其他 Azure 服务。 例如,如果想要从 Azure 密钥库检索机密。

    托管标识 与 Azure Spring Apps 配合使用,以便应用程序可以使用 Microsoft Entra ID 向其他服务进行身份验证。 避免出于此目的使用服务主体。 托管标识身份验证过程不使用源代码或配置文件中硬编码的凭据。

    如果需要使用具有证书凭据的服务主体并回退到客户端机密,建议使用 Microsoft Entra ID 在资源级别创建 具有受限权限的服务主体

    在这两种情况下,都可以将密钥保管库与 Azure 托管标识一起使用。 运行时组件(例如 Azure 函数)可用于从密钥库检索机密。 有关详细信息,请参阅 Azure 密钥库中的身份验证。

  • Microsoft Entra 单一登录(SSO)。 Microsoft,建议使用 Entra SSO 从云或本地运行的其他应用程序或设备对应用程序的访问权限进行身份验证。 SSO 为内部和外部用户(例如合作伙伴或供应商)提供标识管理。

  • 强身份验证控制。 Microsoft Entra ID 通过多重身份验证(MFA)和强无密码方法支持强身份验证控制。 对于管理员和特权用户,请使用最高级别的强身份验证方法来减少爆炸半径(如果存在违规)。 然后向其他用户推出适当的强身份验证策略。 有关详细信息,请参阅 “在 Azure 中启用 MFA”和 “Microsoft Entra ID 的无密码身份验证选项。

  • 对资源的条件访问。 Azure Spring Apps 支持 Microsoft Entra 条件访问 ,实现基于用户定义的条件的更精细的访问控制。 可以设置条件,以包含特定 IP 范围(需要使用 MFA 登录)的用户登录。 这些 条件访问策略 仅适用于对 Microsoft Entra ID 进行身份验证以访问和管理应用程序的用户帐户。 这些策略不适用于用于连接到工作负荷资源的服务主体、密钥或令牌。

  • 特权访问。 实现 Microsoft Entra Privileged Identity Management,以确保在整个 Azure 环境中进行最低特权访问和深度报告。 团队应开始定期访问评审,以确保正确的人员和服务原则具有最新且正确的授权级别。

数据控件

网络和标识控制限制对应用程序的访问,但需要保护数据。 加密可确保数据完整性,并且是必须应用于缓解威胁的关键安全功能。

传输中的数据

传输的数据容易受到带外攻击,例如流量捕获。 使用加密来确保攻击者无法轻松读取或修改这些数据。 Azure 为在 Azure 数据中心之间传输的数据提供加密。

Azure Spring Apps 支持使用传输层安全性 (TLS) v1.2 或更高版本进行加密。 TLS 通过标识和信任提供安全通信,并加密所有类型的通信。 可以使用任何类型的 TLS 证书。 例如,证书颁发机构颁发的证书、扩展验证证书、支持任意数量的子域的通配符证书或开发和测试环境的自签名证书。

加密对于外部和公用网络上的流量至关重要。 默认情况下,所有公共终结点都必须对入站流量使用 HTTPS。 通过 Azure 资源管理器 API 调用配置 Azure Spring Apps 服务的管理调用必须通过 HTTPS 进行。

对于 HTTP 流量,请确保连接到 Azure 资源的客户端可以协商 TLS v1.2 或更高版本。 不要使用过时的版本或协议。 禁用弱密码。

对于远程管理,而不是使用未加密的协议,请使用适用于 Linux 的安全外壳(SSH)或适用于 Windows 的远程桌面协议(RDP)和 TLS。

静态数据

工作负荷需要源和项目、配置服务器设置、应用设置和存储的存储状态。 服务器端静态数据受Azure 存储加密保护。 存储使用Microsoft管理的密钥自动加密内容。

配置服务器缓存、从上传的源生成的运行时二进制文件,并在应用程序生存期内将应用程序日志保存到 Azure 托管磁盘。 此数据会自动 加密。 从用户上传的源生成的容器映像会加密并保存在Azure 容器注册表

对于支持方案,Microsoft需要访问相关客户数据时,请使用 客户密码箱Microsoft Azure ,因为你的团队或组织必须批准访问权限。

监视帐户异常并发出警报

建议Microsoft Defender for Cloud 接收有关可疑活动的警报,例如订阅中失败的身份验证尝试次数过多或已弃用的帐户。

Azure Spring Apps 与 Microsoft Entra ID 集成,它可以跟踪登录活动,包括有风险的登录。可以使用审核日志来检测对Microsoft Entra ID 中的任何资源所做的更改。 数据与 Azure Monitor 集成,可导出到 Microsoft Sentinel。

有关详细信息,请参阅:

治理策略

Azure 的名为 Azure Spring Cloud 的内置定义 应使用网络注入 来强制实施 网络控制

  1. 从 Internet 检测应用程序的隔离边界的实现。
  2. 使 Azure Spring Apps 能够与其他虚拟网络中的本地数据中心或 Azure 服务中的专用网络通信。
  3. 控制 Azure Spring Apps 虚拟网络的入站和出站网络通信。

证书管理

与后端服务或本地系统通信时,应用可能需要公共 TLS 证书。 可以在密钥库中上传证书。

若要从密钥库安全地加载证书,Spring Boot 应用使用托管标识和 Azure 基于角色的访问控制(RBAC)。 Azure Spring Apps 使用提供者服务主体和 Azure 基于角色的访问控制。 此安全加载通过使用 Azure 密钥库 Java 加密体系结构 (JCA) 提供程序提供支持。 有关详细信息,请参阅适用于 Java 的 Azure 密钥保管库 JCA 客户端库

如果 Spring 代码、Java 代码或开源库(如 OpenSSL)依赖于 JVM 默认 JCA 链将证书隐式加载到 JVM 的信任存储中,则可以将 TLS 证书从密钥库导入 Azure Spring Apps。 在应用中使用这些证书。 有关详细信息,请参阅在 Azure Spring Apps 的应用程序中使用 TLS/SSL 证书

凭据扫描

实现凭据扫描程序来标识访问代码、配置和持久化数据的凭据。 凭据扫描程序鼓励将发现的凭据移动到更安全的位置,例如密钥库。

对于 GitHub,可使用本机机密扫描功能来识别代码中的凭据或其他形式的机密。

有关详细信息,请参阅:

后续步骤

监视操作