具有网络控制的任务关键型基线体系结构
此体系结构提供有关设计任务关键型工作负荷的指导,该工作负荷具有严格的网络控制,以防止未经授权的公共访问任何工作负荷资源。 目的是停止网络层的攻击途径,以便系统的整体可靠性不会受到影响。 例如,分布式拒绝服务(DDoS)攻击(如果保持未选中状态),可能会导致资源因非法流量而变得不可用。
它基于 任务关键型基线体系结构,该体系结构侧重于在不使用网络控制的情况下最大程度地提高可靠性和运营效率。 此体系结构添加了使用适当的云原生功能(例如 Azure 虚拟网络(VNet)和专用终结点、Azure 专用链接、Azure 专用 DNS 区域等来限制入口和出口路径的功能。
建议先熟悉基线,然后再继续本文。
关键设计策略
此用例中仍适用 任务关键基线的设计策略 。 下面是此体系结构的其他网络注意事项:
控制入口流量
必须将进入虚拟网络的入口或入站通信限制为防止恶意攻击。
在全局级别应用 Web 应用程序防火墙(WAF)功能,以 阻止靠近攻击源的网络边缘的攻击。
消除与 Azure 服务的公共连接。 一种方法是使用专用终结点。
在进入网络之前检查流量。 子网上的网络安全组(NSG)通过允许或拒绝流向配置的 IP 地址和端口来帮助筛选流量。 此级别的控制还有助于精细日志记录。
控制出口流量
必须将来自虚拟网络的出口流量限制到该网络外部的实体。 缺乏控制可能导致恶意第三方服务发生数据外泄攻击。
使用 Azure 防火墙限制发到 Internet 的出站流量。 防火墙可以使用完全限定的域名(FQDN)精细地筛选流量。
平衡与安全性的权衡
将安全功能添加到工作负荷体系结构时,存在重大权衡。 你可能会注意到对性能、运营敏捷性甚至可靠性有一些影响。 但是, 拒绝Of-Service(DDoS)、数据入侵等攻击可以针对系统的整体可靠性,并最终导致不可用。
这些策略基于为 精心构建的任务关键型工作负荷中任务关键型工作负荷提供的总体指导。 建议在定义自己的任务关键体系结构时探索 网络和连接的设计区域 ,了解建议和最佳做法。
建筑
下载此体系结构的 Visio 文件。
此体系结构的组件可以按这种方式进行广泛分类。 有关 Azure 服务的产品文档,请参阅 相关资源。
全局资源
全球资源寿命长,并共享系统的生存期。 它们能够在多区域部署模型的上下文中全局提供。 有关详细信息,请参阅 全局资源。
Azure Front Door Premium SKU 用作全局负载均衡器,用于可靠地将流量路由到通过专用终结点公开的区域部署。
Azure Cosmos DB for NoSQL 仍用于在计算群集外部存储状态,并具有用于可靠性的基线配置设置。 访问权限仅限于授权的专用终结点连接。
Azure 容器注册表 用于存储具有异地复制功能的所有容器映像。 访问权限仅限于授权的专用终结点连接。
请参阅 精心构建的任务关键型工作负载:容器注册表。
区域资源
区域资源作为 部署标记 的一部分预配到单个 Azure 区域。 它们生存期较短,可提供更快速的复原能力、缩放性和靠近用户。 这些资源与其他区域中的资源不共享任何内容。 它们可以独立删除或复制到其他区域。 但是,它们彼此共享 全局资源 。 有关详细信息,请参阅 区域戳记资源。
Azure 存储帐户中的静态网站 托管单页应用程序(SPA),用于将请求发送到后端服务。 此组件具有与 基线前端相同的配置。 访问权限仅限于授权的专用终结点连接。
Azure 虚拟网络 提供用于运行工作负荷和管理作的安全环境。
内部负载均衡器 是应用程序源。 Front Door 使用此源通过专用链接建立与后端的专用和直接连接。
Azure Kubernetes 服务(AKS) 是用于运行应用程序且无状态的后端计算的业务流程协调程序。 AKS 群集部署为专用群集。 因此,Kubernetes API 服务器不会向公共 Internet 公开。 对 API 服务器的访问仅限于专用网络。 有关详细信息,请参阅此体系结构的 计算群集 文章。
Azure 防火墙 检查和保护来自 Azure 虚拟网络资源的所有出口流量。
Azure 事件中心 用作 消息代理。 访问权限仅限于授权的专用终结点连接。
Azure Key Vault 用作 区域机密存储。 访问权限仅限于授权的专用终结点连接。
部署管道资源
必须完全自动化任务关键应用程序的生成和发布管道,以确保部署经过验证的标记的一致方式。
GitHub 仍用作源代码管理,作为基于 git 的高度可用平台。
选择 Azure Pipelines 可以自动执行在预生产 环境和 生产环境中生成、测试和部署工作负荷所需的管道。
自承载 Azure DevOps 生成代理池 用于更好地控制生成和部署。 需要这种级别的自治,因为计算群集和所有 PaaS 资源都是专用的,这需要Microsoft托管的生成代理上无法实现的网络级别集成。
可观测性资源
全局资源和区域资源的监视数据单独存储。 不建议使用单个集中式可观测性存储来避免单一故障点。 有关详细信息,请参阅可观测性资源。
Azure Log Analytics 用作统一接收器,用于存储所有应用程序和基础结构组件的日志和指标。
Azure Application Insights 用作应用程序性能管理(APM)工具,用于收集所有应用程序监视数据并将其直接存储在 Log Analytics 中。
管理资源
基线体系结构的重大设计更改是计算群集。 在此设计中,AKS 群集是专用的。 此更改需要预配额外的资源才能获得访问权限。
专用生成代理和跳转盒实例的 Azure 虚拟机规模集,用于针对群集运行工具,例如 kubectl。
Azure Bastion 提供对跳转盒 VM 的安全访问,并消除了 VM 具有公共 IP 的需求。
PaaS 服务的专用终结点
若要处理业务或部署作,应用程序和生成代理需要访问多个 Azure PaaS 服务,这些服务已在全球、区域内,甚至是在戳章中预配。 在基线体系结构中,该通信通过服务的公共终结点进行。
在此设计中,这些服务已受到专用终结点的保护,以将其从公共 Internet 访问中删除。 此方法可减少整体攻击外围应用,以缓解来自意外源的直接服务篡改。 但是,它引入了另一个潜在的故障点,并增加了复杂性。 在采用此方法之前,请仔细考虑与安全性的权衡。
专用终结点应放入标记虚拟网络的专用子网中。 从该子网向专用终结点分配专用 IP 地址。 实质上,虚拟网络中的任何资源都可以通过访问专用 IP 地址来与服务通信。 请确保地址空间足够大,以适应该标记所需的所有专用终结点。
若要通过专用终结点进行连接,需要 DNS 记录。 建议将与服务关联的 DNS 记录保存在由 Azure DNS 服务的 Azure 专用 DNS 区域中。 确保完全限定的域名(FQDN)解析为专用 IP 地址。
在此体系结构中,已为 Azure 容器注册表、Azure Cosmos DB、Key Vault、存储资源和事件中心配置专用终结点。 此外,AKS 群集部署为专用群集,为群集网络中的 Kubernetes API 服务创建专用终结点。
此设计中预配了两个虚拟网络,并且都有专用子网来保存所有这些服务的专用终结点。 虚拟网络布局中介绍了 网络布局。
向体系结构添加更多组件时,请考虑添加更多专用终结点。 例如,可以向 可观测资源添加限制。 Azure Log Analytics 和 Azure Application Insights 都支持使用专用终结点。 有关详细信息,请参阅 使用 Azure 专用链接将网络连接到 Azure Monitor。
可以在同一虚拟网络中的相同或不同子网上创建它们。 在一个订阅中可以创建的专用终结点数量有限制。 有关详细信息,请参阅 Azure 限制。
使用 子网上的网络安全组进一步控制对服务的访问。
专用入口
Azure Front Door Premium SKU 用作所有传入客户端流量的全局入口点。 它使用 Web 应用程序防火墙(WAF)功能来允许或拒绝网络边缘的流量。 配置的 WAF 规则即使在进入标记虚拟网络之前也会阻止攻击。
此体系结构还利用 Front Door 的功能,使用 Azure 专用链接访问应用程序源,而无需在后端上使用公共 IP/终结点。 这需要标记虚拟网络中的内部负载均衡器。 此资源位于群集中运行的 Kubernetes 入口控制器前面。 在此专用负载均衡器之上,AKS 创建专用链接服务,该服务用于 Front Door 的专用连接。
建立连接后,Front Door 网络上的专用终结点通过专用链接与负载均衡器和静态网站建立了直接连接。
有关详细信息,请参阅 专用链接的工作原理。
受限出口
应用程序可能需要一些出站 Internet 连接。 控制该流量提供了限制、监视和限制出口流量的方法。 否则,意外的内部访问可能会导致入侵,并可能成为不可靠的系统状态。 受限出口还可以解决其他安全问题,例如数据外泄。
使用防火墙和网络安全组(NSG)可以确保检查和记录来自应用程序的出站流量。
在此体系结构中,Azure 防火墙是单一出口点,用于检查源自虚拟网络的所有传出流量。 用户定义的路由(UDR)用于能够生成出口流量的子网,例如应用程序子网。
有关限制出站流量的信息,请参阅 控制 Azure Kubernetes 服务(AKS)中群集节点的出口流量。
虚拟网络布局
隔离单独的虚拟网络中的区域资源和管理资源。 它们具有独特的特征、用途和安全注意事项。
流量类型:参与业务运营处理的区域资源需要更高的安全控制。 例如,必须保护计算群集免受直接 Internet 流量的保护。 仅预配管理资源以访问用于作的区域资源。
生存期:这些资源的预期生存期也不同。 区域资源预计将是短暂的(临时资源)。 它们作为部署标记的一部分创建,并在图章被拆毁时销毁。 管理资源共享区域的生存期,并实时传出标记资源。
在此体系结构中,有两个虚拟网络:标记网络和作网络。 通过使用子网和网络安全组(NSG)来保护子网之间的通信,在每个虚拟网络中创建进一步隔离。
区域标记虚拟网络
部署标记在每个区域中预配虚拟网络。
虚拟网络划分为这些主子网。 所有子网都分配了网络安全组(NSG),以阻止来自虚拟网络的任何未经授权的访问。 NSG 将限制应用程序子网与网络中的其他组件之间的流量。
应用程序子网
AKS 群集节点池在子网中隔离。 如果需要进一步隔离系统节点池与工作器节点池,可以将它们放置在单独的子网中。
标记入口子网
每个标记的入口点是一个位于专用子网中的内部 Azure 标准负载均衡器。 Front Door 用于专用连接的专用链接服务也位于此处。
这两个资源都作为标记部署的一部分进行预配。
标记出口子网
Azure 防火墙放置在单独的子网中,并使用用户定义的路由(UDR)检查来自应用程序子网的出口流量。
专用终结点子网
应用程序子网需要访问区域标记、Key Vault 和其他区域中的 PaaS 服务。 此外,还需要访问全局资源,例如容器注册表。 在此体系结构中, 所有 PaaS 服务均已锁定 ,只能通过专用终结点访问。 因此,将为这些终结点创建另一个子网。 对此子网的入站访问受 NSG 保护,该 NSG 仅允许来自应用程序的流量。
可以通过对 专用终结点使用 UDR 支持来添加进一步限制,以便此流量还可以通过标记出口子网流出。
作虚拟网络
作流量在单独的虚拟网络中隔离。 由于 AKS 群集的 API 服务在此体系结构中是专用的,因此所有部署和作流量也必须来自专用资源,例如自承载生成代理和跳转框。 这些资源部署在单独的虚拟网络中,通过自己的专用终结点集直接连接到应用程序资源。 生成代理和跳转框位于单独的子网中。
替代方法是使用虚拟网络对等互连,而不是使用专用终结点。 但是,对等互连增加了难以管理的复杂性,尤其是在虚拟网络设计为临时时。
生成代理(可选)都需要访问全局和区域戳中的 PaaS 服务。 与区域标记虚拟网络类似,将为专用终结点创建专用子网,以便为所需的 PaaS 服务创建专用子网。 此子网上的 NSG 确保仅允许来自管理和部署子网的入口流量。
管理操作
典型的用例是作员需要访问计算群集来运行管理工具和命令。 无法直接访问专用群集中的 API 服务。 这就是在作员可以运行工具的位置预配跳转框的原因。 跳转框有一个单独的子网。
但是,这些跳线箱也需要受到保护,防止未经授权的访问。 应避免通过打开 RDP/SSH 端口直接访问跳转框。 出于此目的,建议使用 Azure Bastion,并且需要此虚拟网络中的专用子网。
谨慎
通过 Azure Bastion 和跳转盒建立连接可能会影响开发人员工作效率,例如运行调试工具需要额外的过程。 在决定强化任务关键型工作负荷的安全性之前,请注意这些影响。
可以使用仅允许通过 SSH 通过 Bastion 子网的入站流量的 NSG 进一步限制对跳转盒子网的访问。
部署操作
若要生成部署管道,需要预配其他计算来运行生成代理。 这些资源不会直接影响工作负荷的运行时可用性,但可靠性故障可能会危及部署或服务任务关键型环境的能力。 因此,可靠性功能应扩展到这些资源。
此体系结构对生成代理和跳转框(而不是单个 VM)使用虚拟机规模集。 此外,网络分段是通过使用子网提供的。 入口仅限于 Azure DevOps。
成本注意事项
对任务关键型工作负荷的成本产生重大影响。 在此体系结构中,使用 Azure Front Door Premium SKU 和在每个模具中预配 Azure 防火墙等技术选择将导致成本增加。 还增加了与维护和作资源相关的成本。 在采用基线体系结构的网络控制版本之前,必须仔细考虑此类权衡。
部署此体系结构
此体系结构的网络方面在任务关键型连接实现中实现。
注释
连接实现旨在说明依赖于组织资源、与其他工作负载集成和使用共享服务的任务关键型工作负荷。 它基于此体系结构,并使用本文中所述的网络控件。 但是,连接方案假定虚拟专用网络或 Azure 专用 DNS 区域已存在于 Azure 登陆区域连接订阅中。
后续步骤
有关此体系结构中做出的设计决策的详细信息,请查看 Azure 良好架构框架中任务关键型工作负荷的网络和连接设计区域。
相关资源
有关此体系结构中使用的 Azure 服务的产品文档,请参阅以下文章。