你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在本文中,你将了解如何使用 Azure 门户或 Azure 存储资源管理器来创建用户委派和共享访问签名 (SAS) 令牌。 用户委派 SAS 令牌是通过 Microsoft Entra 凭据保护的。 SAS 令牌提供对 Azure 存储帐户中资源的安全委托式访问。
              
               
              
              
            
提示
托管标识提供了一种替代方法,可用于授予对存储数据的访问权限,而无需在 HTTP 请求中包含 SAS 令牌。 请参阅文档翻译的托管标识。
- 托管标识可授权访问支持 Microsoft Entra 身份验证的任何资源(包括你自己的应用程序)。
- 使用托管标识后,你就不需要将在源和目标 URL 中添加共享访问签名令牌 (SAS)。
- 托管标识可供 Azure 订阅使用,无需额外付费。
概括而言,SAS 令牌的工作原理如下:
- 应用程序将 SAS 令牌作为 REST API 请求的一部分提交到 Azure 存储。 
- 存储服务验证 SAS 是否有效。 如果有效,则对请求进行授权。 
- 如果 SAS 令牌被视为无效,请求将被拒绝。 如果是这样,则返回错误代码“403 (禁止访问)”。 
Azure Blob 存储提供三种类型的资源:
- 存储帐户在 Azure 中为数据提供唯一的命名空间。
- 数据存储容器位于存储帐户中,用于组织 Blob 集(文件、文本或图像)。
- Blob 位于容器中并存储文本和二进制数据,例如文件、文本和图像。
重要说明
- SAS 令牌用于授予对存储资源的权限,并且应该按照保护帐户密钥的方式来保护 SAS 令牌。 
- 使用 SAS 令牌的操作应仅通过 HTTPS 连接执行,并且 SAS URI 应仅在 HTTPS 等安全连接上分发。 
Prerequisites
若要开始,你需要以下资源:
- 一个翻译器资源。 
- 标准性能 Azure Blob 存储帐户。 你还需要创建容器来存储和组织存储帐户中的文件。 如果不知道如何使用存储容器创建 Azure 存储帐户,请按照以下快速入门操作: 
在 Azure 门户中创建 SAS 令牌
转到 Azure 门户并导航到你的容器或特定文件(如下所示),然后继续执行这些步骤:
| 为容器创建 SAS 令牌 | 为特定文件创建 SAS 令牌 | 
|---|---|
| 你的存储帐户 → 容器 → 你的容器 | 你的存储帐户 → 容器 → 你的容器 → 你的文件 | 
- 右键单击容器或文件,然后从下拉菜单中选择“生成 SAS”。 
- 选择“签名方法”→“用户委托密钥”。 
- 通过选中和/或清除相应的复选框来定义“权限”: - 源容器或文件必须指定读取和列出访问权限。 
- 目标容器或文件必须指定写入和列出访问权限。 
 
