首页 > 解决方案 > 在不使用主键或辅助键的情况下使用 azure 存储帐户进行身份验证

问题描述

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

  1. 账户级 SAS 令牌
  2. Blob 容器/队列级 SAS 令牌

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

标签: azureazure-storageazure-blob-storage

解决方案


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

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

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

就在这里。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 。


推荐阅读