我参与构建一项服务,其中包括必须通过azure blob将文件访问权限分发给客户端。客户端应该能够请求对文件进行写锁定,这意味着在一段指定的时间内,只有一个客户端可以写入blob。
我的问题是如何实现这种锁定机制。目前我的解决方案是通过共享访问签名为客户端提供访问权限,该服务确保每次只有一个对每个blob具有写访问权限的共享访问权处于活动状态。
这种方法的问题是我希望撤销访问权限。如果客户端在共享访问过期之前完成了其写入操作,我希望能够撤销签名,以便我可以向其他人授予写入权限。通过使用容器级策略,我只能撤销使用该策略对所有签名的访问权限,但我的目的是撤销对单个blob上的签名的访问权。
所以我的问题是:是否有一些方法可以撤销单个blob上某个特定共享访问签名的访问权限?如果没有,有没有其他方法来实现我在Azure中描述的那种功能?
谢谢。
答案 0 :(得分:3)
附加了共享访问签名授予的权限 用于创建签名的帐户密钥,以及关联的 存储的访问策略(如果有)。如果没有存储的访问策略 指定,撤销共享访问签名的唯一方法是 更改帐户密钥。
此外:
此外,共享访问签名URL可以引用存储的 访问策略,提供对集合的附加级别的控制 签名,包括修改或撤销访问权限的能力 资源,如有必要。有关资源级访问的更多信息 策略,请参阅使用存储的访问策略。
因此,如果要控制撤消,请使用预定义的存储访问策略。或者创造短暂的生活SAS的
顺便说一句,执行锁定称为Blob Lease。请查看leasing blobs上的此博客文章并锁定。