首页 > 解决方案 > 如何限制 Azure 函数应用仅访问 AD B2C API 连接器?

问题描述

我已经设置了一个函数应用程序,目的是在“创建用户之前”步骤中通过我的 AD B2C API 连接器调用它。我想确保这个函数只能以这种方式调用。我不确定执行此操作的最佳方法。我见过的一种情况是使用 API 管理,我可以要求后端使用用户名/密码来访问所述功能,并且在我的 API 连接器中我可以指定相同的 u/密码,从而进行身份验证。但这似乎不是生产的最佳主意。理想情况下,我会:

  1. 将网络访问限制为仅从 API 连接器发送请求的位置的 ip/域
  2. 需要来自 API 连接器的证书而不是用户名/密码

关于第 1 点,我不知道该怎么做,因为我不知道 ip 是什么(我的猜测是有几个,而且可能会改变),所以也许有不同的方法来限制访问只有我的 B2C 租户才能使用该功能?

关于第 2 点,我看到作为 API 连接器的一部分,我可以告诉它使用在撰写本文时处于预览状态的证书。问题在于,唯一的选择是手动上传证书,这意味着每次我的 Let's Encrypt 证书更新(90 天)时我都必须手动更改它。似乎没有办法让这个钩子像 APIM 和功能应用程序一样自动获取最新的证书。

那么,在生产中,锁定对功能应用程序的访问的首选/安全方式是什么,该功能应用程序的唯一目的是成为 B2C 用户流 API 连接器中步骤之一的一部分?

标签: azure-functionsazure-ad-b2c

解决方案


  1. 不可能,AAD B2C 从中调用 REST API 的 IP 范围可以覆盖整个 Azure DC IP 范围。

  2. 您需要使用 CI/CD 管道:https ://docs.microsoft.com/en-us/azure/active-directory-b2c/deploy-custom-policies-devops

这是通过 Graph API 将证书上传到策略密钥的参考,您可以将其集成到您的管道中 https://docs.microsoft.com/en-us/graph/api/identityapiconnector-uploadclientcertificate?view=graph-休息-beta&tabs=http

您可以将其与 KeyVault 结合使用以自动生成证书,让您的管道获取它,然后部署到 AAD B2C。


推荐阅读