在不使用主键或辅助键的情况下使用 azure 存储帐户进行身份验证

Posted

技术标签:

【中文标题】在不使用主键或辅助键的情况下使用 azure 存储帐户进行身份验证【英文标题】:Authenticating with azure storage account without using primary or secondary keys 【发布时间】:2020-07-17 23:20:12 【问题描述】:

据我了解,Azure 存储帐户有两种类型的 SAS 令牌。

    帐户级 SAS 令牌 Blob 容器/队列级 SAS 令牌

我观察到,如果我们不选择使用主/辅助密钥对存储帐户进行身份验证并使用帐户级别 SAS 令牌作为身份验证机制,那么我无法使用存储访问签名创建 Blob 容器级别 SAS 令牌.这是为什么?有没有办法让它工作?我不想提供对帐户级密钥的服务的访问权限,并且想创建 SAS 令牌以在运行时实现 RBAC,有什么办法吗?

【问题讨论】:

【参考方案1】:

我观察到,如果我们不选择使用主键/辅助键 使用存储帐户进行身份验证并使用帐户级别 SAS 令牌作为身份验证机制,然后我无法创建 Blob 使用存储访问签名的容器级 SAS 令牌。这是为什么呢?

这是设计使然。容器级 SAS 仅允许您在容器级工作,您可以在该容器级对该容器内的 blob 执行操作。创建 Blob 容器是帐户级别的活动,因此您需要使用帐户 SAS。目前,Account SAS 没有共享访问策略的概念。

我不想在帐户级别提供对我的服务的访问权限 密钥并希望创建 SAS 令牌以在 运行时,有什么办法吗?

是的,有。 Azure Blob 存储支持基于 Azure AD 的身份验证/授权,并支持 Azure 订阅中提供的基于角色的访问控制 (RBAC)。你可以在 Azure AD 中为用户分配精细的 RBAC 角色,他们将只能执行其角色允许的操作。你可以在这里阅读更多信息:https://docs.microsoft.com/en-us/azure/storage/common/storage-auth-aad。

您可以在此处找到有关 Azure 存储中可用的各种授权选项的更多详细信息:https://docs.microsoft.com/en-us/rest/api/storageservices/authorize-requests-to-azure-storage。

【讨论】:

以上是关于在不使用主键或辅助键的情况下使用 azure 存储帐户进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Django:在不指定主键的情况下创建固定装置?

Sql Server中的游标最好只能用于有主键或唯一键的表

主键和唯一键的区别

在不使用 Azure SDK 的情况下使用 REST API 将流上传到 Azure Blob 存储

如何在jpa中加入具有多个主键或特定主键的列

如何在不编写自己的程序的情况下将某些文件上传到 Azure Blob 存储?