[Azure]Azure Storage Access Policy使用小实验
Azure Storage的Container除了可以设置Public Access Level之外:
还可以定义一些Stored Access Policy:
Stored Access Policy是属于单个容器的,不同容器之间的Stored Access Policy是互相独立的。
Stored Access Policy可以用于生成SAS Token(Shared Access Signature),用于提供临时的权限用于访问容器以及Blob/Table/Queue等资源。
创建一个Access Policy的步骤:
创建的Policy包含了名称,权限(读/写/删除/列出)以及有效的起止时间。
我们使用Azure Powershell来使用创建的Policy生成SAS Token,创建的SAS Token有两个级别,可以针对Blob和Container两个级别来创建,命令分别:
$storage = Get-AzureRmStorageAccount -ResourceGroupName <resource group name> -Name <storage account name>;
$containerSAS = New-AzureStorageContainerSASToken -Name <container name> -Policy <stored access policy name> -Context $storage.Context;
$blobSAS = New-AzureStorageBlobSASToken -Container <container name> -Blob <blob file name> -Policy <stored access policy name> -Context $storage.Context;
经过测试发现,针对容器生成的SAS的权限可以传递给容器(即如果用Container的只读权限去读这个container下面的blob文件也是可以的)。
我们用一个container和blob做一个测试,首先在container下面创建3个测试的Access Policy:
分别生成3个container的SAS token:
$storage = Get-AzureRmStorageAccount -ResourceGroupName DanNorthResourceGroup1 -Name dannorthstorage;
$listContainerSAS = New-AzureStorageContainerSASToken -Name "vhds" -Policy "ListOnly" -Context $storage.Context;
$writeContainerSAS = New-AzureStorageContainerSASToken -Name "vhds" -Policy "WriteOnly" -Context $storage.Context;
$readContainerSAS = New-AzureStorageContainerSASToken -Name "vhds" -Policy "ReadOnly" -Context $storage.Context;
创建完成后,直接从变量读取得到对应的SAS token的参数:
接着我们找一个这个容器下的vhd文件做一个测试,分别用上面三个SAS token给vhd的URL加上后缀访问:
https://dannorthstorage.blob.core.chinacloudapi.cn/vhds/Dan08R220171205141559.vhd?sv=2015-04-05&sr=c&si=ListOnly&sig=01%2FbNnqS24rd6GiqTlTpAO9F%2FbwbWEaJAiuizBp6Cvo%3D
https://dannorthstorage.blob.core.chinacloudapi.cn/vhds/Dan08R220171205141559.vhd?sv=2015-04-05&sr=c&si=WriteOnly&sig=UKbePMXiIrcOf9EumqjhIvBSb%2FbS6nVJc8eyupm0VLo%3D
https://dannorthstorage.blob.core.chinacloudapi.cn/vhds/Dan08R220171205141559.vhd?sv=2015-04-05&sr=c&si=ReadOnly&sig=sKc%2BsFawR4sAW2fmGYWZ8S2hCqXLtzoCK7xUeG55PNk%3D
分别会得到下面3个结果:
1:This request is not authorized to perform this operation using this permission. RequestId:ea55a2dc-701e-0021-0e30-b5894b000000 Time:2018-03-06T09:50:18.5016341Z
2:This request is not authorized to perform this operation using this permission. RequestId:ea55f29b-701e-0021-4630-b5894b000000 Time:2018-03-06T09:51:17.9756099Z
3:成功下载vhd文件
我们再测试一个场景,我们给这个vhd文件生成一个blob级别的SAS token:
$blobSAS = New-AzureStorageBlobSASToken -Container vhds -Blob Dan08R220171205141559.vhd -Policy ReadOnly -Context $storage.Context;
然后,用这个SAS token访问另一个container下面的同名blob文件(这里一定要保证能找到这个vhd文件,不然就404了),报错如下:
[Azure]Azure Storage Access Policy使用小实验相关推荐
- 使用Azure Blob Storage实现一个静态文件服务器
什么是Azure Blob Storage Azure Blob Storage是微软Azure的对象存储服务.国内的云一般叫OSS,是一种用来存储非结构化数据的服务,比如音频,视频,图片,文本等等. ...
- Azure Table storage 基本用法 -- Azure Storage 之 Table
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table,其中的 Table 就是本文的主角 Azure Tabl ...
- Azure Blob Storage 基本用法 -- Azure Storage 之 Blob
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Table storage ...
- Python 操作 Azure Blob Storage
安装 Azure Storage SDK for Python 最简单的方式是在安装了 python 和 pip 的机器上直接执行下面的命令: pip install azure-storage 安装 ...
- Azure File Storage 基本用法 -- Azure Storage 之 File
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Blob Storage 基 ...
- .NET Core 批量重置 Azure Blob Storage 的 mime type
点击上方蓝字关注"汪宇杰博客" 我的博客使用 Azure Blob Storage 存储文章配图,结果今天玩 Azure CDN 的时候爆了,原因是图片mime type不对.我们 ...
- Azure Blob Storage 基本用法上传/下载(Java)
文章目录 简单概念 Blob Storage Azure Blob Storage的存储结构 Azure Storage Account Container Blob 操作 Maven依赖 创建Con ...
- Azure China (11) 使用Azure China Storage Public Blob
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China 注意:本文介绍的是Azure China Storage Publi ...
- 利用Windows Azure Queue Storage给AutoCAD传递对象
前面峻祁连在文章使用Amazon Simple Queues Service (SQS)实现与AutoCAD远程交互中介绍了使用亚马逊的简单队列服务(SQS),这里在介绍一下使用微软的Windows ...
最新文章
- 探索JAVA并发 - 悲观锁和乐观锁
- 树状数组c语言模板,【树状数组】Cows (POJ2481) PASCAL 解题报告
- SELinux让php程序无法远程连接数据库
- Android开发之WebView加载HTML源码包含转义字符实现富文本显示的方法
- VS2013配置pro*C/C++开发环境
- 理解 shared_ptr实现copy-on-write(COW)
- 终于知道以后该咋办了!
- 华为鸿蒙新机价格表,华为Mate30已确认:鸿蒙系统+巴龙5000,售价感人
- 力扣-图解算法数据结构-剑指 Offer 05. 替换空格
- ★大脑的9大未解之谜
- 无线网络安全技术基础
- 【转】单循环赛赛程安排算法研究
- Unity UGUI源码解析
- 【Matlab】imcrop的用法
- Python学习思维导图
- 解决:pywintypes.com_error: -2147221021, ‘操作无法使用’及-2146959355, ‘服务器运行失败‘问题
- 笔记本电脑的鼠标触控面板问题
- Powder Designer同时显示中文英文名
- python教程104-Python通过邮箱群发工资条
- 第四章 机器人控制方法
热门文章
- 机器学习实战(十)——利用K-均值聚类算法对未标注数据分组
- 股票策略 —— 指数择时 + 因子选股2
- 跨平台应用开发进阶(二十五) :uni-app实现IOS云打包解决IOS提交审核相册等隐私描述语导致审核失败问题
- 离婚数据可视化,经济越发达的地区离婚率越高,但为何天津离婚率最高?
- 上古卷轴5java8_【图片】【上古卷轴5】【无心】个人整合版8.0【霜刃伤情吧】_百度贴吧...
- 幼儿园管理之“三贴近”
- TIMO后台管理系统crud
- c语言中姓名查找的原理,搜索 C/C++ 函数调用原理
- 计算机组成原理——作业四
- 卧槽!java常用线程安全类