通过NSG允许Azure容器应用与SQL Server及Blob存储通信
如何通过NSG规则让ACA应用仅访问Azure SQL和Blob Storage,同时阻止其他出站流量
当然可以实现这个需求,核心是利用Azure的**服务标签(Service Tags)**来精准放行目标服务的流量,无需手动维护大量IP地址列表。以下是具体配置步骤:
1. 配置允许Azure SQL Database的出站规则
- 方向:出站
- 优先级:设为65500以下(默认拒绝所有出站的规则优先级是65500,允许规则要比它先匹配,比如设为100)
- 源:选择
VirtualNetwork(或直接指定ACA所在子网的CIDR地址) - 目标类型:服务标签,选择对应SQL Server所在区域的标签,比如
Sql.EastAsia(替换成你的实际区域) - 端口:选择
SQL(即1433端口) - 动作:允许
2. 配置允许Azure Blob Storage的出站规则
- 方向:出站
- 优先级:设为比65500低的数值(比如101,只要比默认拒绝规则优先级高即可)
- 源:同步骤1(VirtualNetwork或子网CIDR)
- 目标类型:服务标签,选择对应Blob Storage所在区域的标签,比如
Storage.EastAsia - 端口:选择
HTTPS(即443端口,Blob存储默认通过HTTPS通信) - 动作:允许
重要注意事项
- 规则优先级是核心:NSG规则按优先级从高到低匹配,这两条允许规则必须排在默认的"拒绝所有出站"规则之前,否则会被覆盖失效。
- 服务标签要匹配区域:务必选择和你的SQL、Blob服务所在区域一致的标签,避免不必要的流量放行,缩小攻击面。
- 验证配置效果:配置完成后,测试应用的SQL连接和Blob读写功能是否正常,同时可以通过应用日志或
curl等工具验证其他外部地址是否无法访问。 - 可选增强:结合服务端点:如果需要更严格的访问控制,可以给子网开启SQL和Storage的服务端点,配合NSG规则进一步限制只有该子网能访问你的特定SQL/Storage资源,但这一步不是必须的。
内容的提问来源于stack exchange,提问作者Slicc
相关产品推荐
相关产品推荐

