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使用小实验相关推荐

  1. 使用Azure Blob Storage实现一个静态文件服务器

    什么是Azure Blob Storage Azure Blob Storage是微软Azure的对象存储服务.国内的云一般叫OSS,是一种用来存储非结构化数据的服务,比如音频,视频,图片,文本等等. ...

  2. Azure Table storage 基本用法 -- Azure Storage 之 Table

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table,其中的 Table 就是本文的主角 Azure Tabl ...

  3. Azure Blob Storage 基本用法 -- Azure Storage 之 Blob

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Table storage ...

  4. Python 操作 Azure Blob Storage

    安装 Azure Storage SDK for Python 最简单的方式是在安装了 python 和 pip 的机器上直接执行下面的命令: pip install azure-storage 安装 ...

  5. Azure File Storage 基本用法 -- Azure Storage 之 File

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Blob Storage 基 ...

  6. .NET Core 批量重置 Azure Blob Storage 的 mime type

    点击上方蓝字关注"汪宇杰博客" 我的博客使用 Azure Blob Storage 存储文章配图,结果今天玩 Azure CDN 的时候爆了,原因是图片mime type不对.我们 ...

  7. Azure Blob Storage 基本用法上传/下载(Java)

    文章目录 简单概念 Blob Storage Azure Blob Storage的存储结构 Azure Storage Account Container Blob 操作 Maven依赖 创建Con ...

  8. Azure China (11) 使用Azure China Storage Public Blob

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China 注意:本文介绍的是Azure China Storage Publi ...

  9. 利用Windows Azure Queue Storage给AutoCAD传递对象

    前面峻祁连在文章使用Amazon Simple Queues Service (SQS)实现与AutoCAD远程交互中介绍了使用亚马逊的简单队列服务(SQS),这里在介绍一下使用微软的Windows ...

最新文章

  1. 探索JAVA并发 - 悲观锁和乐观锁
  2. 树状数组c语言模板,【树状数组】Cows (POJ2481) PASCAL 解题报告
  3. SELinux让php程序无法远程连接数据库
  4. Android开发之WebView加载HTML源码包含转义字符实现富文本显示的方法
  5. VS2013配置pro*C/C++开发环境
  6. 理解 shared_ptr实现copy-on-write(COW)
  7. 终于知道以后该咋办了!
  8. 华为鸿蒙新机价格表,华为Mate30已确认:鸿蒙系统+巴龙5000,售价感人
  9. 力扣-图解算法数据结构-剑指 Offer 05. 替换空格
  10. ★大脑的9大未解之谜
  11. 无线网络安全技术基础
  12. 【转】单循环赛赛程安排算法研究
  13. Unity UGUI源码解析
  14. 【Matlab】imcrop的用法
  15. Python学习思维导图
  16. 解决:pywintypes.com_error: -2147221021, ‘操作无法使用’及-2146959355, ‘服务器运行失败‘问题
  17. 笔记本电脑的鼠标触控面板问题
  18. Powder Designer同时显示中文英文名
  19. python教程104-Python通过邮箱群发工资条
  20. 第四章 机器人控制方法

热门文章

  1. 机器学习实战(十)——利用K-均值聚类算法对未标注数据分组
  2. 股票策略 —— 指数择时 + 因子选股2
  3. 跨平台应用开发进阶(二十五) :uni-app实现IOS云打包解决IOS提交审核相册等隐私描述语导致审核失败问题
  4. 离婚数据可视化,经济越发达的地区离婚率越高,但为何天津离婚率最高?
  5. 上古卷轴5java8_【图片】【上古卷轴5】【无心】个人整合版8.0【霜刃伤情吧】_百度贴吧...
  6. 幼儿园管理之“三贴近”
  7. TIMO后台管理系统crud
  8. c语言中姓名查找的原理,搜索 C/C++ 函数调用原理
  9. 计算机组成原理——作业四
  10. 卧槽!java常用线程安全类