当前位置: 首页 > Microsoft Azure > 正文

Azure Administrator认证学习指南之使用共享访问签名 (SAS) 实现对 Azure 存储资源的控制访问-18

共享访问签名 (SAS) ,提供对存储帐户中的资源的安全委派访问权限, 而不会影响数据的安全性。使用SAS, 可以精细地控制客户端访问数据的方式。您可以控制客户端可以访问的资源、这些资源对这些资源拥有的权限, 以及SAS在其他参数中的有效时间。

现阶段,Microsoft Azure存储主要支持三种类型的共享访问签名:

  • 用户委托SAS (预览版)。用户委托SAS使用Azure Active Directory (Azure AD) 凭据以及为SAS指定的权限进行保护。用户委托SAS仅适用于Blob存储。 若要创建用户委托SAS, 必须首先请求用于对SAS进行签名的用户委托密钥.
  • 服务SAS。使用存储帐户密钥保护服务SAS。服务SAS仅委托其中一个 Azure存储服务中的资源的访问权限:Blob存储、队列存储、表存储或Azure 文件。
  • 帐户SAS。帐户 SAS使用存储帐户密钥进行保护。帐户 SAS可委派对一个或多个存储服务中的资源的访问权限。 通过服务或用户委托SAS提供的所有操作也可以通过帐户SAS 提供。此外, 使用帐户SAS, 你可以委派对服务级别应用的操作的访问权限, 例如获取/设置服务属性和获取服务统计操作。 还可以委派对blob容器、表、队列和文件共享执行读取、写入和删除操作的访问权限,而这是服务SAS所不允许的。

通过和微软Azure团队技术人员沟通了解到建议尽可能使用 Azure AD 身份验证机制作为最佳安全方案, 而不是使用帐户密钥。当应用程序设计要求使用共享访问签名来访问 Blob 存储时, 请使用 Azure AD 身份验证机制创建用户委托 SAS (如果可能) 以实现高级安全性。

共享访问签名可以采取以下两种形式的一种:

  • 临时SAS:当你创建一个即席SAS时, 该SAS的开始时间、到期时间和权限都在SAS URI中指定 (如果省略了开始时间, 则为默示的权限)。任何类型的 SAS 都可以是即席SAS。
  • 具有存储访问策略的服务SAS: 存储访问策略在资源容器 (可以是blob容器、表、队列或文件共享) 上定义。存储访问策略可用于管理针对一个或多个服务共享访问签名的约束。将服务SAS与存储访问策略相关联时, 该SAS将继承—为存储访问策略定义的开始时间、到期时间和权限。

SAS令牌是在客户端生成的字符串, 例如, 使用Azure存储客户端库之一。 Azure存储不会以任何方式跟踪SAS令牌。可在客户端侧创建无限数量的 SAS 令牌。创建SAS后, 可以将其分发到需要访问存储帐户中的资源的客户端应用程序。

当客户端应用程序将SAS URI 作为请求的一部分提供给Azure存储时, 服务将检查SAS参数和签名, 以验证它是否对授权请求有效。 如果服务验证签名有效,则对请求进行授权。否则,将拒绝请求,错误代码为403(已禁止)。如下图所示:


SAS通常适用于用户需要在存储帐户中读取和写入其数据的服务情形。在存储帐户存储用户数据的情形中,有两种典型的设计模式:

客户端通过执行身份验证的前端代理服务上传和下载数据。此前端代理服务的优势在于允许验证业务规则,但对于大量数据或大量事务,创建可扩展以匹配需求的服务可能成本高昂或十分困难。


轻型服务按需对客户端进行身份验证,并生成SAS。当客户端应用程序收到 SAS后, 它们可以直接使用 SAS定义的权限和 SAS允许的间隔访问存储帐户资源。SAS减少了通过前端代理服务路由所有数据的需要。


在某些情况下, 需要使用SAS在复制操作中对源对象的访问权限:

  • 将一个Blob复制到存储在不同存储帐户中的另一个Blob时,必须使用SAS 授予对源Blob的访问权限。还可以选择使用SAS授予对目标blob的访问权限。
  • 将一个文件复制到驻留在不同存储帐户中的另一个文件时,必须使用SAS 授予对源文件的访问权限。还可以选择使用SAS授予对目标文件的访问权限。
  • 将一个Blob复制到一个文件,或将一个文件复制到一个Blob时,必须使用SAS授予对源对象的访问权限,即使源对象和目标对象驻留在同一存储帐户中也是如此。

使用有效账户登录Azure订阅之后,选择资源组,以及存储账户名称,在左边侧边栏中选择”共享访问签名”,我们可以根据(即Blob、文件、队列、表存储服务)设计不同的权限,开始以及结束时间,允许的IP地址或者范围,包括协议。


点击”生成SAS和连接字符串″


以下为一个使用Azure PowerShell为容器或 blob 创建用户委托 SAS的示例文件。

#连接到Azure账户,并指定订阅

Connect-AzAccount -SubscriptionId <xxxxxxx>

#通过 RBAC 分配权限

New-AzRoleAssignment -SignInName <email> -RoleDefinitionName “Storage Blob Data Contributor” -Scope “/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>”

#使用 Azure AD 凭据来保护 SAS

$ctx = New-AzStorageContext -StorageAccountName <storage-account> -UseConnectedAccount

#为容器创建用户委托 SAS

New-AzStorageContainerSASToken -Context $ctx -Name <container> -Permission racwdl -ExpiryTime <date-time>

#为 blob 创建用户委托 SAS

New-AzStorageBlobSASToken -Context $ctx -Container <container> -Blob <blob> -Permission racwd -ExpiryTime <date-time> -FullUri

本文固定链接: http://365vcloud.net/2019/09/12/create-and-use-a-sas-with-blob-storage/ | Eric的学习之路

该日志由 TingXu 于2019年09月12日发表在 Microsoft Azure 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Azure Administrator认证学习指南之使用共享访问签名 (SAS) 实现对 Azure 存储资源的控制访问-18 | Eric的学习之路
关键字: ,

Azure Administrator认证学习指南之使用共享访问签名 (SAS) 实现对 Azure 存储资源的控制访问-18:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!