ATV*_*ATV 8 c# blob azure azure-storage azure-storage-blobs
我们才刚刚开始使用 Azure 存储。在我们的场景中,我们上传到私有 blob,稍后我们需要直接从我们的客户端应用程序访问这些 blob,例如图像。
有没有办法使用包含访问密钥的 URL 来解决 Azure 存储中的私有 blob?
筛选 MS 文档,到目前为止我能找到的只是通过 blob URI 进行简单的 URL 访问,例如,当通过 .net API 列出 blob 时URI
,由CloudBlockBlob
实例的属性给出。
由于 blob 不是公开的,因此从 Web 浏览器自然地访问它会失败。
但是,我们能否将 URL 限定为也包含访问密钥,以允许授权客户端访问 blob..?
Chr*_*row 14
您可以为私有 blob 生成 SAS URL 和令牌。以下是在 Azure 门户中手动生成此内容以测试该概念的过程。即使您的存储容器是私有的,它也可以工作,因为它允许使用查询字符串中包含令牌的 URL 对文件进行临时的、时间有限的访问。
单击存储容器中的文件,选择“生成 SAS”选项卡,然后在右侧窗格中选择
这将生成一个令牌以及包含该令牌的 URL,如下所示:
您可以使用 来测试将 URL 作为文件下载curl
。使用上图中显示的第二个 URL(在查询字符串中包含完整令牌和其他参数的 URL),然后执行此操作(重要 - URL 必须用双引号引起来):
curl "<YOUR_URL>" --output myFileName.txt
提示- 这也是使文件可供 Azure VM 使用的好方法,如果您出于任何原因需要直接在 VM 上安装文件(我需要这样做来安装 SSL 证书),您可以生成 URL,然后curl
在虚拟机本身上下载文件。例如,首先使用 Bastion 或 SSH 连接到 VM,然后用于curl
将文件下载到某处。
这是用于从存储中读取 blob 的 API:
https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob
没有 URL-Parameter 来传递访问密钥,只有 header value Authorization
。因此,您可以手动执行请求,例如将结果数据添加为 Base64 编码图像。如果可能的话,我会建议不要这样做。
您还必须意识到,通过将访问密钥传递给客户端,您实际上实际上是公开了您的 blob。与匿名访问相比,您的数据面临的风险更大,因为访问密钥允许比匿名访问更多的操作。这也适用于您的 Objective-C 应用程序,尽管它在那里更加混乱。SAS 是实现这一目标的方法 - 创建一个后端服务,为给定资源创建一组定义的 SAS 令牌。然而,这比简单地在某处混淆完整的访问密钥要付出更多的努力。
请参阅“匿名用户可用的功能”:
https://learn.microsoft.com/en-us/azure/storage/blobs/storage-manage-access-to-resources
归档时间: |
|
查看次数: |
23845 次 |
最近记录: |