【问题标题】:Can't Access Storage Queue receiveMessages due AuthorizationPermissionMismatch由于 AuthorizationPermissionMismatch 无法访问存储队列接收消息
【发布时间】:2022-01-24 05:16:41
【问题描述】:

我已经使用 ClientSecretCredential 访问了 Azure 存储队列方法,但在访问时 队列 receiveMessages、队列 peekMessages 和 deleteMessages 它给了我错误

RestError:此请求无权使用此权限执行此操作。 RequestId:c92577923e-a603-0004-61c0-f70a19000

这是我的节点 js 代码

const { QueueServiceClient } = require("@azure/storage-queue");
const { ClientSecretCredential } = require("@azure/identity");
async function getQueueMessages() {
  try {
    let myStorageAccount = "hellostorage";
    const credential = new ClientSecretCredential(tenantId, app_id, SecretKey);
    const queueServiceClient = new QueueServiceClient(
      `https://${myStorageAccount}.queue.core.windows.net`,
      credential
    );
    const queueName = "hello-queue";
    const queueClient = queueServiceClient.getQueueClient(queueName);
    const response = await queueClient.receiveMessages(10);
    console.log("response: ", response);
  } catch (error) {
    console.log("error: ", error);
  }
}
getQueueMessages();

这是我的应用权限

【问题讨论】:

  • 这可能是因为分配给您的服务主体的权限。请编辑您的问题并包含您分配给服务主体的权限。
  • @GauravMantri 请看上图
  • 在您的许可下我可以知道您是否添加了此角色Storage Queue Data Message Processor 用于授予对 Azure 存储队列中消息的查看、检索和删除权限。

标签: node.js azure azure-storage-queues azure-identity


【解决方案1】:

您共享的屏幕截图实质上允许您的服务主体为您的存储帐户获取令牌。它不授予您对存储帐户执行操作的权限,这就是您收到此错误的原因。

您需要为存储帐户上的服务主体授予与数据相关的适当权限。请参阅此链接,了解您必须分配给服务主体以执行数据相关操作的相应 RBAC 角色:https://docs.microsoft.com/en-us/rest/api/storageservices/authorize-with-azure-active-directory#manage-access-rights-with-rbac

您可以尝试使用Storage Queue Data Message ProcessorStorage Queue Data Contributor 角色。

应用适当的角色后,您应该能够执行操作。

【讨论】:

  • 感谢我授予用户权限而不是应用程序
猜你喜欢
  • 1970-01-01
  • 2013-08-01
  • 2012-01-19
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 2012-11-16
相关资源
最近更新 更多