首页 > 其他分享 >Azure Storage (30) 基于属性的访问控制(ABAC)

Azure Storage (30) 基于属性的访问控制(ABAC)

时间:2024-04-28 12:11:48浏览次数:25  
标签:ABAC container 30 Storage Add blob Azure condition container01

  《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错误,权限不足

  

 

标签:ABAC,container,30,Storage,Add,blob,Azure,condition,container01
From: https://www.cnblogs.com/threestone/p/18163213

相关文章

  • VS和jetbrains比较容易忘记的几个快捷键(更新至20230428)
    //PS:这几个是我经常忘记的,记录一下,//         暂时只记录用到的,其他的用到后再去补充添加,后面会陆续补充。 VS2022Ctrl+T :在所有代码里面搜索的快捷键,(不是Ctrl+Q)快速搜索并定位文件名称的快捷:在当前文件快速搜索函数名称的快捷键: JetBrains在所有......
  • 利用python将沪深300股票历史数据存储在sqlite3
    一、环境准备1、python3中自带了sqlite3参考https://www.runoob.com/sqlite/sqlite-tutorial.html2、在sqlite中建表CREATETABLE[stock]([id]NVARCHAR(48),[name]NVARCHAR(24), [code]NVARCHAR(24),[date]INTEGERNOTNULL,[open]REAL,[close]......
  • sql语句优化的30种方法
    作者:羋虹光链接:https://www.jianshu.com/p/3ab117c83d0b1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2.应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3.应尽量避免在where子句中对字段进......
  • 20230330 专项训练 4
    Tajan/序列问题专项save原题链接煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援......
  • cf 393017C 石头剪刀布 Metacamp2022-onlineA-dev
     Problem-C-Codeforces 五维的DPg[i][D][r][s][p]i:到了第i个位置D:最后有D个点放在后面r,s,p:已经选择了r,s,p个石头,剪刀,布放到后面 四维的DPf[i][D][r][s][p]i:到了第i个位置D:目前有D个点放在后面r,s,p:已经选择了r,s,p个石头,剪刀,布放到后面其......
  • JZ30 包含min函数的栈
    classSolution{public://用于栈的push与popstack<int>s1;//用于存储最小值minstack<int>s2;//将元素入栈voidpush(intvalue){s1.push(value);//空元素或者元素较小,则入栈if(s2.empty()||s2.top()>va......
  • qoj3082 Ascending Matrix 题解
    题目链接点击打开链接题目解法不考虑第\(a_{r,c}=v\)的限制怎么求?我们把条件形式化一下,发现\(k\)个区域的颜色可以表示成轮廓线的形式,即第\(i-1\)条到第\(i\)条轮廓线之间的格点颜色为\(i\)问题变成找到\(k-1\)条互不穿过的路径,起点为\((1,m)\),终点为\((n,1)\)......
  • [Place 30-575]VIVADO 布局布线bug
     开始怀疑是约束文件有问题,把输入引脚的位置错误约束了,但是并没有,DDR的输入时钟也是用的bank33,电平、引脚约束也没错(AlinxAX7325B开发板) 尝试按照建议添加set_propertyCLOCK_DEDICATED_ROUTEBACKBONE,但是imple仍然报该错误,并且综合提示setproperty为空? 原代码中ddr参......
  • 为什么自动驾驶领域发论文都是用强化学习算法,但是实际公司里却没有一家使用强化学习算
    为什么自动驾驶领域发论文都是用强化学习算法,但是实际公司里却没有一家使用强化学习算法?——(特斯拉今年年初宣布推出实际上第一款纯端到端的自动驾驶系统,全部使用强化算法,替换掉原有的30万行C++的rule-based代码)给出一个自己比较认可的答案:https://www.zhihu.com/question/54......
  • 汽车诊断仪算法保护芯片——LKT4305-GM
    各类车载设备在车辆上的广泛应用,为分析道路交通事故原因和真相、界定道路交通事故性质和厘清事故责任提供基础数据,汽车诊断仪内的数据安全通过特定功能的安全芯片来建立,这里推荐款芯片——LKT4305-GM。LKT4305-GM是以32位安全处理器为基础的具有高性能高安全性的加密产品。芯片满......