设计注意事项评估应用程序的安全组件和指导原则

设计注意事项评估应用程序的安全组件和指导原则

本文内容

安全性是基础设计原则之一2d游戏素材,也是一个关键设计领域,必须被视为任务关键型体系结构过程中的一流关注点。

鉴于任务关键型设计的主要重点是最大程度地提高可靠性,以便应用程序保持高性能和可用状态,此设计区域中应用的安全注意事项和建议将侧重于缓解影响可用性并阻碍整体可靠性的威胁。 例如,成功的拒绝服务 (DDoS) 攻击已知会对可用性和性能产生灾难性影响。 应用程序如何缓解这些攻击途径,例如 SlowLoris 会影响整体可靠性。 因此,应用程序必须完全防范旨在直接或间接损害应用程序可靠性的威胁,才能在本质上真正具有关键任务性。

此外,请务必注意,通常存在与强化安全状况相关的重大权衡,尤其是在性能、运营敏捷性方面,在某些情况下的可靠性。 例如,对于下一代防火墙 (NGFW) 功能(如深度数据包检查)包含内联网络虚拟设备 (NVA) ,如果可伸缩性和恢复操作与应用程序不紧密一致,将带来显著的性能损失、额外的操作复杂性和可靠性风险。 因此,为了缓解关键威胁向量而制定的其他安全组件和做法也旨在支持应用程序的可靠性目标,这将构成本部分中介绍的建议和注意事项的关键方面。

重要

本文是 Azure Well-Architected任务关键型工作负荷 系列的一部分。 如果你不熟悉此系列,我们建议你从

Mission-Critical 开放源代码项目

是 GitHub 上提供的开放源代码项目的一部分。 代码资产采用零信任模型来构建并指导安全设计和实现方法。

与零信任模型对齐

Microsoft 零信任模型提供了一种主动和集成的方法,用于跨应用程序的所有层应用安全性。 零信任的指导原则旨在明确和持续验证每个事务、断言最低特权、使用智能和高级检测,以近乎实时地应对威胁。 它最终以消除应用程序外围内外的信任为中心,对尝试连接到系统的任何内容强制执行验证。

设计注意事项

评估应用程序的安全状况时,请从这些问题开始,作为每个考虑的基础。

所有较低环境的安全级别。

如果发生故障,身份验证和授权连续性。

自动化安全合规性和修正。

机密扫描以在提交代码之前检测机密,以防止通过源代码存储库泄露任何机密。

保护软件供应链。

数据保护密钥生命周期。

CI/CD 工具应要求具有足够订阅级别访问权限的 Azure AD 服务主体,以便对所有已考虑的环境订阅进行 Azure 资源部署的控制平面访问。

设计建议

使用基础结构即代码 (IaC) 和自动化 CI/CD 管道驱动所有应用程序组件的更新,包括故障情况下。

为所有较低环境定义适当的安全状况,以确保缓解关键漏洞。

为云 (启用Microsoft Defender,这些订阅以前称为“Azure 安全中心) ”,这些订阅包含任务关键型工作负荷的资源。

在 CI/CD 管道中接受 DevSecOps 并实现安全测试。

在源代码存储库中启用 机密扫描 和依赖项扫描。

威胁建模

威胁建模提供安全设计基于风险的方法,使用识别的潜在威胁来开发适当的安全缓解措施。 有许多可能的威胁具有不同的发生概率,在许多情况下,威胁可以以意外、不可预知甚至混乱的方式链接在一起。 这种复杂性和不确定性是为什么基于传统技术要求的安全方法基本上不适合任务关键型云应用程序。 预计任务关键型应用程序的威胁建模过程会复杂且不屈不挠。

为了帮助导航这些挑战,应应用分层防御深度方法,以定义和实施对建模威胁的补偿缓解措施,考虑以下防御层。

具有基本安全功能和控制的 Azure 平台。应用程序体系结构和安全设计。内置、已启用且可部署的安全功能已应用于保护 Azure 资源。应用程序代码和安全逻辑。操作过程和 DevSecOps。

注意

在 Azure 登陆区域内部署时,请注意,登陆区域实现通过预配集中安全功能提供额外的威胁缓解层。

设计注意事项

STRIDE 提供了一个轻型风险框架,用于评估跨关键威胁途径的安全威胁。

