【问题标题】:How do I define a read-only access connection string for a container in Azure?如何为 Azure 中的容器定义只读访问连接字符串?
【发布时间】:2013-04-17 06:40:52
【问题描述】:

在 Azure 订阅中,我有一个包含多个已定义容器的存储帐户。目前,我的所有代码都使用连接字符串的主访问键来读取和写入容器的数据。所有容器都是私有的。我可以为存储帐户生成只读连接字符串还是必须为每个容器定义它?

【问题讨论】:

    标签: azure azure-blob-storage


    【解决方案1】:

    如果您试图模仿文件系统的文件夹,那么您可能需要考虑在单个 blob 容器中创建虚拟目录,而不是创建超过 20 个单独的容器来表示文件夹。目录的使用在另一个 stackoverflow 问题中讨论:Windows Azure: How to create sub directory in a blob containerAzure Storage Blobs Service Working with DirectoriesCloudBlobDirectory Class 表示 blob 的 blob 目录,由分隔符指定。如果将所有目录放在一个容器中,则可以通过配置公共访问(例如匿名读取访问)、共享访问签名或Stored Access Policies 来为该容器中的所有 blob(包括子目录中的 blob)设置一次访问权限 .容器上的存储访问策略可能对您有用,因为它使您部署的 SAS 字符串能够被撤销、扩展或更新,而无需重新部署新字符串。

    【讨论】:

      【解决方案2】:

      目前,无法为存储帐户创建只读连接字符串。从平台方面来看,您唯一的选择是使用Shared Access Signatures/Container Level ACL,但您必须分别为每个 blob 容器执行此操作。其他选择是创建自己的应用程序,充当用户和存储帐户之间的代理。对您的存储帐户的所有请求都将通过此应用程序进行路由,您可以在其中合并此只读机制,您可以拒绝除 GET 之外的所有请求(用于只读行为)。

      【讨论】:

      • 谢谢...这就是我所害怕的。该项目被设计为具有超过 20 个独立的容器来模拟文件系统的文件夹。回到绘图板,我猜。并将改进的想法提交给 Azure。
      • 回复:“该项目被设计为具有 >20 个单独的容器” - 如果您愿意,您仍然可以这样做,但是您可以使用 /a、/b、/c 等来代替/data/a、/data/b、/data/c 等,并通过 Gaurav 提到的共享访问签名功能提供对 /data 的只读访问。这将允许一个键访问所有 20 多个区域,保持文件系统的感觉。
      猜你喜欢
      • 2011-08-22
      • 2016-06-02
      • 2010-10-13
      • 2012-04-24
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多