如何撤消Azure SDK中的共享访问签名

时间:2014-10-05 20:39:09

标签: azure azure-storage azure-storage-blobs

我找不到任何用于撤消blob上创建的共享访问签名访问的代码示例,任何人都可以提供链接或引用来删除之前创建的共享访问签名访问权。

4 个答案:

答案 0 :(得分:5)

除非基于存储的访问策略,否则无法撤消共享访问签名。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/azure/dn140257.aspx

  

要撤消存储的访问策略,您可以删除它,也可以重命名   它通过更改签名的标识符。更改签名的标识符   打破任何现有签名和存储的签名之间的关联   访问政策。删除或重命名存储的访问策略   立即影响关联的所有共享访问签名   用它。

答案 1 :(得分:1)

即使共享访问签名(SAS)基于存储的访问策略(SAP),您也只能撤消SAP,而不能撤消单个SAS。

Azure Storage安全指南具有详细信息: https://docs.microsoft.com/en-us/azure/storage/common/storage-security-guide#revocation

不基于SAP的SAS-无法撤消:

  

如果使用临时URI,则有三个选项。您可以使用短有效期策略发行SAS令牌,并等待SAS过期。您可以重命名或删除资源(假设令牌的作用域为单个对象)。您可以更改存储帐户密钥。最后一个选项可能会产生重大影响,具体取决于正在使用该存储帐户的服务数量,如果没有任何计划,您可能就不想这样做。

基于SAP的SAS-可以通过吊销SAP吊销:

  

如果您使用的是从“存储访问策略”派生的SAS,则可以通过撤消“存储访问策略”来删除访问权限–您可以更改它以使其已过期,或者可以完全删除它。这将立即生效,并使使用该存储访问策略创建的每个SAS无效。 更新或删除存储访问策略可能会影响人们通过SAS访问特定的容器,文件共享,表或队列,但是如果编写了客户端,则当旧客户端无效时,他们会请求新的SAS ,就可以正常工作。

最佳做法:

  

由于使用从存储访问策略派生的SAS,您可以立即撤销该SAS,因此建议的最佳做法是始终使用存储访问策略。

答案 2 :(得分:0)

我遇到了同样的问题,这就是我解决的方法:

SAS uri revoke

精简服务与Azure Blob存储之间的通信是通过SDK v8.0完成的。

答案 3 :(得分:0)

上下文

  • MSFT Azure存储帐户(自2019年11月26日起生效)
  • 由共享访问签名(SAS)管理的MSFT Azure存储权限

问题

  • 用户user145610想要立即撤销已部署的SAS
    • (例如,因为SAS允许对Blob存储进行身份验证,并且SAS已受到威胁,需要立即进行补救以防止未经授权的数据泄露)

解决方法

  • 此话题中已经出现了其他答案,讨论了共享访问策略(又名存储访问策略)(SAP)的使用
  • 基于SAP生成的SAS有局限性,最值得一提的是可以附加到存储帐户的SAP数量有限。

重新生成帐户密钥

  • (在此发布时)此线程中未出现的一种解决方法是能够重新生成最初用于创建SAS的帐户密钥的能力,如此答案的另请参见链接中所述。 。
      

    重新生成帐户密钥将导致使用该密钥的所有应用程序组件都无法授权,直到它们被更新为使用其他有效帐户密钥或新生成的帐户密钥为止。重新生成帐户密钥是立即撤销临时SAS的唯一方法。

  • 因此,一种潜在的解决方法是根据辅助帐户密钥生成和部署SAS,并期望您在需要立即撤销一个或多个SAS时定期例行重新生成辅助帐户密钥。
    • (显然,部署许多SAS令牌并依赖于辅助帐户密钥的情况并不理想,因为在重新生成密钥后,它们会全部变为无效)

解决方案

  • 无法部署大量SAP,再加上必须重新生成帐户密钥的潜在不利影响,这表明潜在的解决方案是重新设计项目的体系结构以使用ActiveDirectory来控制授权和访问控制以及SAS令牌的生成。
  • 基于SAP的SAS可能更适合于只有少数客户端需要访问并且SAS受到损害的可能性极低的情况。
  • 在撰写本文时,MSFT Azure存储支持基于ActiveDirectory帐户的SAS令牌的生成和使用。

另请参见