授予创建Azure企业订阅的权限(旧版)

本文介绍如何使用 Azure 基于角色的访问控制(Azure RBAC)共享创建订阅的能力,以及如何审核订阅创建。 必须在想要共享的帐户上具备所有者角色。

注意

注意

建议使用 Azure Az PowerShell 模块与Azure交互。 请参阅 Install Azure PowerShell 入门。 若要了解如何迁移到 Az PowerShell 模块,请参阅 Migrate Azure PowerShell从 AzureRM 迁移到 Az

授予访问权限

若要在注册帐户下创建订阅,用户必须拥有该帐户的 Azure RBAC Owner 角色。 可以按照以下步骤在注册帐户上授予用户或用户组Azure RBAC 所有者角色:

  1. 获取想要授予访问权限的注册帐户的对象ID

    若要向其他人授予注册帐户的 Azure RBAC 所有者角色,你必须是帐户的“帐户所有者”或Azure RBAC 所有者。

    请求列出你有权访问的所有注册帐户:

    GET https://management.chinacloudapi.cn/providers/Microsoft.Billing/enrollmentAccounts?api-version=2018-03-01-preview
    

    Azure响应的列表包含你有访问权限的所有注册帐户:

    {
      "value": [
        {
          "id": "/providers/Microsoft.Billing/enrollmentAccounts/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
          "name": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
          "type": "Microsoft.Billing/enrollmentAccounts",
          "properties": {
            "principalName": "SignUpEngineering@contoso.com"
          }
        },
        {
          "id": "/providers/Microsoft.Billing/enrollmentAccounts/4cd2fcf6-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "name": "4cd2fcf6-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "type": "Microsoft.Billing/enrollmentAccounts",
          "properties": {
            "principalName": "BillingPlatformTeam@contoso.com"
          }
        }
      ]
    }
    

    使用 principalName 属性标识要授予Azure RBAC 所有者访问权限的帐户。 复制该帐户的 name。 例如,如果要向 Azure RBAC 所有者授予对 SignUpEngineering@contoso.com 注册帐户的访问权限,则可以复制 aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb。 这是注册帐户的对象 ID。 将该值粘贴到某个位置,以便在下一步中将其用作 enrollmentAccountObjectId

    使用 principalName 属性标识要授予Azure RBAC 所有者访问权限的帐户。 复制该帐户的 name。 例如,如果要向 Azure RBAC 所有者授予对 SignUpEngineering@contoso.com 注册帐户的访问权限,则可以复制 aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb。 这是注册帐户的对象标识符。 将该值粘贴到某个位置,以便在下一步中将其用作 enrollmentAccountObjectId

  2. 获取要授予 Azure RBAC 所有者角色的用户或组的对象 ID

    1. 在Azure门户中,搜索 Microsoft Entra ID
    2. 如果要向用户授予访问权限,请在左侧菜单中选择“用户”。 若要向组授予访问权限,请选择“组”。
    3. 选择要为其授予Azure RBAC 所有者角色的用户或组。
    4. 如果选择了用户,则将在“配置文件”页中找到对象 ID。 如果选择了组,则对象 ID 出现在“概述”页中。 通过选择文本框右侧的图标来复制 ObjectID。 将其粘贴到某个位置,以便在下一步中将其用作 userObjectId
  3. 向用户或组授予注册帐户上的 Azure RBAC 所有者角色

    在前两个步骤中收集的值基础上,为用户或组授予在注册账户上的 Azure RBAC 所有者角色。

    运行以下命令,并将 <enrollmentAccountObjectId> 替换为在第一步中复制的 name (aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb)。 将 <userObjectId> 替换为从第二步复制的对象 ID。

    PUT  https://management.chinacloudapi.cn/providers/Microsoft.Billing/enrollmentAccounts/<enrollmentAccountObjectId>/providers/Microsoft.Authorization/roleAssignments/<roleAssignmentGuid>?api-version=2015-07-01
    
    {
      "properties": {
        "roleDefinitionId": "/providers/Microsoft.Billing/enrollmentAccounts/<enrollmentAccountObjectId>/providers/Microsoft.Authorization/roleDefinitions/<ownerRoleDefinitionId>",
        "principalId": "<userObjectId>"
      }
    }
    

    在注册帐户范围内成功分配所有者角色时,Azure会提供有关角色分配的详细信息。

    {
      "properties": {
        "roleDefinitionId": "/providers/Microsoft.Billing/enrollmentAccounts/providers/Microsoft.Authorization/roleDefinitions/<ownerRoleDefinitionId>",
        "principalId": "<userObjectId>",
        "scope": "/providers/Microsoft.Billing/enrollmentAccounts/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "createdOn": "2018-03-05T08:36:26.4014813Z",
        "updatedOn": "2018-03-05T08:36:26.4014813Z",
        "createdBy": "<assignerObjectId>",
        "updatedBy": "<assignerObjectId>"
      },
      "id": "/providers/Microsoft.Billing/enrollmentAccounts/providers/Microsoft.Authorization/roleDefinitions/<ownerRoleDefinitionId>",
      "type": "Microsoft.Authorization/roleAssignments",
      "name": "<roleAssignmentGuid>"
    }
    

使用活动日志审核订阅的创建者身份

若要通过此 API 跟踪创建的订阅,请使用租户活动日志 API。 目前无法使用 PowerShell、CLI 或 Azure 门户跟踪订阅创建。

  1. 作为 Microsoft Entra 租户的租户管理员,提升访问权限,然后在指定范围内将阅读者角色分配给审核用户,/providers/microsoft.insights/eventtypes/management读者角色、监视参与者角色或自定义角色具有此访问权限。

  2. 作为审核用户,调用租户活动日志 API 查看订阅创建活动。 示例:

    GET "/providers/Microsoft.Insights/eventtypes/management/values?api-version=2015-04-01&$filter=eventTimestamp ge '{greaterThanTimeStamp}' and eventTimestamp le '{lessThanTimestamp}' and eventChannels eq 'Operation' and resourceProvider eq 'Microsoft.Subscription'"
    

若要快速从命令行调用此 API,请尝试使用 ARMClient