Azure Lei Zhang的博客

weibo: LeiZhang的微博/QQ: 185165016/QQ群:319036205/邮箱:leizhang1984@outlook.com/TeL:139-161-22926

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  《Windows Azure Platform 系列文章目录

 

  我们在使用Azure Storage的时候,经常会基于属性来进行访问控制,我们假设一个场景1:

  (1)用户:productionuser01可以访问到container以production开头的文件内容,如

  • contoso.blob.core.windows.net/production01
  • contoso.blob.core.windows.net/production02
  • contoso.blob.core.windows.net/production03

 

  或者再举一个场景2:

  (1)用户:productonuser01可以访问到的存储账户名称,必须是标签(tag)为production

  (2)用户:staginguser01可以可以放到的存储账户名称,必须是标签(tag)为staging

 

  请注意:

  (1)Azure ABAC是通过添加条件,来细化角色分配的

  (2)这个条件可以是一个具体的值,比如上面的场景2 (tag等于production)

  (3)这个条件也可以是一个范围,比如上面的场景1 (container名字以production开头)

 

  而笔者之前介绍的文章:

  Azure Storage (28) Azure Data Lake Storage Gen 2实现posix功能

  posix是具体的访问权限,比如对特定目录或者文件进行写入或者读取访问,posix不是根据条件范围来控制的

 

  这里我们假设一个场景:

  (1)我们新建1个存储账户,并新建1个Service Principal

  (2)针对存储账户的container名字为container01,分配给Service Principal,具有读写权限

  (3)针对存储账户的container名字为container02,分配为Service Principal,具有只读权限

 

  1.首先新建一个存储账户,名称为leizhangstorage00,步骤略

  2.在这个存储账户下,新建2个container,分别为container01和container02,步骤略

  3.选中这个存储账户leizhangstorage00,点击IAM,Add Role Assignment。如下图:

   

 

  4.搜索storage blob data contributor

  

 

  5.在members里,搜索之前创建的Service Principal,步骤略

  6.在Conditions里,点击下图的Add condition

  

 

  7.在condition 1里,点击下图的add action,选中所有Action

  

  8.在condition 1里,点击+Add expression

  (1)Attribute source,选择resource

  (2)Attribute,选择Container name

  (3)Operator,选择StringEquals。这里的StringEquals表示等于(=)

  (4)Value输入container01

  

 

  上面的表达式的意思是,在条件1(condition 1)里:针对container name等于container01,执行完整的权限(增、删、改、查)

  在上面的operator里,有多种条件。如下图:

  StringStartsWith就是以字符串开始,作为查询条件

  

 

 

 

  9.然后我们增加第二个条件,我们点击下图的Add condition。点击完毕后,会出现Condition 2

  

  

  10.我们在Condition 2里,我们点击Add Condition

  

  

  11.在condition 2里,点击+Add expression

  (1)Attribute source,选择resource

  (2)Attribute,选择Container name

  (3)Operator,选择StringEquals

  (4)Value输入container02

  

  

  12.最后我们选择Review+Assign,分配该权限。截图略。

  13.我们以AzCopy作为演示工具,具体下载地址:https://learn.microsoft.com/zh-cn/azure/storage/common/storage-use-azcopy-v10?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#download-azcopy

 

  14.打开AzCopy,设置环境变量

#设置环境变量
#下面这个是默认值
 export AZCOPY_AUTO_LOGIN_TYPE="SPN"
 #这个是租户id,请根据nio的环境进行修改
 export AZCOPY_TENANT_ID="   "
 #这个是app id,
 export AZCOPY_SPA_APPLICATION_ID="   "
 #这个是app key,
 export AZCOPY_SPA_CLIENT_SECRET="   "

 

  15.我们先查看本地测试环境,包含的文件信息

  

  

  16.针对container01,进行上传操作

./azcopy copy  '/root/datadisk/*.txt' 'https://leizhangstorage00.blob.core.windows.net/container01' --recursive

  结果为执行成功

  

 

 

  17.我们再针对container02,做上传操作

./azcopy copy  '/root/datadisk/*.txt' 'https://leizhangstorage00.blob.core.windows.net/container02' --recursive

 

  可以查看到403错误,权限不足

  

 

posted on 2024-04-28 12:03  Lei Zhang的博客  阅读(17)  评论(0编辑  收藏  举报