如何保护 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]

如何更新 Azure.Storage.Blob 中的元数据