如何限制 Azure 函数应用仅访问 AD B2C API 连接器?
How to restrict an Azure function app's access to only AD B2C API connector?
我设置了一个函数应用程序,目的是在“创建用户之前”步骤中通过我的 AD B2C API 连接器调用它。我想确保以这种方式只能调用此函数。我不确定执行此操作的最佳方法。我见过的一种情况是使用 API 管理,我可以要求后端使用 username/pw 来访问所述功能,并且在我的 API 连接器中我可以指定相同的 u/pw,从而验证。但这似乎不是生产的最佳主意。理想情况下我会:
- 限制 ip/domain 从 API 连接器从
发送请求的任何地方访问网络
- 需要来自 API 连接器的证书而不是 username/pw
关于第 1 点,我不知道该怎么做,因为我无法弄清楚 ip 是什么(我的猜测是有几个并且可能会改变),所以也许有一个限制仅由我的 B2C 租户访问该功能的不同方法?
关于第 2 点,我看到作为 API 连接器的一部分,我可以告诉它使用在撰写本文时处于预览状态的证书。问题在于,唯一的选择是手动上传证书,这意味着每次我的 Let's Encrypt 证书更新(90 天)时,我都必须手动更改此证书。似乎没有办法像 APIM 那样将此挂钩连接到密钥库中,并且功能应用程序可以自动获取最新的证书。
那么,在生产中,preferred/secure 锁定对功能应用程序的访问权限的方法是什么,该功能应用程序的唯一目的是成为 B2C 用户流程中步骤之一的一部分 API连接器?
不可能,AAD B2C 调用您的 REST 的 IP 范围 API 可以覆盖整个 Azure DC IP 范围。
您需要使用 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-rest-beta&tabs=http
您可以将它与 KeyVault 结合使用以自动生成证书,让您的管道提取它,然后部署到 AAD B2C。
我设置了一个函数应用程序,目的是在“创建用户之前”步骤中通过我的 AD B2C API 连接器调用它。我想确保以这种方式只能调用此函数。我不确定执行此操作的最佳方法。我见过的一种情况是使用 API 管理,我可以要求后端使用 username/pw 来访问所述功能,并且在我的 API 连接器中我可以指定相同的 u/pw,从而验证。但这似乎不是生产的最佳主意。理想情况下我会:
- 限制 ip/domain 从 API 连接器从 发送请求的任何地方访问网络
- 需要来自 API 连接器的证书而不是 username/pw
关于第 1 点,我不知道该怎么做,因为我无法弄清楚 ip 是什么(我的猜测是有几个并且可能会改变),所以也许有一个限制仅由我的 B2C 租户访问该功能的不同方法?
关于第 2 点,我看到作为 API 连接器的一部分,我可以告诉它使用在撰写本文时处于预览状态的证书。问题在于,唯一的选择是手动上传证书,这意味着每次我的 Let's Encrypt 证书更新(90 天)时,我都必须手动更改此证书。似乎没有办法像 APIM 那样将此挂钩连接到密钥库中,并且功能应用程序可以自动获取最新的证书。
那么,在生产中,preferred/secure 锁定对功能应用程序的访问权限的方法是什么,该功能应用程序的唯一目的是成为 B2C 用户流程中步骤之一的一部分 API连接器?
不可能,AAD B2C 调用您的 REST 的 IP 范围 API 可以覆盖整个 Azure DC IP 范围。
您需要使用 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-rest-beta&tabs=http
您可以将它与 KeyVault 结合使用以自动生成证书,让您的管道提取它,然后部署到 AAD B2C。