首页 > 解决方案 > 在 Node.js 中获取资源组的访问控制列表 (IAM)

问题描述

我正在使用 Node.js 与 Azure 进行交互,例如,创建资源组:

const { ResourceManagementClient } = require('azure-arm-resource');

createResourceGroup(location, groupName) {
        const groupParameters = {
            location: location,
        };
        return this.resourceClient.resourceGroups.createOrUpdate(groupName, groupParameters);
    }

如何使用这些 azure-arm 模块来检索资源组的访问控制 (IAM) 列表?

我的意思是这个列表: 在此处输入图像描述

标签: javascriptnode.jsazureazure-active-directoryazure-resource-manager

解决方案


您将需要使用适用于 Node.js 的 Azure 授权模块

这是基于 Microsoft Docs 的示例代码

安装 Azure 授权模块

npm install azure-arm-authorization

列出特定资源组的所有角色分配

const msRestAzure = require('ms-rest-azure');
const authorizationManagement = require('azure-arm-authorization');

const resourceGroup = 'resource-group-name';
const subscriptionId = 'your-subscription-id';

msRestAzure.interactiveLogin().then(credentials => {
 const client = new authorizationManagement(credentials, subscriptionId);
 client.roleAssignments.listForResourceGroup(resourceGroupName).then(result => {
   console.log(result);
 });
});

另外,请注意,用于这些操作的实际 REST API 是:

角色分配 - 资源组列表

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments?api-version=2015-07-01

类似的 API,它接受一个通用范围(不仅适用于资源组,还适用于其他资源)

角色分配 - 范围列表

GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments?api-version=2015-07-01

更新(试图回答评论中的查询)

使用上面的代码列出特定资源组的所有角色分配(或角色分配 - 资源组 REST API 的列表).. 您将收到一个角色分配的集合,就像您的评论所反映的那样。

我想这是您根据问题的屏幕截图所需要的,因为您选择了“角色分配”选项卡,并且该列表显示在下面的 Azure 门户中。

现在角色分配本身由以下组成:

  1. 安全主体 ID(您尝试通过角色授予权限的用户、组、服务主体等)

  2. 角色定义 ID(您分配的角色的标识符,例如贡献者、所有者或自定义 RBAC 角色)

  3. 范围(分配此角色的位置,例如订阅级别或特定资源组或资源级别)

这个概念在Microsoft Docs上得到了详细的解释和很好的解释

为了您了解响应 UUID,您将能够找到所有角色定义的列表(了解他们的 ID、名称描述等。通过节点 SDK 使用角色定义列表或使用角色定义 - 列出 REST API

主体 ID 是用户、组或应用服务主体的 ID。

在您的情况下,范围是您尝试查询角色分配的资源组。

在此处输入图像描述


推荐阅读