Controlo de acesso para APIs Cloud Billing

Google Cloud oferece Identity and Access Management (IAM), que lhe permite conceder acesso a Google Cloud recursos específicos, mas não a outros. O IAM permite-lhe adotar o princípio de segurança do menor privilégio, pelo que concede apenas o acesso necessário aos seus recursos.

O IAM permite-lhe controlar quem (utilizadores) tem que acesso (funções) a que recursos definindo políticas de autorização do IAM. As políticas de permissão concedem funções específicas a um utilizador, o que lhe dá as autorizações nessas funções.

Esta página explica as funções do IAM disponíveis para as APIs Google Cloud Billing. Por exemplo, pode usar o IAM para conceder funções, como Gestor de custos da conta de faturação ou Leitor da conta de faturação, numa conta do Cloud Billing. Para uma descrição detalhada do IAM e das respetivas funcionalidades, consulte a documentação do IAM. Em particular, consulte os artigos Faça a gestão do acesso a projetos, pastas e organizações e Faça a gestão do acesso a outros recursos.

Autorizações e funções

Para um utilizador ver os detalhes da conta do Cloud Billing na Google Cloud consola ou para um método da API Cloud Billing devolver informações da conta do Cloud Billing, o utilizador ou o autor da chamada tem de ter as autorizações necessárias.

Autorizações necessárias para a API Cloud Billing Catalog

Não são necessárias autorizações para usar a API Cloud Billing Catalog (lista de serviços e lista de SKUs). Todos os dados devolvidos por esta API são públicos.

Autorizações necessárias para a API Cloud Billing Budget

A tabela seguinte descreve as autorizações necessárias para chamar cada método da API Google Cloud Billing Budget. Também estão incluídas as funções de faturação padrão do IAM que concedem automaticamente essas autorizações.

Método da API Autorização necessária Função de IAM que concede autorizações
GetBudget Para obter os detalhes de um orçamento, o autor da chamada tem de ter a autorização billing.budgets.get na conta do Cloud Billing do orçamento.

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

Administrador da conta de faturação, Gestor de custos da conta de faturação ou Leitor da conta de faturação na conta do Cloud Billing do orçamento.

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

ListBudgets Para devolver uma lista de orçamentos aplicados a uma conta do Cloud Billing, o autor da chamada tem de ter a autorização billing.budgets.list na conta do Cloud Billing.

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

Administrador da conta de faturação, Gestor de custos da conta de faturação ou Leitor da conta de faturação na conta do Cloud Billing do orçamento.

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

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

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

Administrador da conta de faturação ou gestor de custos da conta de faturação do orçamento.

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

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

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

Administrador da conta de faturação ou gestor de custos da conta de faturação do orçamento.

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

DeleteBudget Para eliminar um orçamento existente, o autor da chamada tem de ter a autorização billing.budgets.delete na conta do Cloud Billing do orçamento.

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

Administrador da conta de faturação ou gestor de custos da conta de faturação do orçamento.

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

Autorizações necessárias para a API Cloud Billing Account

A tabela seguinte lista as autorizações necessárias para chamar cada método da API Cloud Billing Account, bem como as funções do IAM para o Cloud Billing que incluem essas autorizações.

Método da API Autorizações necessárias Funções de IAM que incluem autorização
billingAccounts.create O método é usado para criar subcontas de faturação do Google Cloud. O autor da chamada tem de ter billing.accounts.update na conta do Cloud Billing principal da subconta. Administrador da conta de faturação
billingAccounts.get billing.accounts.get numa conta do Cloud Billing. Administrador da conta de faturação, gestor de custos da conta de faturação, visualizador da conta de faturação ou utilizador da conta de faturação
billingAccounts.list Nenhum. Este método devolve todas as contas às quais o autor da chamada tem autorização de acesso. Administrador da conta de faturação, Gestor de custos da conta de faturação, Leitor da conta de faturação ou Utilizador da conta de faturação nas contas do Cloud Billing, ou Gestor de faturação do projeto nos projetos.
billingAccounts.getIamPolicy billing.accounts.getIamPolicy numa conta do Cloud Billing. Administrador da conta de faturação, gestor de custos da conta de faturação, visualizador da conta de faturação ou utilizador da conta de faturação
billingAccounts.setIamPolicy billing.accounts.setIamPolicy numa conta do Cloud Billing. Administrador da conta de faturação
billingAccounts.testIamPermissions Nenhum. Este método é usado para determinar as autorizações que um autor da chamada tem numa conta de faturação do Google Cloud. N/A
billingAccounts.patch billing.accounts.update numa conta do Cloud Billing. Administrador da conta de faturação
billingAccounts.projects.list billing.resourceAssociations.list numa conta do Cloud Billing. Administrador da conta de faturação, gestor de custos da conta de faturação ou leitor da conta de faturação
projects.getBillingInfo resourcemanager.projects.get no projeto.
Para mais informações, consulte o artigo Controlo de acesso para projetos.
Proprietário do projeto, editor do projeto ou leitor do projeto
projects.updateBillingInfo billing.resourceAssociations.create na conta do Cloud Billing E resourcemanager.projects.createBillingAssignment no projeto. Administrador da conta de faturação ou utilizador da conta de faturação E gestor de faturação do projeto

Funções

Não concede autorizações diretamente aos utilizadores. Em vez disso, concede-lhes funções, que têm uma ou mais autorizações incluídas.

Pode conceder uma ou mais funções no mesmo recurso.

A tabela seguinte lista as funções de IAM que pode conceder para aceder às APIs Cloud Billing, a descrição do que a função faz e as autorizações incluídas nessa função. Algumas destas funções também incluem autorizações para outros Google Cloud serviços.

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

  • billing.anomalies.get
  • billing.anomalies.list
  • billing.anomalies.submitFeedback

billing.anomaliesConfigs.*

  • billing.anomaliesConfigs.get
  • billing.anomaliesConfigs.update

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.carbonViewer)

billing.accounts.get

billing.accounts.getCarbonInformation

billing.accounts.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.anomalies.get

billing.anomalies.list

billing.anomaliesConfigs.*

  • billing.anomaliesConfigs.get
  • billing.anomaliesConfigs.update

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.projectCostsManager)

When granted in conjunction with cost view permissions on projects, provides access to billing information scoped to the projects to which the user has cost access.

Lowest-level resources where you can grant this role:

  • Billing Account

billing.accounts.getIamPolicy

billing.accounts.getSpendingInformationScoped

billing.costRecommendations.listScoped

(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.anomalies.get

billing.anomalies.list

billing.anomaliesConfigs.get

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

Tenha em atenção que as funções roles/billing.admin, roles/billing.costsManager, roles/billing.viewer e roles/billing.projectManager também incluem autorizações para outros serviços Google Cloud .