[Azure]Azure Storage Access Policy使用小实验

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qwertyupoiuytr/article/details/79461812
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了),报错如下:


猜你喜欢

转载自blog.csdn.net/qwertyupoiuytr/article/details/79461812