篡改输入:修改发送到应用程序的输入,或违反信任边界来修改应用程序代码。 例如,攻击者使用 SQL 注入删除数据库表中的数据。否认行动:能够驳斥已经执行的操作,以及应用程序收集证据和推动责任的能力。 例如,删除关键数据,而无需跟踪到恶意管理员。信息泄露:获取对受限信息的访问权限。 例如,攻击者可以访问受限文件。拒绝服务:恶意应用程序中断以降低用户体验。 例如,DDoS 机器人网络攻击,如 Slowloris。特权提升:通过授权利用获得特权应用程序访问权限。 例如,攻击者操纵 URL 字符串以获取对敏感信息的访问权限。设计建议网络入侵保护

防止未经授权的访问任务关键型应用程序且包含的数据对于维护可用性和保护数据完整性至关重要。

设计注意事项

通常通过公共终结点访问 Azure PaaS 服务。 Azure 提供保护公共终结点甚至使其完全专用的功能。

对于受支持的服务,Azure 专用链接使用 Azure 专用终结点解决,例如恶意管理员将数据写入外部资源。

使用专用终结点或服务终结点限制对 Azure PaaS 服务的网络访问时,部署管道需要安全网络通道才能访问 Azure 资源的 Azure 控制平面和数据平面,以便部署和管理应用程序。

另一种方法是修改管道中资源的防火墙规则,以允许从 Azure DevOps 代理公共 IP 地址建立连接,并在任务完成后随后删除防火墙。可以对应用程序服务跳转框执行开发人员和管理任务。

管理和维护任务的完成是一个需要连接到 Azure 资源数据平面的进一步方案。

与相应的 Azure AD 服务主体的服务连接可在 Azure DevOps 中使用游戏图片,通过 Azure AD 应用 RBAC。

服务标记可以应用于网络安全组,以便与 Azure PaaS 服务建立连接。

应用程序安全组不会跨多个虚拟网络。

Azure 网络观察程序中的数据包捕获限制为最多 5 小时。

设计建议

处理专用生成代理时设计包含用户,角色,权限和用户组数据库表结构,从不直接打开 RDP 或 SSH 端口到 Internet。

使用 DDoS 标准保护计划来保护应用程序中的所有公共 IP 地址。

将 Azure Front Door 与 Web 应用程序防火墙策略配合使用,以提供和保护跨多个 Azure 区域的全局 HTTP/S 应用程序。

如果其他在线网络安全要求(如深度数据包检查或 TLS 检查)强制使用 Azure 防火墙 高级或网络虚拟设备 (NVA) ,请确保为最大高可用性和冗余配置该设备。

如果存在数据包捕获要求,请使用网络观察程序数据包进行捕获,尽管捕获窗口有限。

使用网络安全组和应用程序安全组对应用程序流量进行微分段。

启用 NSG 流日志,并将其馈送到流量分析,便于深入了解内部和外部流量流。

在应用程序设计中使用 Azure 专用链接/专用终结点来保护对 Azure PaaS 服务的访问权限。 有关支持专用链接的 Azure 服务的信息,请参阅 Azure 专用链接可用性。

如果专用终结点不可用,并且数据外泄风险是可接受的,请使用虚拟网络服务终结点来保护从虚拟网络中访问 Azure PaaS 服务的安全。

对于混合应用程序方案,请使用专用对等互连通过 ExpressRoute 从本地访问 Azure PaaS 服务。

注意

在 Azure 登陆区域中部署时,请注意登陆区域实现提供与本地数据中心的网络连接。 一种方法是使用配置有专用对等互连的 ExpressRoute。

数据完整性保护

加密是确保数据完整性的重要步骤,最终是可用于缓解各种威胁的最重要安全功能之一。 因此,本部分将提供与加密和密钥管理相关的关键注意事项和建议,以保护数据,而不会影响应用程序可靠性。

设计注意事项

更改角色分配后, (600 秒) 应用角色的延迟最长为 10 分钟。

azure 密钥保管库基础硬件安全模块 (HSM) 符合 FIPS 140-2 级别 2。

Azure 密钥保管库提供高可用性和冗余,以帮助维护可用性并防止数据丢失。

在区域故障转移期间,密钥保管库服务故障转移可能需要几分钟时间。

如果使用专用链接连接到 Azure 密钥保管库,则连接可能需要长达 20 分钟才能在区域故障转移期间重新建立。

