【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 ...
随机推荐
- MySQL备份恢复简单处理方法
客户备份恢复的脚本处理简要如下: 首先登陆mysql服务器 方法如下: mysql -uroot -p 输入密码即可登陆 然后需要创建一个数据库, 个人感觉同名恢复最容易出问题 create data ...
- requests模块安装
使用python写接口,必不可少的就是requests,所以事先要在python中安装requests 一.使用pip install安装(项目的命令行终端使用) 1.配置下载源地址路径(清 ...
- 配置elementuI菜单
:unique-opened="true" 只保留一个菜单 :router="true"开启路由标识 index="users" 是标识 它 ...
- python中,Microsoft Visual C++ 14.0 or greater is required问题解决方案
今天在写一个小程序,安装依赖的时候发现这个问题,平时都是直接安装Visual Studio解决,但是这个安装太大了,所以解决看看怎么安装是最方便的,最容易解决的. 下面这个就是出现的问题: build ...
- IConfigurationSectionHandler 接口的用法
今天终于花了点时间了解一下IConfigurationSectionHandler 接口的用法 ,引以入门.首先建立一 RobsunConfigSectionHandler 专案,代码如下 : nam ...
- 8.5 CheckRemoteDebuggerPresent
CheckRemoteDebuggerPresent 也是一个微软提供的反调试函数,该函数可以在本地或者远程进程中使用.函数接收两个参数进程句柄和一个指向布尔值的指针.如果指定的进程正在被调试,则函数 ...
- Gin 获取请求参数
1.获取URL?后的参数(不区分请求方式) // 获取请求url ? 后的参数(url:8080/add?name=kelvin) func GetUrlParam(ctx *gin.Context) ...
- php获取服务器操作系统等信息
php获取服务器操作系统等信息 获取请求页面时通信协议的名称和版本: $_SERVER['SERVER_PROTOCOL'] 例如,"HTTP/1.0". PHP程式版本:< ...
- ABC311_g One More Grid Task 题解
题目链接:Atcoder 或者 洛谷 对于解决二维区间内的最值类型问题,我们常常有一类特别好用的方法,就是悬线法,它可以看做是单调栈的子集,但更加好理解和书写. 对于悬线法,我们有一个常见的模型,找出 ...
- 基于OpenEuler的信创国产瘦客户机软件系统 DoraOS
DoraOS是一款瘦客户机系统软件,最新版本基于OpenEuler开发.可以将主机转化为专业的瘦客户机.目前支持x86架构的硬件. 软件下载地址为: https://www.doracloud.cn/ ...