Cloud Billing API のアクセス制御

Google Cloud には Identity and Access Management(IAM)機能があります。この機能を使用すると、特定の Google Cloud リソースへのアクセスを許可し、他のリソースへのアクセスを防ぐことができます。IAM を使用すると、セキュリティにおける最小権限の原則を導入してリソースに対する必要なアクセス権のみを付与できます。

IAM では、IAM 許可ポリシーを設定して、誰(どのユーザー)に、どのリソースに対するどのアクセス権(ロール)を付与するかを制御できます。許可ポリシーでは、特定のロールをユーザーに割り当てます。これにより、そのロールの権限をユーザーに付与します。

このページでは、Cloud Billing API で使用できる IAM ロールについて説明します。たとえば、IAM を使用して Cloud 請求先アカウントに対するロール(請求先アカウントの費用管理者や請求先アカウント閲覧者など)を付与できます。IAM とその機能の詳細については、IAM のドキュメントをご覧ください。特に、プロジェクト、フォルダ、組織へのアクセスを管理する他のリソースへのアクセスを管理するをご覧ください。

権限とロール

ユーザーが Google Cloud コンソールで Cloud 請求先アカウントの詳細を表示する場合や、Cloud Billing API メソッドで Cloud 請求先アカウントの情報を返す場合は、ユーザーまたは呼び出し元に必要な権限が割り当てられている必要があります。

Cloud Billing Catalog API に必要な権限

Cloud Billing Catalog API(サービスリストと SKU リスト)を使用する権限は必要ありません。この API から返されるデータはすべて公開されます。

Cloud Billing Budget API に必要な権限

次の表に、各 Cloud Billing Budget API メソッドを呼び出す際に必要となる権限の概要を示します。また、これらの権限を自動的に付与する標準の IAM 請求ロールも示します。

API メソッド 必要な権限 権限を付与する IAM ロール
GetBudget 予算の詳細情報を取得するには、呼び出し元に、予算の Cloud 請求先アカウントに対する billing.budgets.get 権限が必要です。

単一プロジェクトの予算の場合、呼び出し元には、請求先アカウントの権限ではなく、resourcemanager.projects.getbilling.resourcebudgets.read の各権限をプロジェクトに対して割り当てます。

予算の Cloud 請求先アカウントに対する請求先アカウント管理者、請求先アカウントの費用管理者、請求先アカウント閲覧者。

単一プロジェクト予算の場合、プロジェクトに対するプロジェクト オーナー、プロジェクト編集者、またはプロジェクト閲覧者。

ListBudgets Cloud 請求先アカウントに適用される予算のリストを返すには、呼び出し元に Cloud 請求先アカウントに対する billing.budgets.list 権限が必要です。

単一プロジェクトの予算の場合、呼び出し元には、請求先アカウントの権限ではなく、resourcemanager.projects.getbilling.resourcebudgets.read の各権限をプロジェクトに対して割り当てます。

予算の Cloud 請求先アカウントに対する請求先アカウント管理者、請求先アカウントの費用管理者、請求先アカウント閲覧者。

単一プロジェクト予算の場合、プロジェクトに対するプロジェクト オーナー、プロジェクト編集者、またはプロジェクト閲覧者。

CreateBudget 新しい予算を作成するには、呼び出し元に予算の Cloud 請求先アカウントに対する billing.budgets.create 権限が必要です。

単一プロジェクトの予算の場合、呼び出し元には、請求先アカウントの権限ではなく、resourcemanager.projects.getbilling.resourcebudgets.readbilling.resourcebudgets.write の各権限をプロジェクトに対して割り当てます。

予算の Cloud 請求先アカウントに対する請求先アカウント管理者または請求先アカウントの費用管理者。

単一プロジェクト予算の場合、プロジェクトに対するプロジェクト オーナーまたはプロジェクト編集者。

UpdateBudget 既存の予算を更新するには、呼び出し元に予算の Cloud 請求先アカウントに対する billing.budgets.update 権限が必要です。

単一プロジェクトの予算の場合、呼び出し元には、請求先アカウントの権限ではなく、resourcemanager.projects.getbilling.resourcebudgets.readbilling.resourcebudgets.write の各権限をプロジェクトに対して割り当てます。

予算の Cloud 請求先アカウントに対する請求先アカウント管理者または請求先アカウントの費用管理者。

単一プロジェクト予算の場合、プロジェクトに対するプロジェクト オーナーまたはプロジェクト編集者。

DeleteBudget 既存の予算を削除するには、呼び出し元に、予算の Cloud 請求先アカウントに対する billing.budgets.delete 権限が必要です。

