本文主要看两者的共同与不同之处,以及一些基本的使用场景。
自然不用说两者都是为访问Azure的存储账户而存在的
先来看SAS,SAS主要定义了访问的规则:
比如访问什么?
什么权限?
什么时间?–访问多久
什么IP?
是否加密?
可以看一下生成的访问令牌:
https://csdnstorage.blob.core.windows.net/?sv=2019-02-02&ss=bfqt&srt=sco&sp=rwdlacup&se=2020-01-01T09:31:38Z&st=2020-01-01T01:31:38Z&spr=https&sig=X%2FVxoYyZgnVn5IzP8v0xA7UKskt6nPdOeW%2BAyYWZnrE%3D
加粗的地方都是参数,具体代表什么意思有些可能一看就明白了,但是每个参数的意思都可以在文档中查到–https://docs.microsoft.com/en-us/rest/api/storageservices/create-account-sas
比如sig就是signture签名,这里一些细节的会在后面的博文中来阐述。
而访问密匙本身就只有那么两个密匙,key1和key2,一个主密匙一个副密匙。
任何人拿到不管是访问密匙还是SAS令牌,都是可以访问资源的,只不过SAS定义的项目较多,也许对方只能访问你的Blob,但是访问密匙一旦拿到就等于对整个存储账户有了所有权限。
所以也是建议
1.首先生成访问令牌的时候永远选择https
2.另外对整个存储账户,在资源级别设置BRAC,控制可以访问这个存储账户的权限
3.其次使用用户委托的SAS,也就是利用你Azure AD里的账户而原始的SAS令牌。