【问题标题】:Azure REST API: Pull all subscriptions for an organization?Azure REST API:拉取组织的所有订阅?
【发布时间】:2019-08-11 17:46:40
【问题描述】:

我正在尝试使用 Azure REST API 创建一个 Azure 应用程序,第一步是提取组织内的所有订阅。

我正在使用从这些 Microsoft 文档中引用的本指南。 导游:https://blog.jongallant.com/2017/11/azure-rest-apis-postman/ 文档:https://docs.microsoft.com/en-us/rest/api/azure/

我正在使用以下 Azure CLI 命令来创建服务主体:

az ad sp create-for-rbac -n "<name>"

目前,当我点击时,我可以在 Postman 中成功使用生成的服务主体来撤回 1 个订阅:

GET https://management.azure.com/subscriptions?api-version=2016-06-01

但是,此响应仅提供 1 个订阅,但在 Azure 门户中,我看到组织下有多个订阅。

我尝试过如下指定范围,但似乎无法正常工作:

az ad sp create-for-rbac -n "<name>" --scope "/"
# OR
az ad sp create-for-rbac -n "<name>" --scope "/subscriptions"

最后一点有用的信息,如果我在 Powershell 中运行以下命令,我会返回多个订阅。这是一个同义调用,我想为 REST API 找到一种运行方式:

Get-AzureRmSubscription

如何创建一个可以访问组织下所有订阅的服务主体?还是有其他方法可以做到这一点?

【问题讨论】:

    标签: azure azure-resource-manager


    【解决方案1】:

    要通过一次调用获取所有订阅,可以使用 Azure 管理组使用服务主体。

    Read about the Hierarchy of Azure Management groups

    根据上面的文档,如果我们创建一个层次结构,然后在根级别添加一个SPN,就可以实现您的要求。

    在您的管理组中创建服务主体 -> 访问控制 (IAM) -> 添加 -> 添加角色分配 -> 将角色分配给您的服务主体。

    您可以使用此服务主体来授权 Azure rest api

    POST https://login.microsoftonline.com/<YOUR-TENANT-ID>/oauth2/v2.0/token
    
    grant_type:client_credentials
    client_id:<Service-Principal-ClientId>
    client_secret:-<Service-Principal-ClientSecret>
    scope:https://management.azure.com/.default
    

    然后使用列表订阅 API

    GET https://management.azure.com/subscriptions?api-version=2020-01-01
    Authorization: Bearer <accessToken_from_Step2>
    

    List subscription MS Documentation

    【讨论】:

      【解决方案2】:

      如何创建一个可以访问组织下所有订阅的服务主体?还是有其他方法可以做到这一点?

      如果这是您的最终目标,只需创建服务主体,然后在门户中的订阅中导航到 Access control (IAM) -> Add -> Add role assignment -> 为您的服务主体分配一个角色。对于其他订阅,请执行相同操作。

      有关更多详细信息和其他方法,您可以参考以下链接:通过Azure portalPowershellAzure CLIREST APITemplate

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-04
        • 2019-05-05
        • 1970-01-01
        • 1970-01-01
        • 2022-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多