从 Azure Function App 访问带有防火墙的 Azure Blob 存储

Posted

技术标签:

【中文标题】从 Azure Function App 访问带有防火墙的 Azure Blob 存储【英文标题】:Access to Azure Blob Storage with Firewall from Azure Function App 【发布时间】:2018-09-26 14:47:10 【问题描述】:

我有一个 Azure blob 存储帐户,该帐户仅通过防火墙连接到选定的网络。我想从在我知道出站 IP 地址的动态计划上运行的函数应用访问此存储帐户。问题是我将这些出站 ip 添加到 blob 存储的防火墙和虚拟网络设置中的允许 IP 地址,但我仍然继续收到错误消息:

此请求无权执行此操作。

有人可以指出我哪里出错了吗?

注意我正在使用 PythonSDK 使用帐户名和帐户密钥访问 blob 存储!

【问题讨论】:

您的 blob 访问策略是什么?您是否尝试过将函数应用添加到存储帐户的权限列表中? 我的 blob 目前设置为私有。除了使用函数应用的出站IP地址外,我不知道如何将函数应用设置为存储帐户的权限列表。你能再解释一下吗? 根据文档,您仍然需要适当的授权(有效的访问密钥或 SAS 令牌)才能访问存储帐户。您是否尝试过使用 SAS 作为您的连接字符串 (docs.microsoft.com/en-us/azure/storage/common/…)?您可以通过 Azure 门户在“共享访问签名”下生成共享访问签名 如果你不是ASE环境,好像不支持访问私有存储。您可以参考此SO thread 了解更多信息。 【参考方案1】:

我使用消费函数应用程序访问我在 blob 存储中的文件进行了一些测试,它对我有用。 我做了两个步骤:

    我启用了存储帐户防火墙并向其中添加了所有函数应用出站 IP。

    Enabling anonymous access 在我要访问的 blob 文件的容器上,以便我的函数应用可以直接访问 blob 文件(因为启用了存储防火墙,因此只有指定的 IP 才能访问您的存储,我认为这里的安全性还可以。如果您的场景需要更高的安全级别,正如@Marie Hoeger 所说,您应该使用私有容器和 SAS 令牌来控制 blob 访问)。

如果您还有任何疑问,请随时告诉我:)

【讨论】:

以上是关于从 Azure Function App 访问带有防火墙的 Azure Blob 存储的主要内容,如果未能解决你的问题,请参考以下文章

在 Postman 中为受 Azure AD B2C 保护的 Azure Function App 请求访问令牌

如何使用用户分配的托管标识访问 Azure 中 Function App Config 的 Key Vault

将 Microsoft Azure Function App 2.0 预览版绑定到 0.0.0.0

从 Azure Function App 调用 Snowflake 过程

如何确定 Webhook 未触发 Azure Function App 的原因

如何使用 Azure 数据工厂使用私有终结点访问 Azure Function?