【发布时间】:2017-09-14 16:47:18
【问题描述】:
我正在尝试限制对 Azure blob 的访问。我目前可以使用共享访问签名提供时间限制为 5 分钟的链接。但是只是想知道是否有任何机制需要更高的安全性,例如 IP 地址?
如果不是,我假设我只需要让客户端通过网络角色访问,然后在那里检查?
【问题讨论】:
我正在尝试限制对 Azure blob 的访问。我目前可以使用共享访问签名提供时间限制为 5 分钟的链接。但是只是想知道是否有任何机制需要更高的安全性,例如 IP 地址?
如果不是,我假设我只需要让客户端通过网络角色访问,然后在那里检查?
【问题讨论】:
更新:现在支持此功能! 上面有关最佳答案的详细信息。其余的仍然感兴趣,所以把它留在里面。
N̶o̶ ̶I̶P̶ ̶f̶i̶l̶t̶e̶r̶s̶ ̶s̶u̶p̶p̶o̶r̶t̶e̶d̶ ̶d̶i̶r̶e̶c̶t̶l̶y̶ ̶-̶ ̶o̶f̶ ̶c̶o̶u̶r̶s̶e̶ ̶y̶o̶u̶ ̶c̶a̶n̶ ̶d̶o̶ ̶t̶h̶i̶s̶ ̶i̶n̶ ̶y̶o̶u̶r̶ ̶o̶w̶n̶ ̶W̶e̶b̶ ̶R̶o̶l̶e̶ ̶a̶s̶ ̶y̶o̶u̶ ̶s̶u̶g̶g̶e̶s̶t̶.̶ But this is why you should be confident with Shared Access Tokens*:
SAS blob URL 可以在 5 分钟内被大规模发布和攻击的唯一方法是接收者有恶意。因此,无论采用何种保护方法(例如 IP 限制),您都将很容易受到攻击,因为您已授予攻击者访问权限。如果数据受到 IP 限制,他们可以直接下载数据并发布。
共享访问令牌与超时相结合确实可以防止暴力攻击猜测 URL 或任何粗心将其放置在不安全的位置随着时间的推移。
只要您信任与您共享的人,并以安全的方式将其传送给他们,您就可以了。
*在大多数情况下
【讨论】:
Azure 存储服务似乎有一个新功能 (shared access signatures),它允许将 IP 地址列入白名单。
SAS 让您可以精细控制授予拥有 SAS 的客户的访问权限类型,包括:
- SAS 有效的时间间隔,包括开始时间和到期时间。
- SAS 授予的权限。例如,一个 Blob 的 SAS 可能会授予对该 Blob 的读取和写入权限,但不会 删除权限。
- Azure 存储将从其接受 SAS 的可选 IP 地址或 IP 地址范围。例如,您可以指定一个范围 属于您的组织的 IP 地址。
- Azure 存储接受 SAS 的协议。您可以使用此可选参数来限制对使用 HTTPS 的客户端的访问。
来源:MSDN
【讨论】:
没有额外的 IP 过滤机制。您可以通过您的 Web 角色引导所有流量并在那里过滤流量,或者使用 SAS(正如您已经建议的那样)。
【讨论】: