Controle de acesso para APIs Cloud Billing

O Google Cloud oferece o Identity and Access Management (IAM), que permite conceder acesso a recursos específicos do Google Cloud, mas não a outros. Com o IAM, é possível adotar o princípio de privilégio mínimo de segurança para conceder apenas o acesso necessário aos recursos.

Por meio da definição de políticas do IAM, é possível atribuir papéis aos usuários para que eles acessem recursos específicos. As políticas de autorização concedem papéis específicos a um usuário, o que concede a ele as permissões nesses papéis.

Nesta página, explicamos os papéis do IAM disponíveis para as APIs Cloud Billing. Por exemplo, use o IAM para conceder papéis como gerente de custos da conta de faturamento ou leitor da conta de faturamento em uma conta do Cloud Billing. Para uma descrição detalhada do IAM e dos recursos dele, consulte a documentação do IAM. Consulte especificamente Gerenciar o acesso a projetos, pastas e organizações e Gerenciar o acesso a outros recursos.

Permissões e papéis

Para que um usuário visualize os detalhes da Conta de faturamento do Cloud no Console do Google Cloud ou consulte um método da API Cloud Billing para retornar informações dessa conta, o usuário ou autor da chamada precisa ter as permissões necessárias.

Permissões necessárias para a API Cloud Billing Catalog

Nenhuma permissão é necessária para usar a API Cloud Billing Catalog (lista de serviços e de SKUs). Todos os dados retornados por essa API são públicos.

Permissões obrigatórias para a API Cloud Billing Budget

A tabela a seguir descreve quais permissões são necessárias para chamar cada método da API Cloud Billing Budget. Também estão incluídos os papéis padrão de faturamento do Cloud IAM que concedem essas permissões automaticamente.

Método de API Permissão necessária Papel do IAM que concede permissões
GetBudget Para ver os detalhes de um orçamento, o autor da chamada precisa ter a permissão billing.budgets.get na conta do Cloud Billing do orçamento.

Para orçamentos de projeto único, em vez de permissões de conta de faturamento, o autor da chamada pode ter as seguintes permissões no projeto: resourcemanager.projects.get e billing.resourcebudgets.read.

Administrador da conta de faturamento, Gerente de custos da conta de faturamento ou Leitor da conta de faturamento na conta do Cloud Billing do orçamento.

Para orçamentos de projeto único, Proprietário, Editor ou Visualizador do projeto.

ListBudgets Para retornar uma lista de orçamentos aplicados a uma Conta do Cloud Billing, o autor da chamada precisa ter a permissão billing.budgets.list nessa conta.

Para orçamentos de projeto único, em vez de permissões de conta de faturamento, o autor da chamada pode ter as seguintes permissões no projeto: resourcemanager.projects.get e billing.resourcebudgets.read.

Administrador da conta de faturamento, Gerente de custos da conta de faturamento ou Leitor da conta de faturamento na conta do Cloud Billing do orçamento.

Para orçamentos de projeto único, Proprietário, Editor ou Visualizador do projeto.

CreateBudget Para criar um novo orçamento, o autor da chamada precisa ter a permissão billing.budgets.create na conta do Cloud Billing do orçamento.

Para orçamentos de projeto único, em vez de permissões da conta de faturamento, o autor da chamada pode ter as seguintes permissões no projeto: resourcemanager.projects.get, billing.resourcebudgets.read e billing.resourcebudgets.write de dois minutos.

Administrador da conta de faturamento ou Gerente de custos da conta de faturamento na conta do Cloud Billing do orçamento.

Para orçamentos de projeto único, proprietário ou editor do projeto.

UpdateBudget Para atualizar um orçamento, o autor da chamada precisa ter a permissão billing.budgets.update na conta do Cloud Billing do orçamento.

Para orçamentos de projeto único, em vez de permissões da conta de faturamento, o autor da chamada pode ter as seguintes permissões no projeto: resourcemanager.projects.get, billing.resourcebudgets.read e billing.resourcebudgets.write de dois minutos.

