azure - 使用容器名称和 SAS token 的 Azure 存储的动态连接字符串的格式

标签 azure azure-blob-storage azure-storage

我有一个 API,允许用户将文件上传到 Azure 存储容器。现在我的 API 允许文件上传,但它允许任何用户上传到他们想要的任何容器。我希望用户只能上传到他们自己的容器。

为了防止用户访问所有容器,我想到了为用户提供 SAS token 来限制容器访问。问题是我不确定如何格式化连接字符串以包含 SAS token 以及容器名称。我当前的连接字符串采用以下格式:

DefaultEndpointsProtocol=...;AccountName=...;AccountKey=...;EndpointSuffix=...

我一直在使用此资源来修复连接字符串:https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string然而,每次我尝试编辑自己的连接字符串时,它要么导致 API 返回 500 错误,要么允许我访问任何容器而不仅仅是特定于 token 的容器。我也尝试过简单地输入 SharedAccessSignature=<access key>作为连接字符串,但它仍然不起作用。

最佳答案

简单地说,您无法为特定容器创建连接字符串。

您可以做的就是与您的客户共享容器特定的 SAS URL。您可以做的是使用 SAS URL 创建一个 BlobContainerClient,然后上传文件。

例如,如果您使用 .Net SDK 进行 Azure Blob 存储,则代码将类似于:

var containerClient = new BlobContainerClient(sasUrl);
var blockBlobClient = containerClient.GetBlockBlobClient(blobName);
...write code to upload the blob

关于azure - 使用容器名称和 SAS token 的 Azure 存储的动态连接字符串的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76164837/

相关文章:

azure - 需要 powershell 脚本来启用存储帐户和 key 保管库的诊断日志记录

json - Azure 存储 REST API 能否以 JSON 格式发送响应?

python - Azure Functions - BlobTrigger - 如何使用容器中的任何文件触发函数?

c# - 如何将字节数组(即 byte[])保存到 Azure Blob 存储?

azure - 将文件从 Azure VM 复制到 Azure Blob 存储

c# - 更新 Azure Staging 部署将创建新的 url

c# - 如何通过 $MetricsCapacityBlob 获取 blob 大小

python - 如何在 Azure Notebooks 中使用 rmagic?

asp.net - Azure Web 应用程序中的 Microsoft 媒体基础

Azure 函数 - Visual Studio 工具