当前位置: 首页 > 知识库问答 >
问题:

限制从Blob存储中的静态网站调用Azure函数?

韦叶秋
2023-03-14

Azure Functions中有多个函数,其中一些由Blob存储中托管的网页使用。

我希望网页(Blob存储)使用的函数来限制调用,所以它们只能由网页调用,而不是其他任何人。像这样的事情可能吗?

我找到了一个限制IP访问的选项,但是这个网页在任何计算机上都会有不同的IP,所以这个选项似乎不是一个好的解决方案。

好的解决方案是限制来自域名的函数调用,但Azure中没有这样的选项。

有人有其他想法吗?

共有1个答案

金高飞
2023-03-14

您可以通过两种方式实现这一点:

1.如果你在函数应用程序中有一小套函数,快速简单廉价的方法

您可以通过在函数应用中启用CORS并指定可以访问函数应用的域列表(以及函数)来实现这一点。

执行此操作的步骤:

  1. 转到Azure中的函数应用资源
  2. 在API菜单下选择CORS
  3. 选中为您提供启用访问控制允许凭据选项的复选框
  4. 指定要启用访问的域或域列表
  5. 保存

跨源资源共享(CORS)允许在外部主机上的浏览器中运行的JavaScript代码与后端交互。指定应该允许进行跨源调用的源(例如:http://example.com:12345)。要允许所有,请使用“*”并从列表中删除所有其他来源。斜线不允许作为域的一部分或TLD之后。

2.如果您有更多的预算,并且您的功能是大型企业应用程序的一部分,则使用更安全的方法

>

  • 在函数应用前面部署新的Azure API管理实例。(https://docs.microsoft.com/en-us/azure/api-management/import-function-app-as-api)

    使用APIM服务标记保护函数应用的访问限制,以仅允许从APIM访问并拒绝所有其他流量(此处阅读更多内容:https://docs.microsoft.com/en-us/azure/app-service/app-service-ip-restrictions)

    完成步骤1和2后,无法直接访问函数应用。您(或其他任何人)只能使用订阅密钥通过APIM访问它。(信息:https://docs.microsoft.com/en-us/learn/modules/publish-manage-apis-with-azure-api-managementhttps://docs.microsoft.com/en-us/learn/modules/control-authentication-with-apim/)

    在APIM(https://docs.microsoft.com/en-us/azure/api-management/api-management-cross-domain-policies#CORS)中启用CORS

    如您所见,APIM为您提供了额外的保护层,您可以按域进行限制,此外,只允许提供订阅密钥的请求访问您的功能。您可以随时撤销和重新生成这些密钥,以确保恶意用户无法访问您的功能应用程序。您还可以配置诸如速率限制之类的功能来防止DDOS攻击。

    附言:我想你会发现这个答案也很有趣。恶意用户可以欺骗CORS。但是,在APIM实例后面保护函数应用程序将给您带来更大的安全性。取决于您希望应用程序的安全级别与预算-如何阻止恶意代码欺骗“源”标题以利用CORS?

    您可以遵循Azure的APIM安全基线建议,通过APIM进一步保护您的functionapp:https://docs.microsoft.com/en-us/security/benchmark/azure/baselines/api-management-security-baseline

  •  类似资料:
    • 我对block blob存储是如何工作的有点困惑,所以我对这些限制是如何工作的有点困惑(从我读到的内容来看,大多数人甚至不会接近这些限制,但我仍然想知道它是如何应用的)。我一直在读这篇文章 限制似乎是这样的 块BLOB存储文本和二进制数据,最多约4.7TB。块BLOB由可以单独管理的数据块组成。 或者block blob是否意味着如果我有img001并且它是1GB,它将被分离成块,并且限制为50,

    • 我推荐将静态文件跟网站的代码、主题、主体文件分开存储,这样的好处是: 可以使用CDN加快静态文件的访问速度 单独管理静态文件,方便重复应用 可以使用其他工具对静态文件的使用和流量进行控制 云存储 我推荐使用如下两种云存储: 七牛云:https://www.qiniu.com Cloudinary: https://www.cloudinary.com 我将分别介绍两种云储存服务,及其各自的优缺点。

    • 我想使用Python中的Azure函数将JSON数据作为. json文件上传到Azure存储Blob。 因为我使用的是Azure函数,而不是实际的服务器,所以我不想(也可能无法)在本地内存中创建一个临时文件,并使用Azure blob存储客户端库v2将该文件上载到Azure blob存储。1对于Python(这里有参考链接)。因此,我想为Azure函数使用输出blob存储绑定(这里有参考链接)。

    • 我想通过运行在Azure VM上的FTP服务器与用户共享Azure Blob存储中的文件。 据我所知,您不能在VM上挂载Blob存储,但可以使用“网络使用”挂载Azure文件共享。 Blob存储上的文件将以增量方式上载,因此理想情况下,我希望在上载时将其复制到Azure文件,Azure功能似乎是理想的方式,因为它们很容易为我设置和处理Blob存储上的触发器。 我如何使用Azure功能将文件从Blo

    • 我想创建一个Azure函数,当上次修改时间超过30天时,从azure blob存储中删除文件。有人能帮忙或者有文档来做吗?

    • 我试图将Azure网站连接到Azure Blob(我打算在容器中托管一些文件,然后从我的网站获取它们)。 我从本教程开始:http://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-get-started/ 我部署了我的网站,然后开始学习本教程:http://azure.microsoft.com/en-us/d