Azure storage 的访问通常最常用的三种形式:

1.使用访问密钥 Access Key

Access Key默认有两个,任何程序拿到访问密钥或和storage account的名称,即可拼装出 连接字符串,从而访问storage account的数据。

这种密钥的方式,对于storage account的访问只有 ”可以访问“ 和 “不可以访问” 两种结果,除此不能进行更精确的控制,就像钥匙开锁,要么打开,要么打不开(key不正确)。

 

 

2. 使用 共享访问签名 shared access signature(SAS)

共享访问签名相比于 access key的方式,多了一些限制条件,例如可以控制 “读数据”还是“写数据”,也可以设定访问有效期,还可以设定客户端的IP地址。

 

共享访问签名的模式又分为用户委托SAS和服务委托SAS,具体参考:

https://docs.microsoft.com/zh-cn/azure/storage/blobs/storage-blob-user-delegation-sas-create-cli?WT.mc_id=AZ-MVP-5003757

 

 

3. 使用 AAD 和RBAC

Azure Active Directory (Azure AD) 通过 Azure 基于角色的访问控制 (Azure RBAC) 授予对受保护资源的访问权限。

将 Azure 角色分配到 Azure AD 安全主体后(用户,组,应用程序都可以),Azure 会向该安全主体授予对这些资源的访问权限。

通常在应用程序中,使用服务主体的方式访问 存储账户,关于服务主体,一般需要

  • 在AAD中创建应用
  • 配置应用的认证方式(证书或key)
  • 配置应用的 角色

通过Azure 门户创建一个服务主体的方式请参考:

https://docs.microsoft.com/zh-cn/azure/active-directory/develop/howto-create-service-principal-portal?WT.mc_id=AZ-MVP-5003757

 

 

通过AAD访问storage account 实际上是通过获取OAuth 2.0 访问令牌后,才可以访问stoage account,但通常这个过程可以使用Azure SDK简化,

关于AAD 和RBAC 访问 storage Account的 详细文章,请参考:

https://docs.microsoft.com/zh-cn/azure/storage/common/identity-library-acquire-token?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&WT.mc_id=AZ-MVP-5003757

 

 

 


在Azure 门户 上使用Storage account数据也会有两种 方式,分别为 访问密钥 和 AAD 的方式:

如下图,可以设置 切换成 aad 方式还是切换成 access key 方式。

关于门户中的两种方式,需要的权限也不尽相同,请参考官网:

https://docs.microsoft.com/zh-cn/azure/storage/blobs/authorize-data-operations-portal?WT.mc_id=AZ-MVP-5003757