Control de acceso para las API de Cloud Billing

Google Cloud ofrece la función de Identity and Access Management (IAM), que te permite otorgar acceso a recursos específicos de Google Cloud, pero no a otros. IAM te permite adoptar el principio de seguridad de privilegio mínimo, de manera que solo otorgas el acceso necesario a tus recursos.

IAM te permite configurar políticas para controlar quién (usuarios) tiene qué acceso (funciones) a qué recursos estableciendo las políticas de permiso de IAM. Las políticas de permiso otorgan funciones específicas a un usuario, que le otorga al usuario los permisos en esas funciones.

En esta página, se explican las funciones de IAM disponibles para las APIs de Cloud Billing. Por ejemplo, puedes usar IAM para asignar funciones, como el administrador de costos de la cuenta de facturación o el visualizador de cuentas de facturación, en una cuenta de Facturación de Cloud. Para obtener una descripción detallada de IAM y sus características, consulta la documentación de IAM. En particular, consulta Administra el acceso a los proyectos, las carpetas y las organizaciones y Administra el acceso a otros recursos.

Permisos y roles

Para que un usuario vea los detalles de la cuenta de facturación de Cloud en la consola de Google Cloud o para que un método de la API de Facturación de Cloud muestre información sobre la cuenta de Facturación de Cloud, el usuario o el emisor deben tener los permisos necesarios.

Permisos necesarios para la API del catálogo de Facturación de Cloud

No se requieren permisos para usar la API del catálogo de Facturación de Cloud (lista de servicios y de SKU). Todos los datos que muestra esta API son públicos.

Permisos necesarios para la API de presupuesto de Facturación de Cloud

En la siguiente tabla, se describen los permisos que son necesarios para llamar a cada método de la API de presupuestos de Facturación de Cloud. También se incluyen los roles estándar de facturación de IAM que otorgan automáticamente esos permisos.

Método de API Permiso necesario Rol de IAM que otorga permisos
GetBudget Para obtener los detalles de un presupuesto, el emisor debe tener el permiso billing.budgets.get en la cuenta de facturación de Cloud del presupuesto.

Para los presupuestos de un solo proyecto, en lugar de los permisos de la cuenta de facturación, el emisor puede tener los siguientes permisos en el proyecto: resourcemanager.projects.get y billing.resourcebudgets.read.

Administrador de cuentas de facturación, Administrador de costos de la cuenta de facturación o Visualizador de cuentas de facturación en la cuenta de facturación de Cloud del presupuesto.

Para presupuestos de un solo proyecto, Propietario del proyecto, Editor del proyecto o Visualizador del proyecto.

ListBudgets Para mostrar una lista de los presupuestos aplicados a una cuenta de facturación de Cloud, el emisor debe tener el permiso billing.budgets.list en la cuenta de facturación de Cloud.

Para los presupuestos de un solo proyecto, en lugar de los permisos de la cuenta de facturación, el emisor puede tener los siguientes permisos en el proyecto: resourcemanager.projects.get y billing.resourcebudgets.read.

Administrador de cuentas de facturación, Administrador de costos de la cuenta de facturación o Visualizador de cuentas de facturación en la cuenta de facturación de Cloud del presupuesto.

Para presupuestos de un solo proyecto, Propietario del proyecto, Editor del proyecto o Visualizador del proyecto.

CreateBudget Para crear un nuevo presupuesto, el emisor debe tener el permiso billing.budgets.create en la cuenta de facturación de Cloud del presupuesto.

Para los presupuestos de un solo proyecto, en lugar de los permisos de la cuenta de facturación, el emisor puede tener los siguientes permisos en el proyecto: resourcemanager.projects.get, billing.resourcebudgets.read y billing.resourcebudgets.write.

Administrador de cuentas de facturación o Administrador de costos de cuentas de facturación en la cuenta de Facturación de Cloud del presupuesto.

Para presupuestos de un solo proyecto, Propietario del proyecto o Editor del proyecto.

UpdateBudget Para actualizar un presupuesto existente, el emisor debe tener el permiso billing.budgets.update en la cuenta de facturación de Cloud del presupuesto.

