【问题标题】:Get access control list (IAM) of a resource group in Node.js在 Node.js 中获取资源组的访问控制列表 (IAM)
【发布时间】:2019-01-01 10:15:23
【问题描述】:

我正在使用 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) 列表?

我的意思是这个列表:

【问题讨论】:

    标签: javascript node.js azure azure-active-directory azure-resource-manager


    【解决方案1】:

    您需要使用Azure Authorization Modules for Node.js

    这是基于 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 是:

    Role Assignments - List For Resource Group

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

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

    Role Assignments - List For Scope

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

    UPDATE(试图回答来自 cmets 的查询)

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

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

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

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

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

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

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

    为了理解响应 UUID,您将能够使用 Role Definitions List through node SDK 或使用 Role Definitions - List REST API 找到所有角色定义的列表(了解其 ID、名称描述等)

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

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

    【讨论】:

    • 它有效,但响应不是那么有用。 'type' 字段应该是 User、Group 或 App,但它始终是 'type:"Microsoft.Authorization/roleAssignments"'。所有其他字段(id、name、principalId、roleDefinitionId 和 scope)都包含 UUID。例如:
    • id:"/subscriptions/de8abfb7-b22b-3c95-8e00-a1a8219e0d98/providers/Microsoft.Authorization/roleAssignments/c5f2db94-98c3-3671-8092-fc33d8a474d7" name:"c5f2db94-98c3-3 -8092-fc33d8a474d7" principalId:"53a71af7-c241-34e1-b77b-e98151ca6b3f" roleDefinitionId:"/subscriptions/de8abfb7-b22b-3c95-8e00-a1a8219e0d98/providers/Microsoft.Authorization/roleDefinitions/32308 20f7682dd23c" 范围:"/subscriptions/de8abfb7-b22b-3c95-8e00-a1a8219e0d98" 类型:"Microsoft.Authorization/roleAssignments"
    • 使用我提到的代码或 API,您将获得角色分配列表。如果您查看问题的屏幕截图,您会看到这是您选择的选项卡在门户中也是如此.. 现在角色分配本身有 3 个部分.. 安全主体(如用户、组等)、他们被分配的角色(角色定义 id)以及他们被分配此角色的范围。这有点主观,所以我会尝试更新我的答案并在那里为您提供更多信息..
    猜你喜欢
    • 2019-05-04
    • 2019-10-11
    • 2021-08-06
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2014-08-27
    相关资源
    最近更新 更多