Azure 上的 Azure Defender 有两种针对 Azure 函数身份验证的策略,我无法从支持 http 调用的其他 Azure 资源中实现这些策略。
- 函数应用应启用客户端证书(传入客户端证书)
- 函数应用应启用身份验证
在 Azure Datafactory 上,如果我选择以系统管理标识形式进行身份验证,并尝试在标题上传递证书,则微软不支持该证书(因为他们在支持票中告诉我“在极少数情况下,您可以同时使用 2 种不同类型的身份验证进行身份验证,MSI 身份验证就足够了。”)
是否有人在函数应用程序上成功启用了客户端证书和身份验证并进行了客户端身份验证?您可以分享逻辑应用程序或数据工厂的客户端配置吗?
答案1
如果您能提供更多有关用例的详细信息,那么回答您的问题会更容易。不过,我会尝试用我的假设来回答。(以粗体显示)
使用 Azure 数据工厂中的 Web 活动调用 Azure 函数。
不幸的是,您不能在 Web 活动中同时使用系统分配的管理标识和客户端证书身份验证方法。
如果你仍然想同时使用这两种方法,那么
- 您需要在 Web 活动中启用托管身份验证,然后
- 在自定义标头中传递证书并在 Azure 函数的代码中对其进行验证。
请注意,在自定义标头中传递证书与内置 Azure 函数的客户端证书模式. 您应该保留客户端证书模式忽略状态。在这种情况下,Azure Function 的前端负载均衡器将透明地将标头转发给客户端代码。
提供两种独立的方法来对 Azure Function 进行身份验证
如果你要允许 Azure Function 为其客户端独立提供这两种方法,那么你应该选择允许选项位于 Azure 函数中的客户端证书模式设置下。在这种情况下,前端负载均衡器将首先提示客户端提供证书。如果没有提供证书,负载均衡器会将请求转发到 Easy-Auth 中间件以对调用者进行身份验证。未经身份验证的请求将被中间件阻止。
使用此后备方法,您可以独立提供两种身份验证方法。请告诉我我的假设是否正确,或者您是否需要更多有关如何配置组件以实现建议的解决方案的详细信息。