查看和管理 Azure 节省计划的权限

本文介绍了节省计划权限的工作原理以及用户如何在 Azure 门户中查看和管理 Azure 节省计划。

默认情况下谁可以管理节省计划

有两种不同的授权方法可以控制用户查看、管理和委托对节省计划的权限。 它们是计费管理员角色和节省计划基于角色的访问控制 (RBAC) 角色。

计费管理员角色

可以使用内置计费管理员角色查看、管理和委托用于节省计划的权限。 要详细了解 Microsoft 客户协议和企业协议计费角色,请分别参阅了解 Azure 中的 Microsoft 客户协议管理角色以及管理 Azure 企业协议角色

节省计划操作所需的计费管理员角色

  • 查看节省计划:
    • Microsoft 客户协议:具有计费配置文件读取者或更高版本的用户
    • 企业协议:具有企业管理员的用户(只读)或更高版本
    • Microsoft 合作伙伴协议:不受支持
  • 管理储蓄计划(通过委托完整计费配置文件/注册的权限来实现):
    • Microsoft 客户协议:具有计费配置文件参与者或更高版本的用户
    • 企业协议:具有企业协议管理员的用户或更高版本
    • Microsoft 合作伙伴协议:不受支持
  • 委托节省计划权限:
    • Microsoft 客户协议:具有计费配置文件参与者或更高版本的用户
    • 企业协议:具有企业协议买方的用户或更高版本
    • Microsoft 合作伙伴协议:不受支持

以计费管理员身份查看和管理节省计划

如果你是计费角色用户,请在 Azure 门户中遵循以下步骤来查看和管理所有节省计划和节省计划事务。

  1. 登录到“Azure 门户”,转到“成本管理 + 计费”
    • 如果使用的是企业协议帐户,请在左侧菜单中选择“计费范围”。 然后在计费范围列表中选择一个范围。
    • 如果使用的是 Microsoft 客户协议帐户,请在左侧菜单中选择“计费配置文件”。 在计费配置文件列表中选择一个计费配置文件。
  2. 在左侧菜单中,选择“产品 + 服务”“节省计划”>。 此时会显示企业协议注册或 Microsoft 客户协议计费对象信息的完整节省计划列表。
  3. 计费角色用户可以使用节省计划订购 - 提升 REST API 获取节省计划的所有权,为自己授予 Azure RBAC 角色。

添加计费管理员

在 Azure 门户中,将用户作为计费管理员添加到企业协议或 Microsoft 客户协议。

  • 企业协议:添加具有企业管理员角色的用户,以便查看和管理适用于企业协议的所有节省计划订单。 企业管理员可以在“成本管理 + 计费”中查看和管理节省计划
    • 具有企业管理员(只读)角色的用户只能从成本管理 + 计费中查看节省计划。
    • 除非使用访问控制 (IAM)将部门管理员和帐户所有者显式添加到节省计划中,否则他们无法查看相关节省计划。 有关详细信息,请参阅管理 Azure 企业角色
  • Microsoft 客户协议:具有计费对象信息所有者角色或计费对象信息参与者角色的用户可以管理使用计费对象信息完成的所有节省计划购买。
    • 计费对象信息阅读者和发票管理员可以通过计费对象信息查看付费的所有节省计划。 但是,他们不能对节省计划进行更改。 有关详细信息,请参阅计费对象信息角色和任务

节省计划 RBAC 角色

节省计划生命周期独立于 Azure 订阅。 在购买后,节省计划不会从订阅继承权限。 节省计划是一个租户级资源,具有自己的 Azure RBAC 权限。

概述

有四个特定于节省计划的 RBAC 角色:

  • 节省计划管理员:允许管理租户中的一个或多个节省计划,并将RBAC 角色委托给其他用户。
  • 节省计划买方:允许使用指定的订阅购买节省计划。
  • 节省计划参与者:允许管理租户中的一个或多个节省计划,但不允许将 RBAC 角色委托给其他用户。
  • 节省计划读取者:允许对租户中的一个或多个节省计划进行只读访问。

这些角色可以限定为特定的资源实体(例如订阅或节省计划)或 Microsoft Entra 租户(目录)。 若要详细了解 Azure RBAC,请参阅什么是 Azure 基于角色的访问控制 (Azure RBAC)?

节省计划操作所需的节省计划 RBAC 角色

  • 查看节省计划:
    • 租户范围:具有节省计划读取者或更高权限的用户。
    • 节省计划范围:内置读取器或更高版本。
  • 管理节省计划:
    • 租户范围:具有节省计划参与者或更高版本的用户。
    • 节省计划范围:内置参与者或所有者角色,或节省计划参与者或更高版本。
  • 委托节省计划权限:
    • 租户范围:需要用户访问管理员权限才能向租户中的所有节省计划授予 RBAC 角色。 若要获取这些权限,请遵循“提升访问”步骤。
    • 节省计划范围:节省计划管理员或用户访问管理员。

此外,使用订阅购买节省计划时拥有订阅所有者角色的用户还可以查看、管理和委托购买的节省计划的权限。

查看具有 RBAC 访问权限的节省计划

