You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制Azure应用注册仅能向指定存储容器上传Blob

分步实现指定容器的Blob List/Create权限控制

1. 创建自定义RBAC角色

内置存储角色(如Storage Blob Data Contributor)权限范围过宽,包含Blob删除、容器管理等操作,不符合需求。需创建仅包含Blob列出和创建权限的自定义角色:

角色定义JSON

{
  "Name": "Custom Blob List & Create",
  "IsCustom": true,
  "Description": "仅允许在指定容器中列出和创建Blob,禁止容器管理、Blob删除等操作",
  "Actions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read",
    "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write"
  ],
  "NotActions": [],
  "AssignableScopes": [
    "/subscriptions/你的订阅ID"
  ]
}

创建步骤

  • 打开Azure门户,进入你的订阅页面
  • 切换到「访问控制(IAM)」→「角色」标签
  • 点击「添加」→「添加自定义角色」
  • 选择「从JSON导入」,粘贴上述JSON内容,替换你的订阅ID为实际值
  • 确认信息无误后点击「创建」

2. 给服务主体分配角色到指定容器

将自定义角色限定在目标容器范围内,确保服务主体仅能操作该容器:

  • 打开目标存储账户,进入指定的容器页面
  • 切换到「访问控制(IAM)」→「添加」→「添加角色分配」
  • 「角色」选择刚才创建的「Custom Blob List & Create」
  • 「成员」选择「用户、组或服务主体」,搜索你的Client ID对应的服务主体名称并选中
  • 点击「查看 + 分配」完成角色分配

3. C#代码实现Blob操作

使用Azure.Storage.Blobs库,通过Client ID和Secret获取凭证,执行允许的Blob操作:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System.Text;
using System.IO;

var tenantId = "你的租户ID";
var clientId = "你的客户端ID";
var clientSecret = "你的客户端密钥";
var storageAccountName = "你的存储账户名";
var containerName = "指定容器名";

// 构建凭证
var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

// 直接创建目标容器的客户端(符合权限范围)
var containerClient = new BlobContainerClient(
    new Uri($"https://{storageAccountName}.blob.core.windows.net/{containerName}"),
    credential
);

// 列出容器内Blob(允许操作)
await foreach (BlobItem blob in containerClient.GetBlobsAsync())
{
    Console.WriteLine($"Blob: {blob.Name}");
}

// 上传Blob(创建操作,允许)
var blobClient = containerClient.GetBlobClient("demo-file.txt");
using var stream = new MemoryStream(Encoding.UTF8.GetBytes("测试Blob内容"));
await blobClient.UploadAsync(stream, overwrite: true);
Console.WriteLine("Blob上传成功");

验证权限

尝试执行以下操作会返回403权限不足错误,符合预期:

  • 删除Blob
  • 创建/删除容器
  • 修改Blob元数据(若需允许可添加对应Actions,当前需求无需)

内容的提问来源于stack exchange,提问作者NILESH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 15:44:55