【问题标题】:Azure Storage Account SAS and Azure Virtual MachineAzure 存储帐户 SAS 和 Azure 虚拟机
【发布时间】:2017-04-08 13:50:42
【问题描述】:

我在 Azure 上创建了一个 linux 虚拟机,并在同一订阅和同一资源组中创建了一个 Blob 存储帐户。

我正在尝试使用共享访问签名从我的虚拟机访问我的存储帐户。

因此,我使用虚拟机的公共 IP 生成了一个 SAS URL,并尝试从我的 Java 应用程序访问存储帐户,但我收到错误消息,告诉我指定的 IP 不在授权 IP 范围内。

我尝试了另一个订阅并得到了同样的结果。

我也尝试过使用 curl,但总是遇到同样的错误。

错误是:

<?xml version="1.0" encoding="utf-8"?>
<Error>
<Code>AuthorizationSourceIPMismatch</Code>
<Message>
This request is not authorized to perform this operation using this source IP 100.**.**.**.
RequestId:*********-****-****-****-***********
Time:2016-11-24T09:58:57.9211184Z
</Message>
<SourceIP>100.**.**.**</SourceIP>
</Error>

【问题讨论】:

    标签: azure azure-blob-storage azure-virtual-machine


    【解决方案1】:

    根据您提供的错误信息,我假设您在生成 SAS 令牌时,可能已经配置了可选参数 IP

    如官方tutorial所说:

    IP。一个可选参数,用于指定 Azure 之外的 IP 地址或 IP 地址范围(请参阅快速路由的路由会话配置状态部分),从该参数中接受请求。

    请尝试检查您的 SAS URL 并查看您是否配置了sip 参数。您可以尝试删除可选 IP 参数或包含特定 IP 并重新生成您的 SAS 令牌。

    【讨论】:

    • 是的,我已经配置了一个 IP,因为我需要它来确保安全。所以我把我的 Azure 虚拟机的公共 IP 设置为 40.114.*.*。所以对服务器的访问应该可以工作。但是 Azure 存储错误说尝试访问它的 IP 以 100.*.*.* 开头,这就是我不明白的地方
    • 我尝试将我的 Web 应用程序部署到 VM,并且我可以使用包含我的 VM 的公共 IP 的 SAS URL 从我的 Web 应用程序后端访问 Azure 存储。请尝试验证 IP 100.*.*.* 并找出它的来源。
    • 显然它来自 Azure SNAT。我要求 Azure 支持,他们会尝试观察正在发生的事情
    • 任何更新,请更新您的问题或为可能遇到相同问题的其他社区成员发布答案。
    • 问题来自 Azure 代理。如果使用 Azure 代理,则每次尝试访问外部资源时 IP 都会更改。您需要从您的 Azure 存储帐户中禁用 IP 过滤器以允许来自多个 IP 地址的连接
    【解决方案2】:

    根据 Bruce 的回答,请注意上面引用的相同文档说“在 Azure 之外”。我相信在 SAS 中为 Azure 范围内的 IP 使用 sip 将不受支持。类似行为的最佳选择是使用存储防火墙并允许虚拟机的虚拟网络连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 2013-06-26
      • 2014-02-17
      • 2020-08-24
      • 1970-01-01
      • 2017-06-25
      相关资源
      最近更新 更多