Control de acceso para la API de presupuesto de Facturación de Cloud

Google Cloud ofrece Identity and Access Management (IAM), que te permite brindar acceso más detallado a recursos específicos de Google Cloud y evita el acceso no deseado a otros recursos. IAM te permite adoptar el principio de seguridad de menor privilegio, 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. Las políticas de IAM asignan roles específicos a un usuario, lo que le otorga ciertos permisos.

En esta página, se explican los roles de Cloud Identity and Access Management disponibles para las APIs de Facturación de Cloud. Por ejemplo, puedes usar IAM para asignar roles, como administrador, usuario y administrador de proyectos, a una cuenta de facturación de Cloud. Consulta la guía para desarrolladores de Identity and Access Management a fin de obtener una descripción detallada de IAM y sus funciones. Específicamente, revisa la sección sobre cómo otorgar, cambiar y revocar el acceso.

Permisos y funciones

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. En la siguiente tabla, se enumeran los permisos y los roles de IAM necesarios para usar la API de presupuesto de Facturación de Cloud.

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.

Roles

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 los roles estándar de facturación de IAM que puedes otorgar para acceder a las APIs de Facturación de Cloud, la descripción de lo que hace el rol y los permisos agrupados en él.

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.