备份将创建机密、密钥或证书 ,作为无法在 Azure 外部解密的加密 Blob。 若要从 Blob 获取可用数据,必须将它还原到同一 Azure 订阅和 Azure 地理位置中的密钥保管库。

使用服务管理的密钥,Azure 将执行密钥管理功能,例如轮换,从而减少应用程序操作的范围。

监管控制可以规定使用客户管理的密钥进行服务加密功能。

当流量在 Azure 数据中心之间移动时,MACsec 数据链路层加密在基础网络硬件上使用,以保护在不受 Microsoft 或 Microsoft 控制的物理边界之外传输的数据。

设计建议

如果需要考虑其他加密机制或客户管理的密钥,请使用 Azure 密钥保管库 作为所有机密、证书和密钥的安全存储库。

在每个区域部署标记中部署单独的 Azure 密钥保管库 实例,通过本地化提供故障隔离和性能优势,以及导航单个密钥保管库实例施加的规模限制。

通过将授权限制为将机密、密钥和证书永久删除为专用的自定义 Azure AD 角色,遵循最低特权模型。

确保备份存储在密钥保管库中的加密密钥和证书,在不太可能的事件中提供脱机副本,密钥保管库不可用。

使用密钥保管库证书。

建立密钥和证书轮换的自动化过程。

监视密钥、证书和密钥用法。

策略驱动的治理

只有在在所有应用程序服务和团队中一致且全面地强制实施安全约定时,安全约定才最终有效。 Azure Policy提供了一个框架来强制实施安全性和可靠性基线,确保继续符合任务关键型应用程序的常见工程标准。 更具体地说,Azure Policy构成了 Azure 资源管理器 (ARM) 控制平面的关键部分,通过限制授权用户可以执行的操作来补充 RBAC,并可用于跨已利用的平台服务强制实施重要的安全性和可靠性约定。

因此,本部分将探讨有关对任务关键型应用程序使用Azure Policy驱动治理的关键注意事项和建议,确保持续实施安全性和可靠性约定。

设计注意事项

注意

在 Azure 登陆区域中部署时设计包含用户,角色,权限和用户组数据库表结构,请注意,在实施登陆区域管理组和订阅时,可能会应用集中基线策略分配。

Azure Policy分配范围决定了覆盖范围和Azure Policy定义的位置,告知自定义策略的可重用性。

Azure Policy有多个,例如任何特定范围内的定义数。

执行部署(如果不存在)可能需要几分钟时间才能 (DINE) 策略。

Azure Policy为合规性报告和安全审核提供关键输入。

设计建议

定义一个常见的工程条件,以捕获所有已利用的 Azure 服务的安全可靠配置定义,确保将此条件映射到Azure Policy分配以强制实施合规性。

任务关键参考实现包含一系列以安全性和可靠性为中心的策略,用于定义和强制实施示例通用工程标准。

对于在专用管理组下具有多个生产订阅的任务关键型方案,请在管理组范围内确定分配的优先级。

注意

在 Azure 登陆区域中部署时,请考虑在中间公司根管理组范围内部署自定义Azure Policy定义,以便在更广泛的 Azure 资产中的所有应用程序中重复使用。在登陆区域环境中,默认情况下,某些集中式安全策略将在更高的管理组范围内应用,以在整个 Azure 资产中强制实施安全合规性。 例如,应应用 Azure 策略以通过 VM 扩展自动部署软件配置,并强制实施合规的基线 VM 配置。

如果应用程序订阅了 Microsoft Mission-Critical 支持,请确保应用的标记架构提供有意义的上下文,以便通过深入的应用程序理解丰富支持体验。

在 Azure 登陆区域中,Azure AD 活动日志也将引入到集中式平台 Log Analytics 工作区中。 如果全局 Log Analytics 工作区中仍需要 Azure AD,则需要在此示例中对其进行评估。

使用 虚拟机 时的 IaaS 特定注意事项

如果需要使用 IaaS 虚拟机,必须考虑一些具体事项。

设计注意事项设计建议

遵循并应用上述任务关键型应用程序方案的安全做法(如果适用),以及 Azure 中 IaaS 工作负载的安全最佳做法。

后续步骤

查看任务关键型应用程序方案的操作过程的最佳做法。

操作过程

文章来源:https://learn.microsoft.com/zh-cn/azure/well-architected/mission-critical/mission-critical-security