创建用于结算的自定义角色

Identity and Access Management (IAM) 包括细化的权限,让您可以授予或撤消个别用户对具体操作的访问权限。为了简化向用户分配权限的过程,IAM 角色将这些细化的权限组合到相关群组中。结算具有预定义角色(如 Billing Account AdministratorBilling Account Viewer),这些角色应该对大多数用户都适用。但是,如果这些角色不符合您的需求,您可以通过自定义角色授予更具体的一组权限。

创建自定义角色

您可以在组织中创建自定义角色,然后将其应用于组织中的任何结算账号。IAM 文档中的创建和管理自定义角色一文介绍了如何配置自定义角色,包括哪些权限是必要的。

创建自定义角色后,您可以像授予标准的预定义角色一样向用户授予自定义角色。了解如何更新结算权限

自定义角色示例

想象一下,如果您想让某人能够修改费用管理功能,例如预算提醒和账单导出。相关权限为:

  • billing.budgets.create
  • billing.budgets.update
  • billing.accounts.updateUsageExportSpec

要通过预定义角色应用这些权限,您需要授予结算账号管理员角色。但是,该角色还包括删除资源关联、退订和关闭结算账号的权限。如果您不希望用户拥有这些权限,则可以创建仅包含上述三项权限的自定义角色,然后将其命名为“Cost Management Administrator”。然后,您就可以将该自定义角色与 Billing Account Viewer 角色一起应用于应该具有广泛的费用管理权限但无法修改其他账号属性的任何用户。

权限关联和继承

您可以授予结算账号级或项目级结算权限。大多数结算权限属于结算账号,因此包含这些权限的角色应与结算账号相关联。其他结算权限属于项目,需要与项目相关联,而不是结算账号。

例如,如需将项目与结算账号关联,您需要获得该结算账号的 billing.resourceAssociations.create 权限以及项目的 resourcemanager.projects.createBillingAssignment 权限。这是因为项目所有者控制访问的操作需要项目权限,而结算账号管理员控制访问的操作需要结算账号权限。当两种操作均涉及时,就需要两种权限。

就像其他 IAM 权限一样,所有结算权限都是从更高级别的结算层次结构继承。例如,组织中具有 billing.accounts.close 权限的角色的用户可以关闭该组织内的任何结算账号。但是,某些权限仅适用于更高级别。例如,如果将 billing.accounts.list 权限应用于个别结算账号,则该权限无法执行任何操作,但组织中具有 billing.accounts.list 权限的角色的用户可以列出该组织内的所有结算账号。

结算活动

下表介绍了常见的结算活动、执行这些活动所需的权限以及这些权限适用的资源。

账号管理

操作 权限 资源
获取基本账号信息(例如账号名称、货币、未结/已结) billing.accounts.get 结算账号
从免费试用升级 billing.accounts.update 结算账号
重命名账号 billing.accounts.update 结算账号
更改采购订单编号 billing.accounts.update 结算账号
关闭账号 billing.accounts.close 结算账号
重新打开已关闭的账号 billing.accounts.reopen 结算账号

结算账号层次结构

操作 权限 资源
列出组织中的账号 billing.accounts.list 组织
在组织中创建账号 billing.accounts.create 组织
将账号移入组织 billing.accounts.create 组织
billing.accounts.move 结算账号
在组织之间移动账号 billing.accounts.removeFromOrganization 旧组织
billing.accounts.create 新组织
billing.accounts.move 结算账号

付款信息

付款资料包括客户名称、地址和付款方式。

操作 权限 资源
查看付款资料 billing.accounts.getPaymentInfo 结算账号
更新付款资料 billing.accounts.updatePaymentInfo 结算账号
仅查看已产生使用量的 SKU 的价格 billing.accounts.getPricing 结算账号
查看结算账号的每个 SKU 的定制合同价格 billing.accounts.getPricing 结算账号
查看结算账号的费用和使用情况* billing.accounts.getSpendingInformation 结算账号
查看项目的费用和使用情况* billing.resourceCosts.get 项目
resourcemanager.projects.get 项目

资源关联

在结算账号之间移动项目需要具有将其从原结算账号中移除的权限,并将其与新账号相关联。

操作 权限 资源
查看项目关联 billing.resourceAssociations.list 结算账号
resourcemanager.projects.get 项目
将项目与结算账号相关联 billing.resourceAssociations.create 结算账号
resourcemanager.projects.createBillingAssignment 项目
从结算账号中移除项目 billing.resourceAssociations.delete 结算账号
resourcemanager.projects.deleteBillingAssignment 项目

预算和支出提醒

操作 权限 资源
查看 Cloud Billing 账号的预算列表 billing.budgets.get 结算账号
billing.budgets.list 结算账号
更新范围限定为 Cloud Billing 账号的预算 billing.budgets.update 结算账号
为 Cloud Billing 账号创建预算 billing.budgets.create 结算账号
查看范围限定为单个项目的预算列表 resourcemanager.projects.get 项目
billing.resourceCosts.get 项目
billing.resourcebudgets.read 项目
更新范围限定为单个项目的预算 resourcemanager.projects.get 项目
billing.resourceCosts.get 项目
billing.resourcebudgets.read 项目
billing.resourcebudgets.write 项目
创建范围限定为单个项目的预算 resourcemanager.projects.get 项目
billing.resourceCosts.get 项目
billing.resourcebudgets.read 项目
billing.resourcebudgets.write 项目

赠金和促销

操作 权限 资源
查看赠金列表,包括原有金额和余额 billing.credits.list 结算账号
兑换促销代码 billing.accounts.redeemPromotion 结算账号
billing.accounts.update 结算账号

政策

政策定义了哪些用户有权访问结算账号中的哪些资源。要了解如何创建或修改自定义角色,请参阅上面的创建自定义角色部分。

操作 权限 资源
查看账号中的角色,包括关联的用户名 billing.accounts.getIamPolicy 结算账号
向账号中的用户授予角色 billing.accounts.setIamPolicy 结算账号

导出规范

导出规范定义要将所有与用量相关的数据副本发送到哪个位置,还可能包含 BigQuery 数据集的名称。

操作 权限 资源
查看当前导出规范(要将使用情况数据导出到的 Cloud Storage 存储桶或 BigQuery 数据集) billing.accounts.getUsageExportSpec 结算账号
修改导出规范 billing.accounts.updateUsageExportSpec 结算账号