【问题标题】:Is it possible to use Azure Blob Storage on a website that has no authentication?是否可以在没有身份验证的网站上使用 Azure Blob 存储?
【发布时间】:2022-08-18 22:18:00
【问题描述】:
我需要为访问我网站的任何人创建一种将图像上传到 Azure Blob 容器的方法。该网站将有input validations on the file。
我曾考虑使用 Azure 函数将经过验证的文件写入 Blob 容器,但我似乎无法找到一种方法来执行此操作而不将函数 URL 公开(类似于 this question.
我会使用系统分配的托管身份 (SAMI) 对存储帐户的函数进行身份验证,但正因为如此,任何人都可以获取函数 URL 并绕过验证并上传。
这在现实世界中是如何完成的?
标签:
file-upload
azure-functions
azure-blob-storage
【解决方案1】:
如果我理解正确,用户通过 HTTP POST 调用将文件上传到您的服务器,该服务器对其进行验证。您想使用 Azure 函数将经过验证的文件上传到 Blob 存储。
在这种情况下,您可以限制对 Azure Function 的访问;以便只能从您的服务器的 IP 调用它。这样用户就无法访问该功能。这可以通过网络设置和is available on all Azure Function plans 来完成。
您还可以考虑在 Azure 函数中实现验证逻辑。
最后(也许我应该从这个开始),如果您只考虑编写一个 Azure 函数来将数据上传到存储帐户,您可能应该首先考虑使用 Blob 服务 REST API,特别是 PUT Blob endpoint。您还可以使用针对不同语言/生态系统的官方存储帐户 SDK 来执行此操作。