需求,Storage Account中的数据,如果有人访问,要求记录下是谁访问的。

 

方案:

1. 为Storage Account 开启诊断设置:

截止2021-08-30,该功能为Preview的功能。

 

配置将Storage Read/Write/Delete 日志记录到其他的 Storage Account中:

 

测试:

在Azure Portal中 上传/下载/读取BLOB,观察 monitorlogseandatalake中记录的日志:

注意:默认采用的是Access Key的方式

 

进入到Monitor Storage Account中,可以看到如下图的日志:

 

将Log下载到本地,解析其中的值即可得到一些信息:

李如下图中,显示了下载的URL,下载的浏览器类型,操作系统类型,IP地址等。

 

 

详细的字段解析,可参考:https://docs.microsoft.com/zh-cn/azure/storage/blobs/monitor-blob-storage-reference?WT.mc_id=AZ-MVP-5003757#resource-logs-preview

 

如下图所示:

 

文档中同样描述了是 谁 访问了数据:

具体的字段解释如下:

但在我们实际的测试中,如果使用Access Key方式访问BLOB,日志中的 identity tpye为“SAS” 并不能很容易的看出是谁在访问我们的数据。

 

 

2. 使用Azure AD User Account方式认证

 

因此,我们尝试将Authentication method 改为 Azure AD User Account方式,再次上传文件,然后观察日志:

 

上传文件:

 

再次观察日志:

UPN中明确显示了是哪个Azure AD 用户进行了文件上传操作:

 

基本的功能有了,但仍然存在一些问题,比如,默认情况下,用户可以自行修改 使用哪种方式进行身份验证:

一旦用户自行将验证方式改为 Access Key,则日志里就不会出现 upn字段,也不能知道是哪个用户进行的操作。

3. 为每一个要使用Storage的用户创建账号,然后配置权限如下:

 

使用该用户访问Storage Account,可以看到默认就是使用Azure AD 进行了身份验证:

 

尝试修改自己为 访问密钥方式:

 

同时SAS共享访问签名页面也不能正常获取SAS:

 

访问密钥页面用户页无法修改:

 

可以在Azure Poratal 中上传,读取,删除文件,观察结果,也可以在Storage Explorer工具中使用订阅方式登录后,上传,读取,删除文件测试:

结果如下:

 

 

 

 

与本文相关的文档:

从Azure AD获取用于从客户端应用程序授权请求的令牌

https://docs.microsoft.com/zh-cn/azure/storage/common/storage-auth-aad-app?toc=/azure/storage/blobs/toc.json

分配Azure 角色以访问blob数据:

https://docs.microsoft.com/zh-cn/azure/storage/blobs/assign-azure-role-data-access

使用Azure AD运行Power Shell或Azure CLI以访问blob数据:

https://docs.microsoft.com/zh-cn/azure/storage/blobs/authorize-data-operations-powershell

 

 

关于在Azure门户中访问Azure Storage,优先使用的方式是:

使用帐户访问密钥

若要使用帐户访问密钥访问 blob 数据,你必须已分配到一个 Azure 角色,此角色包含 Azure RBAC 操作 Microsoft.Storage/storageAccounts/listkeys/action。 此 Azure 角色可以是内置角色,也可以是自定义角色。 支持“Microsoft.Storage/storageAccounts/listkeys/action”的内置角色(按权限从小到大排序)包括:

尝试在 Azure 门户中访问 Blob 数据时,门户首先会检查你是否拥有一个包含 Microsoft.Storage/storageAccounts/listkeys/action 的角色。 如果你被分配了包含此操作的角色,则门户将使用帐户密钥来访问 blob 数据。 如果你不拥有包含此操作的角色,则门户会尝试使用你的 Azure AD 帐户访问数据。

相关文档:https://docs.microsoft.com/zh-cn/azure/storage/blobs/authorize-data-operations-portal