【Azure 存储服务】关于Azure Storage Account(存储服务) 基于AAD用户的权限设定以及SAS key的管理问题
问题描述
如何查到一个Storage Account曾经创建过多少SAS key,这些Key是否可以回收和限定?能否基于AAD身份对 Container / Folder 进行权限的设定和管理?
问题解答
存储账户的SAS分为 用户委托SAS、服务SAS、账户SAS。
- 用户委托SAS是使用Azure AD凭据签名的SAS。
- 服务SAS和账户SAS使用存储账户密钥进行签名。
共享访问签名分为临时SAS和具有存储访问策略的服务SAS,详细请参考:https://docs.azure.cn/zh-cn/storage/common/storage-sas-overview?toc=/storage/blobs/toc.json#account-sas
- 临时SAS : 将在 SAS URI 中指定开始时间、到期时间和权限 (任何类型的 SAS 都可以用作临时 SAS)。
- 具有存储访问策略的服务SAS : 存储访问策略是针对资源容器(可以是 Blob 容器、表、队列或文件共享)定义的。 可以使用存储访问策略来管理一个或多个服务共享访问签名的约束。 将某个服务 SAS 与某个存储访问策略关联时,该 SAS 将继承对该存储访问策略定义的约束 — 开始时间、过期时间和权限 (用户委托SAS和账户SAS不支持存储策略)。
问题1:如何查到以前创建过多少SAS key
目前暂时无法查询以前创建过的SAS。
问题2:这些Key是否可以回收和限定?
账户临时SAS无法撤销,仅在设置的过期时间之内有效,服务SAS可以通过存储访问策略撤销服务SAS的权限。用户委托SAS可以通过CLI命令来撤销:https://docs.azure.cn/zh-cn/storage/blobs/storage-blob-user-delegation-sas-create-cli#revoke-a-user-delegation-sas
问题3:能否基于AAD身份对folder进行权限的设定和管理?
使用AzureAD对于Data Lake Storage Gen2进行控制,官方文档:https://docs.azure.cn/zh-cn/storage/blobs/data-lake-storage-access-control
https://docs.azure.cn/zh-cn/storage/blobs/data-lake-storage-explorer-acl
如果想要生成SAS,作为安全最佳做法,建议使用Azure AD凭据的方式,也就是用户委托SAS,而不要使用更容易透漏Storage Key的账户SAS和服务SAS。对于创建用户委托SAS您可以参考如下CLI命令:
az cloud set -n AzureCloud
az login
az storage container generate-sas --account-name xxxx_storage --name xxxx_container --permissions acdlrw --expiry 2022-03-02 --auth-mode login --as-user #撤销命令:
az storage account revoke-delegation-keys --name xxxx_container--resource-group xxxx_group
使用 Power Shell创建服务SAS脚本,可以参考如下内容:
#Now we need to create Storage context
$context = New-AzStorageContext -StorageAccountName your storage account name -StorageAccountKey your storage account key $StartTime = Get-Date
$EndTime = $startTime.AddDays(1)
$policy=New-AzStorageContainerStoredAccessPolicy -Container "your containe rname" -Policy "your stored access policy" -Permission rwd -StartTime $StartTime -ExpiryTime $EndTime -Context $context -Debug New-AzStorageContainerSASToken -Name "your container name" -Policy $policy -Protocol HttpsOrHttp -Context $context
Data Lake Storage Gen2 支持以下授权机制:
- 共享密钥授权
- 共享访问签名 (SAS) 授权
- 基于角色的访问控制 (Azure RBAC)
- 访问控制列表 (ACL)
共享密钥和 SAS 授权向用户(或应用程序)授予访问权限,不要求其在 Azure Active Directory (Azure AD) 中有标识。 使用这两种形式的身份验证时,Azure RBAC 和 ACL 不起作用。
Azure RBAC 和 ACL 都要求用户(或应用程序)在 Azure AD 中有标识。使用 Azure RBAC,可以授予对存储帐户数据的“粗粒度”访问权限(例如,对存储帐户中 所有 数据的读取或写入访问权限),而使用 ACL,可以授予“细粒度”访问权限,例如,对特定目录或文件的写入访问权限。
参考资料
- SAS最佳实践请参考:https://docs.azure.cn/zh-cn/storage/common/storage-sas-overview?toc=/storage/blobs/toc.json#best-practices-when-using-sas
- 存储访问策略:https://docs.azure.cn/zh-cn/storage/blobs/authorize-access-azure-active-directory
- 使用CLI创建用户委托SAS:https://docs.azure.cn/zh-cn/storage/blobs/storage-blob-user-delegation-sas-create-cli
- 对于判断SAS对Storage Account的操作,当开启 Storage Account 诊断日志后,诊断日志中会记录相应的请求:https://docs.azure.cn/zh-cn/storage/common/storage-analytics-logging?toc=/storage/blobs/toc.json
- Data Lake Storage Gen2 访问控制模型:https://docs.azure.cn/zh-cn/storage/blobs/data-lake-storage-access-control-model
- Data Lake Storage Gen2 访问控制列表ACL:https://docs.azure.cn/zh-cn/storage/blobs/data-lake-storage-access-control
- Data Lake Storage Gen2 是可以设置服务SAS:https://docs.azure.cn/zh-cn/storage/blobs/sas-service-create?tabs=dotnet#create-a-service-sas-for-a-directory
- 创建Storage Context:https://docs.microsoft.com/en-us/powershell/module/az.storage/new-azstoragecontext?view=azps-6.3.0
- 创建存储访问策略请参考:https://docs.microsoft.com/en-us/powershell/module/az.storage/new-azstoragecontainerstoredaccesspolicy?view=azps-6.3.0
- 创建SAS Token:https://docs.microsoft.com/en-us/powershell/module/az.storage/new-azstoragecontainersastoken?view=azps-6.3.0
- Power shell安装介绍:https://docs.azure.cn/zh-cn/storage/blobs/storage-quickstart-blobs-powershell
- Data Lake Storage Gen2访问控制模型详细:https://docs.azure.cn/zh-cn/storage/blobs/data-lake-storage-access-control-model
【Azure 存储服务】关于Azure Storage Account(存储服务) 基于AAD用户的权限设定以及SAS key的管理问题的更多相关文章
- 【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
问题描述 在使用Azure Spring Cloud服务时,如果要收集应用程序的日志.有控制台输出(实时流日志),也可以配置Log Analytics服务. 日志流式处理 可以通过以下命令在 Azur ...
- 【Azure 存储服务】Python模块(azure.cosmosdb.table)直接对表存储(Storage Account Table)做操作示例
什么是表存储 Azure 表存储是一项用于在云中存储结构化 NoSQL 数据的服务,通过无结构化的设计提供键/属性存储. 因为表存储无固定的数据结构要求,因此可以很容易地随着应用程序需求的发展使数据适 ...
- 【Azure 环境】由为存储账号(Storage Account)拒绝分配权限而引出的Azure 蓝图(Blueprint)使用问题
问题描述 当打开Azure存储账号(Storage Account)门户页面时,从 "访问控制(标识和访问管理)" 页面中发现有"拒绝分配"的功能,所以就思考, ...
- Azure China (4) 管理Azure China Storage Account
<Windows Azure Platform 系列文章目录> Update 2015-05-10 强烈建议使用AzCopy工具,AzCopy命令行工具,是经过优化的.高性能Azure S ...
- 直传文件到Azure Storage的Blob服务中
(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:为了庆祝获得微信公众号赞赏功能,忙里抽闲分享一下最近工作的一点心得:如何直接从浏览器中上传文件到Azure ...
- [转]Azure 表存储和 Windows Azure SQL Database - 比较与对照
本文转自:https://msdn.microsoft.com/library/azure/jj553018 更新时间: 2014年10月 作者:Valery Mizonov 和 Seth Manhe ...
- Azure Terraform(四)状态文件存储
一,引言 我们都知道在执行部署计划之后,当前目录中就产生了名叫 "" 的 Terraform 的状态文件,该文件中记录了已部署资源的状态.默认情况下,在执行部署计划后,Terraf ...
- 【Azure Developer】使用 Python SDK连接Azure Storage Account, 计算Blob大小代码示例
问题描述 在微软云环境中,使用python SDK连接存储账号(Storage Account)需要计算Blob大小?虽然Azure提供了一个专用工具Azure Storage Explorer可以统 ...
- 自建存储与使用微软Azure、七牛等第三方云存储综合考察分析
http://www.cnblogs.com/sennly/p/4136734.html 各种云服务这两年炒的火热,加之可以降低成本,公司想先在部分业务上尝试使用下,刚好最近有个项目有大量小文件需要存 ...
- 【Azure 应用服务】Azure Function集成虚拟网络,设置被同在虚拟网络中的Storage Account触发,遇见Function无法触发的问题
一切为了安全,所有的云上资源如支持内网资源访问,则都可以加入虚拟网络 问题描述 使用Azure Function处理Storage Account中Blob 新增,更新,删除等情况.Storage A ...
随机推荐
- 【计数,DP】ABC306Ex Balance Scale
Problem Link 现在有 \(n\) 个球,每个球有一个重量,重量未知.接下来会进行 \(m\) 次称重,每次给定 \(a_i\) 和 \(b_i\),比较这两个球的重量,结果可能是 \(&g ...
- iframe 在线预览pdf、word、excel、ppt、txt、图片、视频
第一种方式通过 iframe 在线预览 pdf,word,excel,ppt,txt,图片,视频 <template> <el-button @click="openHan ...
- echarts设置标题样式
<!DOCTYPE html> <html> <!-- https://blog.csdn.net/weixin_42698255/article/details/892 ...
- axios发送请求时携带token
请求头携带token async getUserlist(){ // 需要授权的Api,必须在青丘头中使用Authorization 字段提供token令牌 const AUTH_TOKEN=loca ...
- 从零开始配置 vim(14)——目录管理插件
我们在介绍vim目录管理的时候提到 vim自带一个 叫做 netrw的工具来管理目录.但是它自身的功能有限,而且样式也丑.今天我们将使用其他强大的插件来替代 netrw,增强目录管理功能 nvim-t ...
- Spring一套全通3—AOP编程
百知教育 - Spring系列课程 - AOP编程 第一章.静态代理设计模式 1. 为什么需要代理设计模式 1.1 问题 在JavaEE分层开发开发中,那个层次对于我们来讲最重要 DAO ---> ...
- grafana+prometheus+loki的使用
grafana官网:https://grafana.com/zh-cn/grafana/ grafana下载:https://grafana.com/grafana/download?pg=graf& ...
- 【Linux】root密码忘记了怎么办【技能篇】一分钟教会你重置root密码
[Linux]root密码重置 文章目录 前言介绍 操作步骤 尾声 前言介绍 那么这里博主先安利一下一些干货满满的专栏啦! 数据结构专栏:数据结构 这里包含了博主很多的数据结构学习上的总结,每一篇都是 ...
- 高精度模板 大数减大数 可变数组vector实现
vector<int> Sub(vector<int>& A, vector<int>& B)//这里默认长数减去短数 { vector<in ...
- 19c ADG Switchover 切换测试
背景: 环境未配置DG Broker,手工切换ADG,19c也要比11g时代的切换更简单. 使用自己的测试环境,具体可参见: 单实例Primary快速搭建Standby RAC参考手册(19.16 A ...