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

通过Azure AD认证应用访问Azure Service Bus的权限与作用域配置问题

实现步骤

步骤1:定位到目标Service Bus命名空间

  • 进入Azure门户,搜索并打开你要限定权限的指定Service Bus命名空间资源
  • 在左侧导航栏的访问控制(IAM) 菜单下,点击添加角色分配

步骤2:选择匹配只读需求的内置角色

  • 在角色列表中搜索并选中 Azure Service Bus 数据接收者 角色,该角色仅拥有对Service Bus队列、主题订阅的消息读取、接收权限,无写入、管理权限,符合你的只读要求
  • 点击下一步进入成员分配页面

步骤3:绑定你已注册的AAD应用身份

  • 在「分配访问权限至」选项中,选择用户、组或服务主体
  • 点击选择成员,在搜索框中输入你之前完成注册的AAD应用的名称或应用ID(客户端ID),选中对应结果后点击选择
  • 点击下一步>「审核+分配」完成权限配置

步骤4:控制台应用代码适配

你可以直接使用官方SDK配合ClientSecretCredential完成认证,核心代码示例如下:

using Azure.Identity;
using Azure.Messaging.ServiceBus;

// 替换为你的实际参数
var fullyQualifiedNamespace = "你的Service Bus命名空间名.servicebus.windows.net";
var clientId = "AAD应用注册的客户端ID";
var clientSecret = "你生成的客户端密钥";
var tenantId = "AAD租户ID";
var queueName = "要访问的队列名称";

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

// 初始化Service Bus客户端
await using var client = new ServiceBusClient(fullyQualifiedNamespace, credential);

// 创建接收者测试读取权限
var receiver = client.CreateReceiver(queueName);
var messages = await receiver.ReceiveMessagesAsync(maxMessages: 10, maxWaitTime: TimeSpan.FromSeconds(5));
foreach (var message in messages)
{
    Console.WriteLine($"读取到消息:{message.Body.ToString()}");
    // 确认消息处理完成
    await receiver.CompleteMessageAsync(message);
}
注意事项
  • 权限配置完成后最长可能需要5分钟生效,如果测试时提示无权限可以稍等后重试
  • 该角色分配仅作用于你指定的这一个Service Bus命名空间,不会对其他Service Bus资源生效,符合你限定作用域的要求
  • 如果需要更细粒度的权限(比如限定到某个具体队列/主题),也可以在对应队列/主题的访问控制(IAM)页面按照同样流程分配角色,作用域会进一步缩小到单个实体

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:09:01