Azure APIM与Function App的OAuth2.0 Azure AD认证技术问询
Azure微服务架构技术问题解答
1. 令牌传播的终止节点是否为APIM?
不一定,完全取决于你的配置:
- 如果APIM仅负责验证令牌有效性,之后将原令牌转发给后端Function App,那么令牌的终止节点是Function App;
- 如果APIM配置为终止令牌(即验证后不再转发原令牌,直接以自身身份调用后端),则终止节点是APIM。
通常建议保留令牌转发,让后端也能基于令牌做细粒度的权限校验;若后端无需令牌相关信息,也可选择在APIM终止。
2. 若令牌在APIM终止,后端API如何获取角色信息?是通过HTTP头还是其他协议?
最常用的方式是通过自定义HTTP请求头传递角色信息:
在APIM的策略中解析原令牌内的角色声明,将角色列表拼接后放入自定义请求头(比如X-User-Assigned-Roles),后端Function App直接读取该请求头即可获取角色信息,无需额外协议。
3. 在使用Azure应用服务计划的情况下,如何建立Function API与APIM之间的信任关系?
有三种主流实现方式:
- IP访问限制:在Function App的网络配置中,将APIM的所有出站IP地址加入允许列表,仅允许APIM发起的请求访问Function;
- 托管标识认证:为APIM启用系统分配的托管标识,在Function App的IAM权限配置中,为该标识分配最小必要的访问权限(如
Function App Contributor),APIM将通过标识自动完成身份认证; - API密钥验证:为Function App生成专用访问密钥,在APIM的后端配置中添加该密钥,调用时通过
x-functions-key请求头传递,确保仅持有密钥的APIM能访问Function。
4. 该设计是否符合零信任安全策略?
基础符合零信任「永不信任,始终验证」的核心原则,但需补充细节进一步强化:
- 当前架构已实现Azure AD身份认证、APIM网关校验,满足每个请求都经过身份验证的要求;
- 需优化的点:通过网络限制阻止外部直接访问Function App(强制所有请求走APIM)、为Function App配置二次令牌校验(即使APIM已验证,双重校验提升安全性)、遵循最小权限原则(给APIM或相关标识分配仅够使用的权限)、定期轮换密钥与凭据。
内容的提问来源于stack exchange,提问作者bobs_007
相关产品推荐
相关产品推荐

