Cloud Billing Budget API のアクセス制御

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

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

このページでは、Cloud Billing API で使用できる Identity and Access Management のロールについて説明します。たとえば、IAM を使用して Cloud 請求先アカウントの管理者、ユーザー、プロジェクト マネージャーなどのロールを付与できます。IAM とその機能の詳しい説明については、Identity and Access Management デベロッパー ガイドをご覧ください。特に、アクセス権の付与、変更、取り消しに関するセクションをご覧ください。

権限とロール

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

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 請求先アカウントに対する請求先アカウント管理者または請求先アカウントの費用管理者。

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

ロール

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

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

次の表に、Cloud Billing API にアクセスするために付与できる標準の IAM 請求ロール、ロールの説明、そのロールに含まれる権限を示します。

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.licensePools.*

  • consumerprocurement.licensePools.assign
  • consumerprocurement.licensePools.enumerateLicensedUsers
  • consumerprocurement.licensePools.get
  • consumerprocurement.licensePools.unassign
  • consumerprocurement.licensePools.update

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 サービスに対する権限も含まれます。