azure - 托管标识是否可用于 API 管理服务和 Azure 函数之间的通信?
问题描述
我有一个与 Azure 函数运行时 v1 通信的 Azure API 管理服务。目前,当我部署新版本的 Function App(使用 Azure Devops 中的 CI/CD 管道,并使用内置的 microsoft 任务)时,功能键(包括主键)会发生变化。因此,API 管理的 api 在函数请求中注入的密钥不再有效,我得到 401 - 未经授权。因此,我目前有一项任务正在处理中,以便在我部署 Function App 时随时更新这些密钥。API 管理提供了启用托管身份的功能,但是当我尝试在功能应用程序中为 API 管理创建角色分配时,在系统分配的托管身份下,我没有 API 管理服务的选项。所以我认为不可能在两个服务之间设置这个角色分配,对吧?如果没有,那么是否有任何解决方法的建议,以避免管理 API 管理服务和 Azure Functions 之间通信的密钥?
谢谢
解决方案
更新
现在可以通过利用authentication-managed-identity
策略来使用托管身份。
是的。此处不能使用托管标识。
一种替代方法是使用 APIM Instances IP 通过IP 限制保护您的函数应用程序,只要不重新创建它就保证是静态的,并将函数设置为匿名函数。
请注意,您也可能在从门户访问该功能时遇到问题,如果需要,您必须允许您正在使用的计算机的公共 IP 访问该功能。
另一种选择是
- 为您的函数应用设置身份验证
- 让 APIM使用策略通过客户端凭据流获取访问令牌
send-request
- 在标头中设置此访问令牌以调用匿名函数
您可以尝试使用缓存策略缓存此访问令牌。
推荐阅读
- angular - 在 Angular 应用程序输出块中传递自定义哈希
- git - 使用 git 设置问题
- mysql - 我用mysql安装了ubuntu。下面的错误不断出现
- c# - 从 api 返回时,json 对象缺少根元素
- react-native - 如何通过本机反应将相机流发送到rtmp服务器
- spring - Spring Data REST 事件处理程序是否使用单独的数据库事务?
- python-3.x - python3 - 从文本文件格式导入数据框 head1=value|head2=value
- javascript - javascript中的document.baseURI和document.URL有什么区别
- python - __init__() 得到了一个意外的关键字参数“state_istuple”
- python-3.x - 试图从 guild.bans() 获取用户信息