Azure 资源管理器 API 用户的订阅范围授权
Posted
技术标签:
【中文标题】Azure 资源管理器 API 用户的订阅范围授权【英文标题】:Subscription-scope authorization for Azure Resource Manager API user 【发布时间】:2016-11-05 06:09:05 【问题描述】:尝试整合 Azure ARM 集成,其中我的代码使用 Azure API 来检索整个订阅中 VM 的完整列表。
成功完成所有(许多!)步骤here,让 API 用户准备好身份验证所需的所有相关 ID。
使用相同的指令集,我们还能够授予该用户读取者角色,以列出特定组中的虚拟机(我们通过 Azure UI 完成此操作)。但是,我们未能成功执行指令 here 为该用户设置整个订阅的读者角色(通过 CLI)。
运行这个:
azure 角色分配创建 --objectId app-oid --roleName Reader --scope /subscriptions/subscription-id
或者这个:
azure 角色分配创建 --objectId app-oid --roleName Reader --subscription subscription-id --scope /subscriptions/subscription-id
产生这个:
Application 类型的主体不能有效地用于角色分配。
因此,目前我们无法在不为每个资源组添加特定授权的情况下以编程方式浏览整个 VM 集。 有人知道在订阅级别分配此权限的实际方法吗?
【问题讨论】:
【参考方案1】:在问题正文链接的comment area 中找到答案: 在新门户中,编辑订阅并添加角色,就像使用资源组一样。仍然好奇为什么 CLI 不支持这个。
【讨论】:
【参考方案2】:使用 Azure CLI 创建和授权服务主体的步骤是此处的文档:https://azure.microsoft.com/en-us/documentation/articles/resource-group-authenticate-service-principal-cli/
【讨论】:
【参考方案3】:不要使用--objectId app-oid
尝试使用-ServicePrincipalName <appId>
https://github.com/Azure/azure-powershell/issues/4776
【讨论】:
以上是关于Azure 资源管理器 API 用户的订阅范围授权的主要内容,如果未能解决你的问题,请参考以下文章
为用户创建订阅的 Azure API 管理 REST 调用(缺失)
试图让Azure中美国州长的授权代码时出错:获得“无效的资源AADSTS650057”