如果你有特定于节省计划的 RBAC 角色(节省计划管理员、买方、参与者或读取者)、购买的节省计划,或者作为所有者添加到节省计划,请遵循以下步骤在 Azure 门户中查看和管理节省计划。

  1. 登录到 Azure 门户
  2. 选择“主页”“节省计划”以列出有权访问的节省计划>

将 RBAC 角色添加到用户和组

要了解如何委托节省计划 RBAC 角色,请参阅委托节省计划 RBAC 角色

企业管理员可以拥有节省计划订单的所有权。 他们可以使用以下内容将其他用户添加到节省计划访问控制 (IAM)

使用 PowerShell 授予访问权限

拥有节省计划订单的所有者访问权限的用户、拥有提升的访问权限的用户以及用户访问管理员可以委派他们有权访问的所有节省计划订单的访问管理。

Azure 门户中未显示使用 PowerShell 授予的访问权限。 但是,你可以在以下部分使用 get-AzRoleAssignment 命令来查看分配的角色。

分配所有节省计划的所有者角色

要向用户授予 Microsoft Entra 租户(目录)中所有节省计划订单的 Azure RBAC 访问权限,请使用以下 Azure PowerShell 脚本:

Import-Module Az.Accounts
Import-Module Az.Resources

Connect-AzAccount -Tenant <TenantId>
$response = Invoke-AzRestMethod -Path /providers/Microsoft.BillingBenefits/savingsPlans?api-version=2022-11-01 -Method GET
$responseJSON = $response.Content | ConvertFrom-JSON
$savingsPlanObjects = $responseJSON.value

foreach ($savingsPlan in $savingsPlanObjects)
{
  $savingsPlanOrderId = $savingsPlan.id.substring(0, 84)
  Write-Host "Assigning Owner role assignment to "$savingsPlanOrderId
  New-AzRoleAssignment -Scope $savingsPlanOrderId -ObjectId <ObjectId> -RoleDefinitionName Owner
}

使用 PowerShell 脚本分配所有权角色且该脚本成功运行时,不会返回成功消息。

参数

  • ObjectId:用户、组或服务主体的 Microsoft Entra 对象 ID

    • 类型:字符串
    • 别名:ID,PrincipalId
    • 位置:已命名
    • 默认值:
    • 接受管道输入:True
    • 接受通配符:False
  • TenantId:租户唯一标识符

    • 类型:字符串
    • Position: 5
    • 默认值:
    • 接受管道输入:False
    • 接受通配符:False

使用 Azure PowerShell 脚本添加租户级别的节省计划管理员角色

要通过 PowerShell 添加租户级别的节省计划管理员角色,请使用以下 Azure PowerShell 脚本:

Import-Module Az.Accounts
Import-Module Az.Resources
Connect-AzAccount -Tenant <TenantId>
New-AzRoleAssignment -Scope "/providers/Microsoft.BillingBenefits" -PrincipalId <ObjectId> -RoleDefinitionName "Savings plan Administrator"

参数

  • ObjectId:用户、组或服务主体的 Microsoft Entra 对象 ID

    • 类型:字符串
    • 别名:ID,PrincipalId
    • 位置:已命名
    • 默认值:
    • 接受管道输入:True
    • 接受通配符:False
  • TenantId:租户唯一标识符

    • 类型:字符串
    • Position: 5
    • 默认值:
    • 接受管道输入:False
    • 接受通配符:False

使用 Azure PowerShell 脚本在租户级别分配节省计划参与者角色

要通过 PowerShell 在租户级别分配节省计划参与者角色,请使用以下 Azure PowerShell 脚本。

Import-Module Az.Accounts
Import-Module Az.Resources
Connect-AzAccount -Tenant <TenantId>
New-AzRoleAssignment -Scope "/providers/Microsoft.BillingBenefits" -PrincipalId <ObjectId> -RoleDefinitionName "Savings plan Contributor"

参数

  • ObjectId:用户、组或服务主体的 Microsoft Entra 对象 ID

    • 类型:字符串
    • 别名:ID,PrincipalId
    • 位置:已命名
    • 默认值:
    • 接受管道输入:True
    • 接受通配符:False
  • TenantId:租户唯一标识符

    • 类型:字符串
    • Position: 5
    • 默认值:
    • 接受管道输入:False
    • 接受通配符:False

使用 Azure PowerShell 脚本在租户级别分配节省计划读取者角色

要通过 PowerShell 在租户级别分配节省计划读取者角色,请使用以下 Azure PowerShell 脚本:

Import-Module Az.Accounts
Import-Module Az.Resources
Connect-AzAccount -Tenant <TenantId>
New-AzRoleAssignment -Scope "/providers/Microsoft.BillingBenefits" -PrincipalId <ObjectId> -RoleDefinitionName "Savings plan Reader"

参数

  • ObjectId:用户、组或服务主体的 Microsoft Entra 对象 ID

    • 类型:字符串
    • 别名:ID,PrincipalId
    • 位置:已命名
    • 默认值:
    • 接受管道输入:True
    • 接受通配符:False
  • TenantId:租户唯一标识符

    • 类型:字符串
    • Position: 5
    • 默认值:
    • 接受管道输入:False
    • 接受通配符:False

后续步骤