创建通用 API 以访问租户内任何存储帐户中的任何 Blob

问题描述 投票:0回答:1

我正在开发一个 API,允许用户使用 Azure AD OAuth2 身份验证从 Azure 存储 (RBAC) 检索 blob。这是场景:

  • 用户将使用 Azure AD OAuth2(授权代码流将范围保持为用户访问)进行身份验证,它会生成不记名 access_token。
  • API 采用存储帐户 (SA)、容器和 Blob 路径等参数。
  • 用户可能拥有多个存储帐户的读取权限,有些用户可能只能访问一个存储帐户。

我需要确保 API 返回一个 blob(用户有权访问),否则如果经过身份验证的用户无权访问所请求的存储帐户和容器中的特定 blob,则返回身份验证错误。

我正在使用此 .NET 代码根据这些详细信息创建一个 Blob 客户端。

 Uri blobUri = new Uri($"https://{storageAccountName}.blob.core.windows.net/{containerName}/{filePath}");
 BlobClient blobClient = new BlobClient(blobUri, new DefaultAzureCredential());

问题是我能够访问所需的 blob,因为我在本地开发设置中运行它。我必须在 Azure Cli 中执行 az login 才能对其进行测试。但是当我尝试在 Azure 上的已部署应用程序中运行它时,它会给出 403 错误。

我已确保我至少拥有 Blob 读取器访问权限和资源组中的读取器访问权限。

用于参考的文档:https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication/?tabs=command-line

任何有关如何安全有效地实现这一点的指导或代码示例将不胜感激。谢谢!

.net azure-blob-storage rbac
1个回答
0
投票

部署后,您的应用程序将采用托管身份或服务主体身份验证。确保前者拥有存储资源的适当权限

© www.soinside.com 2019 - 2024. All rights reserved.