単一プロジェクトの予算の場合、呼び出し元には、請求先アカウントの権限ではなく、resourcemanager.projects.getbilling.resourcebudgets.readbilling.resourcebudgets.write の各権限をプロジェクトに対して割り当てます。

予算の Cloud 請求先アカウントに対する請求先アカウント管理者または請求先アカウントの費用管理者。

単一プロジェクト予算の場合、プロジェクトに対するプロジェクト オーナーまたはプロジェクト編集者。

Cloud Billing Account API に必要な権限

次の表に、Cloud Billing Account API メソッドを呼び出すために必要な権限と、それらの権限を含む Cloud Billing の IAM ロールを示します。

API メソッド 必要な権限 権限を含む IAM ロール
billingAccounts.create このメソッドは、新しい Cloud 請求先サブアカウントを作成するために使用されます。呼び出し元には、サブアカウントの親 Cloud 請求先アカウントに対する billing.accounts.update が必要です。 請求先アカウント管理者
billingAccounts.get Cloud 請求先アカウントに対する billing.accounts.get 請求先アカウント管理者、請求先アカウントの費用管理者、請求先アカウント閲覧者、請求先アカウント ユーザー
billingAccounts.list なし。このメソッドは、呼び出し元がアクセス権を持っているすべてのアカウントを返します。 請求先アカウント管理者、請求先アカウントの費用管理者、請求先アカウント閲覧者、または Cloud 請求先アカウントの請求先アカウント ユーザー、あるいはプロジェクトのプロジェクト支払い管理者。
billingAccounts.getIamPolicy Cloud 請求先アカウントに対する billing.accounts.getIamPolicy 請求先アカウント管理者、請求先アカウントの費用管理者、請求先アカウント閲覧者、請求先アカウント ユーザー
billingAccounts.setIamPolicy Cloud 請求先アカウントに対する billing.accounts.setIamPolicy 請求先アカウント管理者
billingAccounts.testIamPermissions なし。このメソッドは、呼び出し元が Cloud 請求先アカウントについて所有する権限を判定するために使用されます。 なし
billingAccounts.patch Cloud 請求先アカウントに対する billing.accounts.update 請求先アカウント管理者
billingAccounts.projects.list Cloud 請求先アカウントに対する billing.resourceAssociations.list 請求先アカウント管理者、請求先アカウントの費用管理者、または請求先アカウント閲覧者
projects.getBillingInfo プロジェクトに対する resourcemanager.projects.get
詳細については、プロジェクトのアクセス制御をご覧ください。
プロジェクト オーナー、プロジェクト編集者、またはプロジェクト閲覧者
projects.updateBillingInfo Cloud 請求先アカウントに対する billing.resourceAssociations.create プロジェクトに対する resourcemanager.projects.createBillingAssignment 請求先アカウント管理者または請求先アカウント ユーザー、かつプロジェクト支払い管理者

ロール

ユーザーには権限を直接付与するのではなく、ロールを付与します。ロールには、1 つ以上の権限がバンドルされています。

同じリソースに 1 つ以上のロールを付与できます。

次の表に、Cloud Billing API にアクセスするために付与できる IAM ロール、ロールの説明、そのロールに含まれる権限を示します。これらのロールの一部には、他の Google Cloud サービスに対する権限も含まれます。

Role Permissions

(roles/billing.admin)

Provides access to see and manage all aspects of billing accounts.

Lowest-level resources where you can grant this role:

  • Billing Account

billing.accounts.close

billing.accounts.get

billing.accounts.getCarbonInformation

billing.accounts.getIamPolicy

billing.accounts.getPaymentInfo

billing.accounts.getPricing

billing.accounts.getSpendingInformation

billing.accounts.getUsageExportSpec

billing.accounts.list

billing.accounts.move

billing.accounts.redeemPromotion

billing.accounts.removeFromOrganization

billing.accounts.reopen

billing.accounts.setIamPolicy

billing.accounts.update

billing.accounts.updatePaymentInfo

billing.accounts.updateUsageExportSpec

billing.billingAccountPrice.get

billing.billingAccountPrices.list

billing.billingAccountServices.*

  • billing.billingAccountServices.get
  • billing.billingAccountServices.list

billing.billingAccountSkuGroupSkus.*

  • billing.billingAccountSkuGroupSkus.get
  • billing.billingAccountSkuGroupSkus.list

billing.billingAccountSkuGroups.*

  • billing.billingAccountSkuGroups.get
  • billing.billingAccountSkuGroups.list

billing.billingAccountSkus.*

  • billing.billingAccountSkus.get
  • billing.billingAccountSkus.list

