gpt4 book ai didi

azure - 如何以编程方式找出我可以在 Blob 存储中执行哪些操作?

转载 作者:行者123 更新时间:2023-12-02 07:53:51 24 4
gpt4 key购买 nike

我正在使用库Microsoft.Azure.Storage.Blob 11.2.3.0 和 Microsoft.Azure.Storage.Common 11.2.3.0 从 .NET Core 3.1 应用程序连接到 Azure BlobStorage。

当我开始从事这项工作时,我获得了连接字符串,使我能够完全访问 BlobStorage(或者更确切地说,整个云存储帐户)。基于这些,我选择“防御性”地编写我的连接代码,利用 Exists()CreateIfNotExists()来自CloudBlobContainer class以确保当容器尚不存在时应用程序不会失败。

<小时/>

现在,我正在使用 SAS 连接 BlobStorage 容器。虽然我可以像这样在容器内自由检索和上传 Blob,但不幸的是,似乎我不被允许这样做容器级别上的任何内容。不仅是 CreateIfNotExists,甚至仅通过 Exists() 查询是否存在也会抛出 StorageException

This request is not authorized to perform this operation.

文档没有提到异常。

有没有办法预先检查我是否被允许检查容器的存在?

我尝试查看从 GetPermissions 检索到的容器权限,但这也会引发异常。

我能看到的唯一其他替代方案是检查 try-catch- block 中是否存在容器,并在抛出异常时假设存在......

最佳答案

除了执行该操作并捕获该操作可能引发的任何异常之外,没有明确的方法来确定是否可以使用 SAS token 来执行该操作。您感兴趣的异常(exception)是未经授权 (403)

但是,您可以尝试通过查看 SAS token 来预测是否可以执行操作。如果是Service SAS Token而不是 Account SAS Token ,表示所有与账户相关的操作都不允许。区分帐户 SAS token 和服务 SAS token 的方法是,前者将包含 SignedServices (ss)SignedResourceTypes (srt) 等属性。

接下来您要做的就是在 SAS token 中查找 SignedPermissions (sp) 属性。此属性将告诉您 SAS token 可以进行哪些操作。例如,如果您的 SAS token 是服务 SAS token ,并且它包含 Delete (d) 权限,则意味着您可以使用此 SAS token 删除 blob。

请参阅以下表格了解权限/允许的操作组合:

请注意,操作仍可能因多种原因而失败,例如 SAS token 已过期、帐户 key 自 SAS token 生成以来已更改、IP 限制等。

关于azure - 如何以编程方式找出我可以在 Blob 存储中执行哪些操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70121964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com