我正在使用 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) 列表?
最佳答案
您需要使用Azure Authorization Modules for Node.js
这里是基于 Microsoft Docs 的示例代码
安装Azure授权模块
npm install azure-arm-authorization
列出特定资源组的所有 Angular 色分配
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
<小时/>
更新(尝试回答评论中的疑问)
使用上面的代码列出特定资源组的所有 Angular 色分配(或 Angular 色分配 - 资源组 REST API 列表)。您将返回 Angular 色分配的集合,如您的评论所反射(reflect)的那样。
根据您的问题的屏幕截图,我认为这就是您所需要的,因为您选择了“Angular 色分配”选项卡,并且列表显示在 Azure 门户中。
现在, Angular 色分配本身由以下内容组成:
安全主体 ID(您尝试通过 Angular 色授予权限的用户、组、服务主体等)
Angular 色定义 ID(您分配的 Angular 色的标识符,例如贡献者、所有者或与此相关的自定义 RBAC Angular 色)
范围(分配此 Angular 色的范围,例如订阅级别或特定资源组或资源级别)
这个概念在 Microsoft Docs 上有详细且很好的解释。
为了理解响应 UUID,您将能够找到所有 Angular 色定义的列表(以了解其 ID、名称描述等。使用 Role Definitions List through node SDK 或使用 Role Definitions - List REST API
主体 ID 是用户、组或应用服务主体的 ID。
您的案例中的范围是您尝试查询 Angular 色分配的资源组。
关于javascript - 在 Node.js 中获取资源组的访问控制列表 (IAM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53994646/