billing.budgets.*

  • billing.budgets.create
  • billing.budgets.delete
  • billing.budgets.get
  • billing.budgets.list
  • billing.budgets.update

billing.credits.list

billing.finOpsBenchmarkInformation.get

billing.finOpsHealthInformation.get

billing.resourceAssociations.*

  • billing.resourceAssociations.create
  • billing.resourceAssociations.delete
  • billing.resourceAssociations.list

billing.subscriptions.*

  • billing.subscriptions.create
  • billing.subscriptions.get
  • billing.subscriptions.list
  • billing.subscriptions.update

cloudasset.assets.searchAllResources

cloudnotifications.activities.list

cloudsupport.properties.get

cloudsupport.techCases.*

  • cloudsupport.techCases.create
  • cloudsupport.techCases.escalate
  • cloudsupport.techCases.get
  • cloudsupport.techCases.list
  • cloudsupport.techCases.update

commerceoffercatalog.*

  • commerceoffercatalog.agreements.get
  • commerceoffercatalog.agreements.list
  • commerceoffercatalog.documents.get
  • commerceoffercatalog.documents.list
  • commerceoffercatalog.offers.get

compute.commitments.*

  • compute.commitments.create
  • compute.commitments.get
  • compute.commitments.list
  • compute.commitments.update
  • compute.commitments.updateReservations

consumerprocurement.accounts.*

  • consumerprocurement.accounts.create
  • consumerprocurement.accounts.delete
  • consumerprocurement.accounts.get
  • consumerprocurement.accounts.list

consumerprocurement.consents.check

consumerprocurement.consents.grant

consumerprocurement.consents.list

consumerprocurement.consents.revoke

consumerprocurement.events.*

  • consumerprocurement.events.get
  • consumerprocurement.events.list

consumerprocurement.orderAttributions.*

  • consumerprocurement.orderAttributions.get
  • consumerprocurement.orderAttributions.list
  • consumerprocurement.orderAttributions.update

consumerprocurement.orders.*

  • consumerprocurement.orders.cancel
  • consumerprocurement.orders.get
  • consumerprocurement.orders.list
  • consumerprocurement.orders.modify
  • consumerprocurement.orders.place

dataprocessing.datasources.get

dataprocessing.datasources.list

dataprocessing.groupcontrols.get

dataprocessing.groupcontrols.list

logging.logEntries.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.privateLogEntries.list

recommender.cloudsqlIdleInstanceRecommendations.get

recommender.cloudsqlIdleInstanceRecommendations.list

recommender.cloudsqlOverprovisionedInstanceRecommendations.get

recommender.cloudsqlOverprovisionedInstanceRecommendations.list

recommender.commitmentUtilizationInsights.*

  • recommender.commitmentUtilizationInsights.get
  • recommender.commitmentUtilizationInsights.list
  • recommender.commitmentUtilizationInsights.update

recommender.computeAddressIdleResourceRecommendations.get

recommender.computeAddressIdleResourceRecommendations.list

recommender.computeDiskIdleResourceRecommendations.get

recommender.computeDiskIdleResourceRecommendations.list

recommender.computeImageIdleResourceRecommendations.get

recommender.computeImageIdleResourceRecommendations.list

recommender.computeInstanceGroupManagerMachineTypeRecommendations.get

recommender.computeInstanceGroupManagerMachineTypeRecommendations.list

recommender.computeInstanceIdleResourceRecommendations.get

recommender.computeInstanceIdleResourceRecommendations.list

recommender.computeInstanceMachineTypeRecommendations.get

recommender.computeInstanceMachineTypeRecommendations.list

recommender.costInsights.*

  • recommender.costInsights.get
  • recommender.costInsights.list
  • recommender.costInsights.update

recommender.costRecommendations.*

  • recommender.costRecommendations.listAll
  • recommender.costRecommendations.summarizeAll

recommender.resourcemanagerProjectUtilizationRecommendations.get

recommender.resourcemanagerProjectUtilizationRecommendations.list

recommender.spendBasedCommitmentInsights.*

  • recommender.spendBasedCommitmentInsights.get
  • recommender.spendBasedCommitmentInsights.list
  • recommender.spendBasedCommitmentInsights.update

recommender.spendBasedCommitmentRecommendations.*

  • recommender.spendBasedCommitmentRecommendations.get
  • recommender.spendBasedCommitmentRecommendations.list
  • recommender.spendBasedCommitmentRecommendations.update

recommender.spendBasedCommitmentRecommenderConfig.*

  • recommender.spendBasedCommitmentRecommenderConfig.get
  • recommender.spendBasedCommitmentRecommenderConfig.update

