1

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

RestError:此请求无权使用此权限执行此操作。请求ID: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();

这是我的应用权限 在此处输入图像描述

4

1 回答 1

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角色。

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

于 2021-12-23T08:12:35.507 回答