azure - 如何保护受 APIM 保护的 Azure Functions,以便它们仅响应来自同一资源组中的 Azure Web 应用程序的请求?

标签 azure security azure-functions azure-api-management

我有一个托管在 Azure 上的 Web 应用程序 (MVC/C#/.Net Core 3.1)。

两个由 HTTP 触发并受 APIM 保护的新 Azure 函数将添加到同一父资源组中,以便 Web 应用程序从中获取数据。

如何才能使 Azure 函数仅响应应用程序发出的 GET 请求?有没有一种方法可以实现“如果原始服务器既不是 Azure 盒子 123-South 也不是 123-West,则返回 HTTP 403”,或者如果添加更多功能,可以更好地扩展?

或者,是否有一种方法可以使用代码检查 Azure 函数中的 HTTP header ?

我们之前的 Web API(该函数的前身)是“本地”托管的。它检查 HTTP 请求的 header ,查找特定的 base-64 编码 header 。如果找到,则对 header 的值进行解码并检查其正确性。对于 Azure 来说,这仍然是一种有效的方法吗?

注意:我们的网络应用要求用户通过 Microsoft 或任何其他身份提供商登录。我们的用户是公众,而不是我们域的一部分。

最佳答案

我假设您的 Azure Functions 已通过使用 IP Restrictions 防止直接调用(APIM 除外)。或其他方式,但只是想将其发布给遇到此问题的其他人。

您可以根据自己的情况考虑一些选项

<强>1。使用Client Certificate Authentication
这将要求您的 Web 应用程序在其对 APIM 的请求中设置客户端证书。

<强>2。使用Azure AD Auth
由于您的客户没有要传递的 token ,因此这在您的情况下是可以接受的。在这里,您的 Web 应用程序将使用 Managed Identity 获得一个 token 。或客户端凭据,并将其在请求中传递给 APIM。

<强>3。设置自定义 header
这可能是最不安全但最容易实现的。您只需在 Web 应用程序的请求中添加 header ,APIM 将使用 policies 验证该值。 .

请注意,如果这是一个静态值,并且您的客户以某种方式获得了它,则他们可以直接调用 APIM。使其动态化会增加此选项的复杂性,此时最好选择#1 或#2。

关于azure - 如何保护受 APIM 保护的 Azure Functions,以便它们仅响应来自同一资源组中的 Azure Web 应用程序的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75653606/

相关文章:

azure - 如果 Azure Function App 在消费计划中缩小到 0,它如何监听来自事件中心的传入事件?

azure - 使用数据工厂从 cosmos db 作为源进行复制事件时出错

ajax - 如何在 ajax POST 请求中设置 header 以包含 CSRF token

c# - 我可以使用 Azure Functions 进行 SQL 查询并返回其结果吗?

javascript - Azure Functions - 写入表输出绑定(bind)时处理错误

.net - KeyVaultSecretsRepositoryVaultUriArgumentException

Azure VM 虚拟网络相互通信

.net - 如何创建 Azure 数字孪生备份并将其恢复到空 ADT 帐户中?

javascript - 谁能告诉我这些黑客试图在我的网站上做什么?

java - 无法通过 JBoss AS 7 安全子系统进行身份验证