如何保护 azure blob
Posted
技术标签:
【中文标题】如何保护 azure blob【英文标题】:How to secure azure blobs 【发布时间】:2013-01-07 01:38:30 【问题描述】:我正在使用 Windows azure blob 存储服务。我想保护我的 blob 免受公共访问(我的用户除外)。为此,我使用了共享访问签名 (SAS),它工作正常。但我的问题是我有一个在目录结构中包含 blob 的容器,例如:
https://xxxxxxx.blob.core.windows.net/myContainer/directory1/blob1
https://xxxxxxx.blob.core.windows.net/myContainer/directory1/blob2
https://xxxxxxx.blob.core.windows.net/myContainer/directory1/blob3
https://xxxxxxx.blob.core.windows.net/myContainer/directory1/blob4
https://xxxxxxx.blob.core.windows.net/myContainer/directory1/blob5
https://xxxxxxx.blob.core.windows.net/myContainer/directory2/blob1
https://xxxxxxx.blob.core.windows.net/myContainer/directory2/blob2
https://xxxxxxx.blob.core.windows.net/myContainer/directory2/blob3
https://xxxxxxx.blob.core.windows.net/myContainer/directory2/blob4
https://xxxxxxx.blob.core.windows.net/myContainer/directory2/blob5
and so on...
现在我的要求是我想公开访问myContainer under directory2
中的所有 blob,但不授予 directory1
下的 blob,我希望将 directory1 下的所有 blob 保持为私有。我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:Azure Blob 存储中没有目录。您现在拥有的那些“目录”只是名称中嵌入了/
的blob。由于权限仅在容器级别,您必须创建单独的容器。
【讨论】:
【参考方案2】:您可以创建两个容器。
一个带有 SAS 容器级别的私有容器和一个公共访问容器
https://xxxxxxx.blob.core.windows.net/private/blob1
https://xxxxxxx.blob.core.windows.net/private/blob2
https://xxxxxxx.blob.core.windows.net/private/blob3
https://xxxxxxx.blob.core.windows.net/private/blob4
https://xxxxxxx.blob.core.windows.net/private/blob5
https://xxxxxxx.blob.core.windows.net/public/blob1
https://xxxxxxx.blob.core.windows.net/public/blob2
https://xxxxxxx.blob.core.windows.net/public/blob3
https://xxxxxxx.blob.core.windows.net/public/blob4
https://xxxxxxx.blob.core.windows.net/public/blob5
【讨论】:
【参考方案3】:您只能在容器级别设置权限,因此您有两个选择。
首选选项)创建一个额外的公共容器并移动您的 blob。 更糟糕的选择)为所有文件创建一个看似无穷无尽的有效 sas 链接。
【讨论】:
以上是关于如何保护 azure blob的主要内容,如果未能解决你的问题,请参考以下文章
如何保护 azure blob 存储 url 不被任何使用开发人员工具的人检索
Azure Blob 存储:从 Excel 工作簿中删除密码
如何使用 C# 中的 Azure.Storage.Blobs 从 Azure 存储 Blob 以 ByteArray 格式获取文件
如何使用 Azure.Storage.Blobs 程序集对 Azure Blob 存储操作设置重试策略?
请求令牌时如何在 Azure 存储 Blob 中为 REST 请求指定范围? [AZURE-BLOB][REST API]