Administrador da conta de faturamento ou Gerente de custos da conta de faturamento na conta do Cloud Billing do orçamento.

Para orçamentos de projeto único, proprietário ou editor do projeto.

DeleteBudget Para excluir um orçamento, o autor da chamada precisa ter a permissão billing.budgets.delete na conta do Cloud Billing do orçamento.

Para orçamentos de projeto único, em vez de permissões da conta de faturamento, o autor da chamada pode ter as seguintes permissões no projeto: resourcemanager.projects.get, billing.resourcebudgets.read e billing.resourcebudgets.write de dois minutos.

Administrador da conta de faturamento ou Gerente de custos da conta de faturamento na conta do Cloud Billing do orçamento.

Para orçamentos de projeto único, proprietário ou editor do projeto.

Permissões necessárias para a API Cloud Billing Account

A tabela a seguir lista as permissões necessárias para chamar cada método da API Cloud Billing Account, bem como os papéis do IAM para o Cloud Billing que incluem essas permissões.

Método de API Permissões necessárias Papéis do IAM que incluem permissão
billingAccounts.create O método é usado para criar novas subcontas do Cloud Billing. O autor da chamada precisa ter billing.accounts.update na conta principal do Cloud Billing da subconta. Administrador da conta de faturamento
billingAccounts.get billing.accounts.get em uma Conta de faturamento do Cloud. Administrador da conta de faturamento, Gerente de custos da conta de faturamento, Leitor da conta de faturamento ou Usuário da conta de faturamento
billingAccounts.list Nenhuma. Este método retorna todas as contas que o autor da chamada tem permissão para acessar. "Administrador da conta de faturamento", "Gerente de custos da conta de faturamento", "Leitor da conta de faturamento" ou "Usuário da conta de faturamento" nas contas do Cloud Billing ou "Gerente de faturamento do projeto" nos projetos.
billingAccounts.getIamPolicy billing.accounts.getIamPolicy em uma Conta de faturamento do Cloud. Administrador da conta de faturamento, Gerente de custos da conta de faturamento, Leitor da conta de faturamento ou Usuário da conta de faturamento
billingAccounts.setIamPolicy billing.accounts.setIamPolicy em uma Conta de faturamento do Cloud. Administrador da conta de faturamento
billingAccounts.testIamPermissions Nenhuma. Este método é usado para determinar as permissões de um autor de chamada em uma conta do Cloud Billing. n/a
billingAccounts.patch billing.accounts.update em uma Conta de faturamento do Cloud. Administrador da conta de faturamento
billingAccounts.projects.list billing.resourceAssociations.list em uma Conta de faturamento do Cloud. Administrador da conta de faturamento, Gerenciador de custos da conta de faturamento ou Leitor da conta de faturamento
projects.getBillingInfo resourcemanager.projects.get no projeto.
Para mais informações, consulte Controle de acesso para projetos.
Proprietário, editor ou visualizador do projeto
projects.updateBillingInfo billing.resourceAssociations.create na conta do Cloud Billing E resourcemanager.projects.createBillingAssignment no projeto. Administrador da conta de faturamento ou usuário da conta de faturamento E Gerente de faturamento do projeto

Papéis

Não é possível conceder permissões diretamente aos usuários. É preciso conceder papéis aos usuários, que têm uma ou mais permissões integradas a eles.

É possível conceder um ou mais papéis no mesmo recurso.

A tabela a seguir lista os papéis do IAM que podem ser concedidos para acessar as APIs do Cloud Billing, a descrição do papel e as permissões incluídas nele. Alguns desses papéis também incluem permissões para outros serviços do 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.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

Os papéis roles/billing.admin, roles/billing.costsManager, roles/billing.viewer e roles/billing.projectManager também incluem permissões para outros serviços do Google Cloud.