Para los presupuestos de un solo proyecto, en lugar de los permisos de la cuenta de facturación, el emisor puede tener los siguientes permisos en el proyecto: resourcemanager.projects.get, billing.resourcebudgets.read y billing.resourcebudgets.write.

Administrador de cuentas de facturación o Administrador de costos de cuentas de facturación en la cuenta de Facturación de Cloud del presupuesto.

Para presupuestos de un solo proyecto, Propietario del proyecto o Editor del proyecto.

DeleteBudget Para borrar un presupuesto existente, el emisor debe tener el permiso billing.budgets.delete en la cuenta de facturación de Cloud del presupuesto.

Para los presupuestos de un solo proyecto, en lugar de los permisos de la cuenta de facturación, el emisor puede tener los siguientes permisos en el proyecto: resourcemanager.projects.get, billing.resourcebudgets.read y billing.resourcebudgets.write.

Administrador de cuentas de facturación o Administrador de costos de cuentas de facturación en la cuenta de Facturación de Cloud del presupuesto.

Para presupuestos de un solo proyecto, Propietario del proyecto o Editor del proyecto.

Permisos necesarios para la API de cuentas de facturación de Cloud

En la siguiente tabla, se enumeran los permisos necesarios para llamar a cada método de la API de cuenta de Facturación de Cloud, así como las funciones de IAM para la Facturación de Cloud que incluyen esos permisos.

Método de la API Permisos necesarios Funciones de IAM que incluyen permisos
billingAccounts.create El método se usa para crear nuevas cuentas de facturación secundarias de Cloud. El emisor debe tener billing.accounts.update en la cuenta superior de la cuenta secundaria de facturación de Cloud. Administrador de cuentas de facturación
billingAccounts.get billing.accounts.get en una cuenta de facturación de Cloud. Administrador de cuentas de facturación, Administrador de costos de la cuenta de facturación, Visualizador de cuentas de facturación o Usuario de cuentas de facturación
billingAccounts.list Ninguno Este método muestra todas las cuentas a las que el emisor tiene permiso para acceder. Administrador de cuentas de facturación, Administrador de costos de la cuenta de facturación, Visualizador de cuentas de facturación o Usuario de cuentas de facturación en las cuentas de facturación de Cloud, o Administrador de facturación del proyecto en los proyectos.
billingAccounts.getIamPolicy billing.accounts.getIamPolicy en una cuenta de facturación de Cloud. Administrador de cuentas de facturación, Administrador de costos de la cuenta de facturación, Visualizador de cuentas de facturación o Usuario de cuentas de facturación
billingAccounts.setIamPolicy billing.accounts.setIamPolicy en una cuenta de facturación de Cloud. Administrador de cuentas de facturación
billingAccounts.testIamPermissions Ninguno Este método se usa para determinar los permisos que tiene un emisor en una cuenta de facturación de Cloud. No disponible
billingAccounts.patch billing.accounts.update en una cuenta de facturación de Cloud. Administrador de cuentas de facturación
billingAccounts.projects.list billing.resourceAssociations.list en una cuenta de facturación de Cloud. Administrador de cuentas de facturación, Administrador de costos de la cuenta de facturación o Visualizador de cuentas de facturación
projects.getBillingInfo resourcemanager.projects.get en el proyecto.
Consulta Control de acceso para proyectos a fin de obtener más información.
Propietario, editor o visualizador del proyecto
projects.updateBillingInfo billing.resourceAssociations.create en la cuenta de Facturación de Cloud Y resourcemanager.projects.createBillingAssignment en el proyecto. Administrador de cuentas de facturación o Usuario de cuentas de facturación Y Administrador de facturación del proyecto

Funciones

No se otorgan permisos a los usuarios directamente, sino funciones, que incluyen uno o más permisos.

Puedes otorgar una o más funciones en el mismo recurso.

En la siguiente tabla, se enumeran las funciones de IAM que puedes otorgar para acceder a las API de Facturación de Cloud, la descripción de lo que hace la función y los permisos agrupados en ella. Algunas de estas funciones también incluyen permisos para otros servicios de 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

Ten en cuenta que los roles roles/billing.admin, roles/billing.costsManager, roles/billing.viewer y roles/billing.projectManager también incluyen permisos para otros servicios de Google Cloud.