借助Azure API Management安全暴露本地API遇Conditional Access策略失效问题
问题解决:Azure AD应用代理Conditional Access策略失效及本地APIM网关使用问题
一、Conditional Access策略不生效的核心原因及修复方案
你的Conditional Access策略失效,本质是因为采用Passthrough预认证模式的Azure AD应用代理不支持Conditional Access策略。Passthrough模式下,应用代理仅做请求转发,不会触发Azure AD的身份验证流程,因此基于Azure AD的Conditional Access策略无法对这类请求生效。
修复步骤:
修改应用代理预认证模式
- 进入Azure门户 -> Azure Active Directory -> 企业应用 -> 找到目标应用代理应用 -> 应用代理 -> 预认证,将模式改为Azure AD预认证
- 配置对应的用户/组分配(若APIM使用服务主体访问,后续需将该服务主体加入分配列表)
重新配置Conditional Access策略
- 用户分配:选择需要允许访问的对象,包括APIM使用的服务主体(若APIM通过服务主体调用应用代理API)及必要运维用户
- 云应用或操作:选择目标应用代理企业应用
- 条件:
- 创建命名位置,添加Azure API Management实例的出站IP范围(可从APIM门户“概述”->“属性”->“出站IP地址”获取)
- 在条件的“位置”中,设置为包含所有位置,排除上述命名位置
- 访问控制-授予:选择“阻止访问”
- 保存策略后,仅来自APIM IP的请求会被允许,其他IP请求将被阻止
验证APIM的访问身份
- 若APIM通过服务主体调用应用代理API,需确保该服务主体被添加到应用代理应用的用户分配列表,且Conditional Access策略的用户范围包含该服务主体
二、本地APIM网关的正确使用方式
本地APIM网关的定位是反向代理本地服务到云端APIM,而非直接接收互联网请求。要实现互联网请求路由到本地服务,正确方案如下:
- 云端APIM实例配置API,后端指向本地服务地址
- 通过Azure VPN网关/ExpressRoute打通云端APIM与本地环境的网络连接,或继续使用Azure AD应用代理作为云端APIM到本地服务的转发通道
- 若要使用本地网关接收外部请求,需将本地网关部署在具备公网IP的环境中,然后将云端APIM的API后端指向本地网关的公网地址,实现“互联网->云端APIM->本地网关->本地服务”的路由,但需做好本地网关的公网安全防护(如IP白名单、防火墙规则)
内容的提问来源于stack exchange,提问作者Rytis I
相关产品推荐
相关产品推荐

