【发布时间】:2015-04-26 13:58:51
【问题描述】:
我喜欢为 Internet 上的少数外部用户设置几个 Azure 存储容器。我想基于容器设置共享密钥并与他们共享,以便他们可以将文件上传到我的容器。
我不希望他们拥有 Azure 帐户和其他特权,除非将文件推送到他们必须拥有的容器中。
Azure 会支持这种情况吗?阅读大量身份验证和其他可能性,但没有任何线索。
【问题讨论】:
我喜欢为 Internet 上的少数外部用户设置几个 Azure 存储容器。我想基于容器设置共享密钥并与他们共享,以便他们可以将文件上传到我的容器。
我不希望他们拥有 Azure 帐户和其他特权,除非将文件推送到他们必须拥有的容器中。
Azure 会支持这种情况吗?阅读大量身份验证和其他可能性,但没有任何线索。
【问题讨论】:
您应该将共享访问签名 (SAS) 与存储访问策略一起使用。您永远不应该分发您的存储帐户密钥 - 拥有此密钥的任何人基本上都拥有您的存储帐户的管理员权限。
使用存储访问策略,您可以在存储帐户或容器级别定义策略(访问级别、到期)。然后,您可以使用 SAS,它基本上是一个引用存储访问策略并使用存储帐户访问密钥签名的 URI。这使您可以随时更改或撤销该政策。
这里有完整的文档:
https://msdn.microsoft.com/en-us/library/azure/ee393343.aspx
【讨论】:
BenV 是正确的,您应该非常谨慎地限制对存储帐户密钥的访问。创建 SAS 令牌是为了能够授权对容器、blob、表和队列等资源的访问权限。 SAS 令牌既可以是时间限制的(例如 - 2 小时),也可以只包含权限的子集(读取、插入、删除等)。有关详细信息,请参阅以下两篇文章:Access control overview 和 SAS tutorial。
【讨论】:
您无需共享 Azure 登录凭据即可将文件上传到容器。
但是,您只能授予对 azure 存储帐户的访问权限,而不能授予单个容器的访问权限。为此,您需要共享存储帐户“访问密钥”
与其他用户。然后,他们可以将文件上传到同一存储帐户中他们喜欢的任何容器。
您可以尝试使用BlobTransferUtility 将文件上传到存储容器。
【讨论】: