保护 Azure 静态 Web 应用程序和 Azure Function 之间的连接

问题描述 投票:0回答:2

我已经设置了 Azure 静态 Web 应用程序和 Azure 函数后端。文档(https://learn.microsoft.com/en-us/azure/static-web-apps/functions-bring-your-own)给我的印象是,如果我将两者和azure链接起来函数应用程序没有任何预先存在的安全设置,那么静态应用程序将具有对函数应用程序的独占访问权限。情况并非如此,所有链接应用程序所做的都是提供 URL 覆盖,以便我可以使用前端的 URL 访问该功能。

仅允许从 Azure 静态 Web 应用程序向 Azure Function 应用程序发出请求的推荐方法是什么?我需要使用自带函数选项,因为我需要函数应用程序拥有一组可提供给第三方 API 的白名单 IP 地址。

azure azure-functions azure-static-web-app
2个回答
0
投票

您可以在 azure 函数中尝试使用 proxy.json 作为您选择的 dns url。 您可以使用 api 管理来保护您的功能并将 IP 列入白名单。

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "proxy1": {
            "matchCondition": {
                "methods": [ "GET" ],
                "route": "/api/{test}"
            },
            "backendUri": "https://<AnotherApp>.azurewebsites.net/api/<FunctionName>"
        }
    }
}

https://learn.microsoft.com/en-us/azure/azure-functions/functions-proxies


0
投票

我认为你错了。将 SWA 链接到函数确实会限制对 SWA 的访问。如果我在链接后尝试匿名访问我的函数,我会返回 400(不知道为什么它不是 401)。

但这会导致一个安全漏洞,即任何人都可以通过您的静态 Web 应用程序访问 API。

修复方法是将内置的“authenticated”角色添加到 staticwebapp.config.json 中的 api 路由中。

{
  "routes": [
    {
      "route": "api/*",
      "allowedRoles": [ "authenticated" ]
    }
  ],
  "responseOverrides": {
    "401": {
      "statusCode": 302,
      "redirect": "/.auth/login/aad"
    }
  }
}

来源:我的博客

© www.soinside.com 2019 - 2024. All rights reserved.