在Azure订阅中,我有一个包含多个已定义容器的存储帐户。目前,我的所有代码都使用连接字符串的主访问键来读取和写入容器的数据。所有容器都是私有的。我可以为存储帐户生成只读连接字符串,还是必须为每个容器定义?
答案 0 :(得分:3)
如果您正在尝试模仿文件系统的文件夹,那么您可能需要考虑在单个Blob容器中创建虚拟目录,而不是创建> 20个单独的容器来表示文件夹。在另一个stackoverflow问题中讨论了目录的使用:Windows Azure: How to create sub directory in a blob container以及Azure Storage Blobs Service Working with Directories。 CloudBlobDirectory Class表示blob的blob目录,由分隔符指定。如果将所有目录放在一个容器中,则可以通过替代配置公共访问(例如匿名读取访问),共享访问签名或{{3)为此容器中的所有blob(包括子目录中的blob)设置一次访问权限。 }} 。容器上的存储访问策略可能对您有用,因为它可以撤消,扩展或更新您部署的SAS字符串,而无需重新部署新字符串。
答案 1 :(得分:1)
此时,无法为存储帐户创建只读连接字符串。从平台方面来说,您唯一的选择是使用Shared Access Signatures
/Container Level ACL
,但您必须分别为每个blob容器执行此操作。其他选项是创建自己的应用程序,作为用户和存储帐户之间的代理。对存储帐户的所有请求都将通过此应用程序进行路由,您可以在此处使用此只读机制拒绝除GET以外的所有请求(仅限只读行为)。