azure - 在不使用主键或辅助键的情况下使用 azure 存储帐户进行身份验证
问题描述
据我了解,Azure 存储帐户有两种类型的 SAS 令牌。
- 账户级 SAS 令牌
- Blob 容器/队列级 SAS 令牌
我观察到,如果我们不选择使用主/辅助密钥对存储帐户进行身份验证并使用帐户级别 SAS 令牌作为身份验证机制,那么我无法使用存储访问签名创建 Blob 容器级别 SAS 令牌。这是为什么?有没有办法让它工作?我不想提供对帐户级别密钥的服务的访问权限,并且想创建 SAS 令牌以在运行时实现 RBAC,有什么办法吗?
解决方案
我观察到,如果我们不选择使用主/辅助密钥对存储帐户进行身份验证并使用帐户级别 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 。
推荐阅读
- go - 包的 `init()` 函数中的无限循环 - 好主意还是坏主意?
- ios - Fastlane 扫描在当前测试会话未完成时启动新的测试会话
- java - 我可以在多个地方使用相同的片段吗?
- mysql - 是什么降低了这个产品搜索 MySQL 查询的速度?
- spotfire - 如何使用 C# API 删除 FilteringScheme?
- r - 基于匹配字符的折叠因子级别
- vb.net - 如何使用功能来防止datagridview的重复记录
- angular - 如何将动态创建的输入元素绑定到 FormGroup?
- html - 如何使右侧边栏悬停在页面的上下文上而不是占用单独的空间
- google-bigquery - 银行家对 BigQuery 的四舍五入