recommender.usageCommitmentRecommendations.*

  • recommender.usageCommitmentRecommendations.get
  • recommender.usageCommitmentRecommendations.list
  • recommender.usageCommitmentRecommendations.update

resourcemanager.projects.createBillingAssignment

resourcemanager.projects.deleteBillingAssignment

resourcemanager.projects.get

resourcemanager.projects.list

(roles/billing.costsManager)

Manage budgets for a billing account, and view, analyze, and export cost information of a billing account.

Lowest-level resources where you can grant this role:

  • Billing Account

billing.accounts.get

billing.accounts.getIamPolicy

billing.accounts.getSpendingInformation

billing.accounts.getUsageExportSpec

billing.accounts.list

billing.accounts.updateUsageExportSpec

billing.budgets.*

  • billing.budgets.create
  • billing.budgets.delete
  • billing.budgets.get
  • billing.budgets.list
  • billing.budgets.update

billing.resourceAssociations.list

recommender.costInsights.*

  • recommender.costInsights.get
  • recommender.costInsights.list
  • recommender.costInsights.update

(roles/billing.creator)

Provides access to create billing accounts.

Lowest-level resources where you can grant this role:

  • Organization

billing.accounts.create

resourcemanager.organizations.get

(roles/billing.projectManager)

When granted in conjunction with the Billing Account User role, provides access to assign a project's billing account or disable its billing.

Lowest-level resources where you can grant this role:

  • Project

resourcemanager.projects.createBillingAssignment

resourcemanager.projects.deleteBillingAssignment

(roles/billing.user)

When granted in conjunction with the Project Owner role or Project Billing Manager role, provides access to associate projects with billing accounts.

Lowest-level resources where you can grant this role:

  • Billing Account

billing.accounts.get

billing.accounts.getIamPolicy

billing.accounts.list

billing.accounts.redeemPromotion

billing.credits.list

billing.resourceAssociations.create

(roles/billing.viewer)

View billing account cost and pricing information, transactions, and billing and commitment recommendations.

Lowest-level resources where you can grant this role:

  • Billing Account

billing.accounts.get

billing.accounts.getCarbonInformation

billing.accounts.getIamPolicy

billing.accounts.getPaymentInfo

billing.accounts.getPricing

billing.accounts.getSpendingInformation

billing.accounts.getUsageExportSpec

billing.accounts.list

billing.billingAccountPrice.get

billing.billingAccountPrices.list

billing.billingAccountServices.*

  • billing.billingAccountServices.get
  • billing.billingAccountServices.list

billing.billingAccountSkuGroupSkus.*

  • billing.billingAccountSkuGroupSkus.get
  • billing.billingAccountSkuGroupSkus.list

billing.billingAccountSkuGroups.*

  • billing.billingAccountSkuGroups.get
  • billing.billingAccountSkuGroups.list

billing.billingAccountSkus.*

  • billing.billingAccountSkus.get
  • billing.billingAccountSkus.list

billing.budgets.get

billing.budgets.list

billing.credits.list

billing.finOpsBenchmarkInformation.get

billing.finOpsHealthInformation.get

billing.resourceAssociations.list

billing.subscriptions.get

billing.subscriptions.list

commerceoffercatalog.*

  • commerceoffercatalog.agreements.get
  • commerceoffercatalog.agreements.list
  • commerceoffercatalog.documents.get
  • commerceoffercatalog.documents.list
  • commerceoffercatalog.offers.get

consumerprocurement.accounts.get

consumerprocurement.accounts.list

consumerprocurement.consents.check

consumerprocurement.consents.list

consumerprocurement.orderAttributions.get

consumerprocurement.orderAttributions.list

consumerprocurement.orders.get

consumerprocurement.orders.list

dataprocessing.datasources.get

dataprocessing.datasources.list

dataprocessing.groupcontrols.get

dataprocessing.groupcontrols.list

recommender.commitmentUtilizationInsights.get

recommender.commitmentUtilizationInsights.list

recommender.costInsights.get

recommender.costInsights.list

recommender.costRecommendations.*

  • recommender.costRecommendations.listAll
  • recommender.costRecommendations.summarizeAll

recommender.spendBasedCommitmentInsights.get

recommender.spendBasedCommitmentInsights.list

recommender.spendBasedCommitmentRecommendations.get

recommender.spendBasedCommitmentRecommendations.list

recommender.spendBasedCommitmentRecommenderConfig.get

recommender.usageCommitmentRecommendations.get

recommender.usageCommitmentRecommendations.list

なお、roles/billing.adminroles/billing.costsManagerroles/billing.viewerroles/billing.projectManager ロールには、他の Google Cloud サービスに対する権限も含まれます。