为存储容器生成 SAS 令牌

在本文中,你将了解如何为 Azure Blob 存储容器生成用户委派共享访问签名 (SAS) 令牌。 用户委派 SAS 令牌使用 Azure Active Directory (Azure AD) 凭据而不是 Azure 存储密钥进行签名。 它提供对 Azure 存储帐户中资源的高级安全和委派访问。

概括而言,它的工作原理如下:应用程序将 SAS 令牌作为请求的一部分提供给 Azure 存储。 如果存储服务验证共享访问签名有效,则对请求进行授权。 如果认为共享访问签名无效,则拒绝请求并返回错误代码 403(禁止)。

Azure Blob 存储提供三种类型的资源:

  • 存储帐户在 Azure 中为数据提供唯一的命名空间。
  • 容器位于存储帐户中,并组织 Blob 集。
  • Blob 位于容器中,并存储文本和二进制数据。

何时使用共享访问签名

  • 如果使用的是具有公共访问权限的存储容器,则可以选择使用 SAS 令牌授予对存储资源的有限访问权限。
  • 训练自定义模型时,必须将已组装的训练文档集上传到 Azure Blob 存储容器。 可使用用户委派 SAS 令牌授予对训练资源的权限。

先决条件

若要开始,需要:

  • 一个有效的 Azure 帐户。 如果没有,可以创建一个试用帐户

  • 表单识别器认知服务多服务资源。

  • 标准性能 Azure Blob 存储帐户。 你需创建一个容器,用于存储和整理存储帐户中的 blob 数据。 如果不知道如何使用容器创建 Azure 存储帐户,请按照以下快速入门中的说明操作:

    • 创建存储帐户。 创建存储帐户时,在“实例详细信息”>“性能”字段中选择“标准”性能 。
    • 创建容器。 创建容器时,在“新建容器”窗口中将“公共访问级别”设置为“容器(对容器和 Blob 进行匿名读取访问)” 。

上传文档

  1. 转到 Azure 门户。 选择“你的存储帐户”>“数据存储”>“容器” 。

    显示 Azure 门户中的“数据存储”菜单的屏幕截图。

  2. 从列表中选择容器。

  3. 从页面顶部的菜单中选择“上传”。

    显示 Azure 门户中的容器“上传”按钮的屏幕截图。

    此时会显示“上传 Blob”窗口。

  4. 选择要上传的文件。

    显示 Azure 门户中的“上传 Blob”窗口的屏幕截图。

注意

默认情况下,REST API 使用位于容器根目录下的表单文档。 你也可以使用在子文件夹中组织的数据(如果已在 API 调用中指定)。 有关详细信息,请参阅在子文件夹中组织数据

使用 Azure 门户创建共享访问签名

重要

生成和检索容器(而不是存储帐户本身)的共享访问签名。

  1. Azure 门户中,选择“你的存储帐户”>“容器” 。

  2. 从列表中选择容器。

  3. 转到到主窗口的右侧,并选择与所选容器关联的三个椭圆。

  4. 从下拉菜单中选择“生成 SAS”以打开“生成 SAS”窗口 。

    屏幕截图显示了 Azure 门户中的“生成 SAS 令牌”下拉菜单。

  5. 选择“签名方法”>“用户委派密钥” 。

  6. 通过选中或清除相应的复选框来定义“权限”。 请确保选中“读取”、“写入”、“删除”和“列出”权限 。

    显示 Azure 门户中的 SAS 权限字段的屏幕截图。

    重要

  7. 指定已签名密钥的“开始”与“过期”时间。 过期时间值最大为从共享访问签名开始生效后的七天。

  8. “允许的 IP 地址”字段是可选的,它指定要从中接受请求的 IP 地址或 IP 地址范围。 如果请求 IP 地址与 SAS 令牌中指定的 IP 地址或地址范围不匹配,则不会为此请求 IP 地址授权。

  9. “允许的协议”字段是可选的,它指定通过共享访问签名发出的请求所允许的协议。 默认值为 HTTPS。

  10. 选择“生成 SAS 令牌和 URL”。

  11. “Blob SAS 令牌”查询字符串和“Blob SAS URL”将显示在窗口的下部区域 。 若要使用 Blob SAS 令牌,请将其追加到存储服务 URI。

  12. 将“Blob SAS 令牌”和“Blob SAS URL”值复制并粘贴到安全的位置 。 这些值只会显示一次,关闭窗口后不再可以检索到。

使用 Azure CLI 创建共享访问签名

  1. 若要使用 Azure CLI 为容器创建用户委派 SAS,请确保已安装 2.0.78 或更高版本。 若要检查已安装的版本,请使用 az --version 命令。

  2. 调用 az storage container generate-sas 命令。

  3. 下列参数必填:

    • auth-mode login。 此参数确保使用 Azure AD 凭据为向 Azure 存储发出的请求授权。
    • as-user。 此参数指示生成的 SAS 是用户委派 SAS。
  4. 容器上的用户委派 SAS 支持的权限包括添加 (a)、创建 (c)、删除 (d)、列出 (l)、读取 (r) 和写入 (w)。 请确保将 r、w、d 和 l 包含为权限参数的一部分 。

  5. 使用 Azure CLI 创建用户委派 SAS 时,用户委派密钥有效的最大时间间隔为从开始日期起的七天。 指定共享访问签名的过期时间(开始生效后的七天内有效)。 有关详细信息,请参阅使用 Azure CLI 为容器或 Blob 创建用户委派 SAS

示例

生成用户委派 SAS。 请将括号中的占位符值替换为你自己的值:

az storage container generate-sas \
    --account-name <storage-account> \
    --name <container> \
    --permissions rwdl \
    --expiry <date-time> \
    --auth-mode login \
    --as-user

使用 Blob SAS URL

有两个 选项可供选择:

  • 若要通过 REST API 使用 Blob SAS URL,请将 SAS URL 添加到请求正文:

    {
        "source":"<BLOB SAS URL>"
    }
    
  • 若要通过表单识别器标记工具使用 Blob SAS URL,请将 SAS URL 添加到“连接设置”>“Azure Blob 容器”>“SAS URI”字段 :

    显示 SAS URI 字段的屏幕截图。

就这么简单。 已了解如何生成 SAS 令牌来授权客户端访问数据的方式。

后续步骤