如何配置IIS 10仅接受Azure API Manager的API调用,拒绝直接访问
配置IIS 10仅接受Azure API Manager的调用
方法一:基于API Manager出站IP做IIS地址限制
Azure API Manager实例有固定的出站IP地址,你可以把这些IP加入IIS的允许列表,拦截其他所有来源的请求:
- 登录Azure门户,找到你的API Manager实例,在概述页面复制所有出站IP地址(多个IP用逗号分隔)。
- 登录Azure虚拟机,打开IIS管理器,定位到你的API站点。
- 双击站点功能列表里的IP地址和域限制。
- 在右侧操作栏点击添加允许条目,把API Manager的每个出站IP逐个添加;如果是IP范围,直接输入CIDR格式地址。
- 完成IP添加后,点击右侧编辑功能设置,把访问被拒绝时的操作设为拒绝,确保非允许IP的请求直接被拦截。
方法二:验证API Manager专属请求头
API Manager转发请求时会携带特定请求头,你可以在IIS里配置URL重写规则,验证这些头的合法性:
- 先确认IIS已安装URL重写模块,没装的话在服务器管理器的角色功能里添加。
- 打开IIS管理器进入你的API站点,双击URL重写功能。
- 点击右侧添加规则,选择空白规则:
- 规则名称:比如
CheckAPIMHeader - 匹配URL:选与模式匹配,模式填
.*,勾选忽略大小写。 - 条件:点击添加,设置:
- 输入:
{HTTP_X-APIM-Trace-ID}(这是APIM默认携带的头,也可以用你在APIM策略里自定义的专属头,比如X-APIM-Auth-Key) - 检查输入字符串:不匹配模式
- 模式:如果用默认头,可填
.+(确保头存在即可);如果是自定义密钥头,填你预设的密钥值。
- 输入:
- 操作:选自定义响应,状态代码设为
403,状态描述填Forbidden: Direct access not allowed。
- 规则名称:比如
- 保存规则后,没有携带合规头的请求会被直接拒绝。
方法三:配合Azure网络安全组(NSG)双重防护
除了IIS配置,还可以在虚拟机的NSG层做限制:
- 找到虚拟机对应的NSG,添加入站安全规则,只允许API Manager的出站IP访问虚拟机的80/443端口,拒绝其他所有来源的流量。
注意:如果你的API Manager是消费层,出站IP可能会动态变化,优先用请求头验证的方法;如果是标准/高级层,出站IP固定,用IP限制更可靠。
内容的提问来源于stack exchange,提问作者JayNaz
相关产品推荐
相关产品推荐

