应用程序安全组

使用应用程序安全组可将网络安全性配置为应用程序结构的固有扩展,从而可以基于这些组将虚拟机分组以及定义网络安全策略。 可以大量重复使用安全策略,而无需手动维护显式 IP 地址。 平台会处理显式 IP 地址和多个规则集存在的复杂性,让你专注于业务逻辑。 若要更好地理解应用程序安全组,请考虑以下示例:

Application security groups

在上图中,NIC1NIC2AsgWeb 应用程序安全组的成员。 NIC3AsgLogic 应用程序安全组的成员。 NIC4AsgDb 应用程序安全组的成员。 虽然此示例中的每个网络接口只是一个网络安全组的成员,但一个网络接口可以是多个应用程序安全组的成员,具体取决于 Azure 限制。 这些网络接口都没有关联的网络安全组。 NSG1 关联到两个子网,包含以下规则:

Allow-HTTP-Inbound-Internet

若要让流量从 Internet 流到 Web 服务器,此规则是必需的。 由于来自 Internet 的入站流量被 DenyAllInbound 默认安全规则拒绝,因此 AsgLogicAsgDb 应用程序安全组不需更多规则。

优先级 源端口 目标 目标端口 协议 访问
100 Internet * AsgWeb 80 TCP 允许

Deny-Database-All

由于 AllowVNetInBound 默认安全规则允许在同一虚拟网络中的资源之间进行的所有通信,因此需要使用此规则来拒绝来自所有资源的流量。

优先级 源端口 目标 目标端口 协议 访问
120 * * AsgDb 1433 任意 拒绝

Allow-Database-BusinessLogic

此规则允许从 AsgLogic 应用程序安全组到 AsgDb 应用程序安全组的流量。 此规则的优先级高于 Deny-Database-All 规则的优先级。 因此,此规则在 Deny-Database-All 规则之前处理,这样系统就会允许来自 AsgLogic 应用程序安全组的流量,而阻止所有其他流量。

优先级 源端口 目标 目标端口 协议 访问
110 AsgLogic * AsgDb 1433 TCP 允许

将应用程序安全组指定为源或目标的规则只会应用到属于应用程序安全组成员的网络接口。 如果网络接口不是应用程序安全组的成员,则规则不会应用到网络接口,即使网络安全组关联到子网。

应用程序安全组具有以下约束:

  • 一个订阅中可以有的应用程序安全组存在数量限制,此外还有其他与应用程序安全组相关的限制。 有关详细信息,请参阅 Azure 限制
  • 分配给应用程序安全组的所有网络接口都必须存在于分配给应用程序安全组的第一个网络接口所在的虚拟网络中。 例如,如果分配给名为 AsgWeb 的应用程序安全组的第一个网络接口位于名为 VNet1 的虚拟网络中,则分配给 ASGWeb 的所有后续网络接口都必须存在于 VNet1 中。 不能向同一应用程序安全组添加来自不同虚拟网络的网络接口。
  • 如果在安全规则中将应用程序安全组指定为源和目标,则两个应用程序安全组中的网络接口必须存在于同一虚拟网络中。 例如,如果 AsgLogic 包含来自 VNet1 的网络接口,AsgDb 包含来自 VNet2 的网络接口,则不能在一项规则中将 AsgLogic 分配为源,将 AsgDb 分配为目标。 源和目标应用程序安全组中的所有网络接口需存在于同一虚拟网络中。

提示

为了尽量减少所需的安全规则数和需要更改规则的情况,请尽可能使用服务标记或应用程序安全组来规划所需的应用程序安全组并创建规则,而不要使用单个 IP 地址或 IP 地址范围。

后续步骤