这次来谈的主要是关于azure storage授权的一些话题,如果想要让用户或者应用拿到授权来访问storage的话有很多种方法,每种方法针对的场景也不尽相同,总的来说有这么几种

  1. Shared Key - 最简单粗暴的方法,相当于把密码直接给你

  2. SAS - 作为应用或者脚本来说比较合适的方法,可以自由控制权限的发送和收回,也可以控制授权的范围

  3. Azure AD - 用Azure AD的账号来授权,比较折中,也好管理

详细的介绍可以看看微软的官方网站

https://docs.microsoft.com/en-us/azure/storage/common/storage-auth?toc=/azure/storage/blobs/toc.json?WT.mc_id=AZ-MVP-5001235

Azure AD其实是之后才出现的授权方式,在这之前SAS算是最常用的授权方法了,在实际环境很少会推荐直接把storage key分享出去,因为权限太大了,一旦泄露也不可控

而SAS实际上现在也分很多种,有兴趣的可以看看官网

https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview?toc=/azure/storage/blobs/toc.json?WT.mc_id=AZ-MVP-5001235

以前用的最常见的方式其实是ad-hoc SAS,算是那种特定的场景吧,除了这种方式之外,其实还有一种生成SAS的方式是通过access policy来做

这种方式相比于ad-hoc有一些优势,比如说可以自由控制访问策略,而不需要重新生成Token,用户拿到的URI也不需要有变化,还可以由管理员统一管理SAS的策略,相比较零散的AD HOC SAS,更适合企业使用

生成的方法也很简单,不比ad-hoc复杂多少

首先在container里可以找到access policy这个选项,直接添加即可,可以看到这个界面和生成SAS的时候有一些类似,也是配置权限和起始结束的时间

图片1.png


确定之后就生成好了

图片2.png

但是光这样其实并不算生成了SAS,接下来的操作需要在storage explorer里进行

在storage explorer里获取共享访问签名的时候可以选择access policy

图片3.png

选择之后,会发现时间和权限都是access policy定义好的,没办法修改

点击创建后,会生成URI

图片4.png

在URI里添加想要访问的文件名,即可直接访问文件

https://mxyarmtemplate.blob.core.windows.net/template/Linuxvmdeploy.json?sv=2019-12-12&si=testpolicy&sr=c&sig=yWhdJBjO5tsO2%2FnmQ9o2AoLaEGiIPFvpoUfZoF9h4qo%3D

图片5.png




尝试修改access policy,把有效时间改成一个过去的时间,也就是说让这个access policy失效

图片6.png


等一段时间之后会发现之前的链接没办法访问了,在这个过程中你的URI是不需要有任何修改的,因为URI里本身也不包含起始和结束时间,这点比ad-hoc SAS要好多了,如果还想继续访问的话,还可以再修改access policy

图片7.png