授予创建 Azure Enterprise 订阅所需的访问权限(旧版)

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

注意

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

授予访问权限

若要在注册帐户下创建订阅,用户必须在该帐户上具有 Azure RBAC 所有者角色。 可按照以下步骤为用户或用户组授予注册帐户上的 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。 这是注册帐户的对象 ID。 将该值粘贴到某个位置,以便在下一步中将其用作 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