- 指定已签名密钥的“开始”与“过期”时间。 - 创建共享访问签名 (SAS) 时,默认持续时间为 48 小时。 48 小时后,需要创建新令牌。
- 对于要将存储帐户用于翻译器服务操作的时间,请考虑设置较长的持续时间。
- 到期时间的值取决于你使用的是帐户密钥还是用户委派密钥签名方法:- 帐户密钥:虽然未规定最大时间限制;但是,最佳做法建议配置过期策略以限制间隔并尽可能减少泄露。 为共享访问签名配置到期策略。
- 用户委派密钥:到期时间的值最多为从创建 SAS 令牌开始后的七天。 此 SAS 在用户委托密钥过期后将无效,因此,到期时间超过七天的 SAS 的有效期仍然仅为七天。 有关详细信息,请参阅使用 Microsoft Entra 凭据保护 SAS。
 
 
- “允许的 IP 地址”字段是可选的,它指定要从中接受请求的 IP 地址或 IP 地址范围。 如果请求 IP 地址与 SAS 令牌指定的 IP 地址或地址范围不匹配,则授权会失败。 IP 地址或 IP 地址范围必须是公共 IP,而不是专用 IP。 有关详细信息,请参阅指定 IP 地址或 IP 范围。 
- “允许的协议”字段是可选的,它指定通过 SAS 发出的请求所允许的协议。 默认值为 HTTPS。 
- 复查设置,然后选择“生成 SAS 令牌和 URL”。 
- “Blob SAS 令牌”查询字符串和“Blob SAS URL”将显示在窗口的下部区域。 
- 请将 Blob SAS 令牌和 URL 值复制并粘贴到安全的位置。 这些信息只会显示一次,在关闭窗口后不再可以检索到。 
- 若要构造 SAS URL,请将 SAS 令牌 (URI) 追加到存储服务的 URL。 
使用 Azure 存储资源管理器创建 SAS 令牌
Azure 存储资源管理器是一个免费的独立应用,可让你从桌面中轻松管理 Azure 云存储资源。
- 需在 Windows、macOS 或 Linux 开发环境中安装 Azure 存储资源管理器应用。 
- 安装 Azure 存储资源管理器应用后, 将其连接到 用于文档翻译的存储帐户。 按照这些步骤为存储容器或特定 Blob 文件创建令牌: 
- 在本地计算机上打开 Azure 存储资源管理器应用,并导航到连接的存储帐户。 
- 展开“存储帐户”节点,并选择“Blob 容器”。 
- 展开“Blob 容器”节点,然后右键单击某个存储容器节点以显示选项菜单。 
- 从选项菜单中选择“获取共享访问签名...”。 
- 在“共享访问签名”窗口中做出以下选择: - 选择“访问策略”(默认值为“无”)。
- 指定已签名密钥的“开始”与“过期”日期和时间。 建议指定较短的时间范围,因为 SAS 在生成后是不可撤销的。
- 选择“开始”与“过期”日期和时间的时区(默认值为“本地”)。
- 通过选中和/或清除相应的复选框来定义容器“权限”。
- 复查设置并选择“创建”。
 
- 此时会显示一个新窗口,其中包含容器的容器名称、URI 和查询字符串。 
- 请将容器、URI 和查询字符串值复制并粘贴到安全的位置。 这些信息只会显示一次,在关闭窗口后不再可以检索到。 
- 若要构造 SAS URL,请将 SAS 令牌 (URI) 追加到存储服务的 URL。 
使用 SAS URL 授予访问权限
SAS URL 包括一组特殊的查询参数。 这些参数指示了客户端访问资源的方式。
可通过两种方式在 REST API 请求中包含 SAS URL:
- 使用 SAS URL 作为 sourceURL 和 targetURL 值。 
- 将 SAS 查询字符串追加到现有 sourceURL 和 targetURL 值。 
下面是一个示例 REST API 请求:
{
    "inputs": [
        {
            "storageType": "File",
            "source": {
                "sourceUrl": "https://my.blob.core.windows.net/source-en/source-english.docx?sv=2019-12-12&st=2021-01-26T18%3A30%3A20Z&se=2021-02-05T18%3A30%3A00Z&sr=c&sp=rl&sig=d7PZKyQsIeE6xb%2B1M4Yb56I%2FEEKoNIF65D%2Fs0IFsYcE%3D"
            },
            "targets": [
                {
                    "targetUrl": "https://my.blob.core.windows.net/target/try/Target-Spanish.docx?sv=2019-12-12&st=2021-01-26T18%3A31%3A11Z&se=2021-02-05T18%3A31%3A00Z&sr=c&sp=wl&sig=AgddSzXLXwHKpGHr7wALt2DGQJHCzNFF%2F3L94JHAWZM%3D",
                    "language": "es"
                },
                {
                    "targetUrl": "https://my.blob.core.windows.net/target/try/Target-German.docx?sv=2019-12-12&st=2021-01-26T18%3A31%3A11Z&se=2021-02-05T18%3A31%3A00Z&sr=c&sp=wl&sig=AgddSzXLXwHKpGHr7wALt2DGQJHCzNFF%2F3L94JHAWZM%3D",
                    "language": "de"
                }
            ]
        }
    ]
}
就这么简单! 你已了解如何创建 SAS 令牌来授权客户端访问数据的方式。