访问Azure存储中的私有blob的URL

wljmcqd8  于 2023-10-22  发布在  其他
关注(0)|答案(3)|浏览(132)

我们刚刚开始使用Azure存储。在我们的场景中,我们上传到私有blob,我们稍后需要直接从我们的客户端应用程序访问,例如。图像.
有没有一种方法可以使用包含访问密钥的URL来解决Azure存储中的私有Blob?
通过筛选MS文档,到目前为止,我能找到的只是通过blob URI的简单URL访问,例如。如通过.net API列出blob时CloudBlockBlob示例的URI属性所示。
从Web浏览器访问它自然会失败,因为blob不是公共的。
但是,我们是否可以限定URL也包括访问密钥,以便允许授权客户端访问blob..?

gev0vcfq

gev0vcfq1#

您可以为私有blob生成SAS URL和令牌。下面是在Azure门户中手动生成此内容的过程,以测试此概念。即使您的存储容器是私有的,它也可以工作,因为它允许使用在其查询字符串中包含令牌的URL临时,有时间限制地访问文件。
单击存储容器中的文件,选择“Generate SAS”选项卡,然后在右窗格中选择x1c 0d1x
这将生成一个token和一个包含token的URL,如下所示:

您可以使用curl测试将URL作为文件下载。使用上图中显示的第二个URL(包括查询字符串中的完整令牌和其他参数的URL),然后执行此操作(重要-URL必须在双引号中):
curl "<YOUR_URL>" --output myFileName.txt

提示-这也是一个很好的方法,使文件可用于Azure虚拟机,如果你需要直接安装一个文件在虚拟机上的任何原因(我需要这样做安装SSL证书),你可以生成URL然后curl下载文件,在虚拟机本身。例如,首先使用Bastion或SSH连接到VM,然后使用curl将文件下载到某处。

k4aesqcs

k4aesqcs2#

这是用于从存储读取blob的API:
https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob
没有URL参数来传递访问键,只有头值Authorization。因此,您可以手动执行请求,例如:将得到的数据作为base64编码的图像添加。如果可能的话,我会反对它。
您还必须意识到,通过将您的访问密钥传递给客户端,您实际上是在公开您的blob。你将把你的数据置于比匿名访问更大的风险中,因为访问密钥允许比匿名访问更多的操作。这也适用于你的objective-c应用程序,即使它在那里更加模糊。SAS是实现这一目标的方法-创建一个后端服务,为给定资源创建一组定义的SAS令牌。然而,这比简单地在某个地方混淆完整的访问密钥要付出更多的努力。
请参阅“匿名用户可用的功能”:
https://learn.microsoft.com/en-us/azure/storage/blobs/storage-manage-access-to-resources

wtzytmuj

wtzytmuj3#

扩展到@Chris Halcrow。
我不得不用更多的参数()来扩展我的网址,比如ss=bfqt&srt=sco
)请注意,SAS不是一个“键”,而是一组查询参数。然后又道:

curl -X GET -H "x-ms-date: $(date -u)" "https://<ACCOUNT>.blob.core.windows.net/<PATH>/<FILENAME>?<SIGNATURE>"

相关问题