Control de acceso con la IAM
En esta página, se proporciona información complementaria para usar los roles de Identity and Access Management (IAM)
y establecer controles de acceso a nivel de proyecto, determinar el nivel de
acceso al proyecto de Google Cloud y a las funciones creadas con
los comandos de gcloud functions o la API de Cloud Functions v2.
Si creaste o implementaste funciones con Cloud Run, consulta Control de acceso con la IAM y Roles de Cloud Run para obtener una descripción detallada de los roles predefinidos de Cloud Run, controlar el acceso a servicios individuales, hacer que un servicio sea público o configurar la política de la organización para el invocador de Cloud Run de IAM.
Control de acceso para usuarios
Agrega usuarios como miembros del equipo a tu proyecto y otórgales roles con la IAM.
Cloud Run Functions admite los siguientes roles:
- Roles predefinidos de Cloud Run (recomendado)
- Roles predefinidos de Cloud Functions
- Roles básicos de Editor, Propietario y Visualizador.
Control de acceso para cuentas de servicio
Una cuenta de servicio es un tipo especial de Cuenta deGoogle Cloud que actúa como una identidad para un usuario no humano que necesita autenticarse y tener autorización con el objetivo de acceder a los datos y realizar diversas acciones. Algunas de estas cuentas son creadas y administradas por Google y se conocen como agentes de servicio.
Las siguientes cuentas de servicio se usan para Cloud Run Functions:
| Nombre | ID de miembro | Rol |
|---|---|---|
| Cuenta de servicio predeterminada de Compute Engine | PROJECT_NUMBER-compute@developer.gserviceaccount.com |
Editor |
| Agente de servicio de Google Cloud Functions | service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com |
Agente de servicio de Google Cloud Functions |
| Cuenta de servicio heredada de Cloud Build1 | PROJECT_NUMBER@cloudbuild.gserviceaccount.com |
Cuenta de servicio de Cloud Build |
| Cuenta de servicio de Cloud Build | service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com |
Agente de servicio de Cloud Build |
| Agente de servicio de Google Container Registry | service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com |
Agente de servicio de Container Registry |
| Agente de servicio de Artifact Registry | service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com |
Agente de servicio de Artifact Registry |
Cuentas de servicio del entorno de ejecución
En el entorno de ejecución, Cloud Run Functions usa
de forma predeterminada la cuenta de servicio predeterminada de Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com), que también tiene
el rol de editor en el proyecto. Puedes cambiar los roles de estas cuentas de servicio para limitar o extender los permisos de tus funciones en ejecución. Además,
puedes cambiar la cuenta de servicio que se usa si
evitas la cuenta de servicio predeterminada cuando configures la identidad de servicio.
Para obtener más información sobre las cuentas de servicio, consulta la documentación de las cuentas de servicio.
Cuentas de servicio administrativas
Para realizar acciones administrativas en tu proyecto durante la creación,
actualización o eliminación de funciones, todos los proyectos en Cloud Run Functions
requieren la cuenta de servicio del agente de servicio de Google Cloud Functions
(service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com).
Además, todos los entornos de ejecución realizan la compilación y el almacenamiento de imágenes de contenedor en tu proyecto. Para admitir esto, también debes aprovisionar lo siguiente:
- La cuenta de servicio heredada de Cloud Build1 (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com) - La cuenta de servicio del agente de servicio de Cloud Build (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com) - La cuenta de servicio del agente de servicio de Google Container Registry (
service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com)
Estas cuentas de servicio deben tener los roles enumerados en la tabla anterior.
Cuenta de servicio del agente de servicio de Google Cloud Functions
Según la configuración predeterminada, la cuenta de servicio del agente de servicio de Google Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com tiene el rol cloudfunctions.serviceAgent en el proyecto).
Estos son algunos de los permisos destacados que usa
cloudfunctions.serviceAgent:
| Permiso | Descripción |
|---|---|
roles/artifactregistry.admin |
Administra repositorios y almacenar imágenes de compilación en Artifact Registry. |
roles/cloudbuild.builds.editor |
Es obligatorio para usar Cloud Build y realizar compilaciones en el proyecto del usuario. |
roles/cloudbuild.customworkers.builder |
Crea compilaciones en los trabajadores personalizados de Cloud Build. |
compute.globalOperations.get,compute.networks.access,vpcaccess.connectors.{get, use} |
Aprovisiona funciones con acceso a la VPC de proyectos del consumidor. |
roles/eventarc.developer |
Administra activadores de Eventarc para las funciones. |
firebasedatabase.instances.{get, update} |
Crea funciones activadas por Firebase Realtime Database. |
iam.serviceAccounts.{actAs, getAccessToken, signBlob} |
Es la capacidad para obtener credenciales de cuenta de servicio del entorno de ejecución. |
iam.serviceAccounts.getOpenIdToken |
Se requiere para que el agente obtenga un token de OpenID en una autoridad especificada por el usuario. El token de OpenID se usa con el objetivo de invocar funciones habilitadas para IAM. |
pubsub.subscriptions |
Administra las suscripciones en el proyecto del usuario. |
pubsub.topics |
Administra los temas en el proyecto del usuario. |
roles/run.developer |
Administra el servicio de Cloud Run para funciones. |
storage.buckets.create,storage.objects.{delete, get, create, list} |
Es obligatorio para almacenar el código fuente en el proyecto del usuario. |
Puedes ver todo el conjunto de permisos en roles predefinidos de IAM o ejecutando este comando:
gcloud iam roles describe roles/cloudfunctions.serviceAgent
Para restablecer esta cuenta de servicio al rol predeterminado, quita cualquier rol que tenga actualmente y agrega el rol de agente de servicio de Cloud Functions:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \ --role roles/cloudfunctions.serviceAgent
Soluciona problemas de errores de permisos
Si recibes errores de permisos cuando implementas, actualizas, borras o ejecutas funciones en el proyecto, sigue estos pasos:
Asegúrate de tener el rol de editor o de propietario del proyecto o de que estés usando el rol de desarrollador de Cloud Functions.
Si usas el rol Desarrollador de Cloud Functions a nivel de proyecto, asegúrate también de haber otorgado al usuario el rol Usuario de la cuenta de servicio de IAM.
Por el momento, solo se permiten los permisos de ejecución a nivel de cada función.
Verifica que la cuenta de servicio del agente de servicios de Cloud Functions (
service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) tenga el rol de agente de servicio de Cloud Functions (cloudfunctions.serviceAgent) en el proyecto.Asegúrate de que la casilla Incluye asignaciones de roles brindados por Google en la pestaña Permisos de la página Consola de IAM esté marcada para ver esta cuenta. También puedes usar
gcloud projects add-iam-policy-binding PROJECT_ID.Asegúrate de tener permisos para las fuentes de los activadores, como Pub/Sub o Cloud Storage.
Si recibes un error de “permisos insuficientes” o tienes otros problemas de autenticación cuando ejecutas las funciones, asegúrate de que la cuenta de servicio del entorno de ejecución cuente con los permisos correspondientes para acceder a los recursos que necesitan las funciones y, luego, sigue los pasos 2 y 3.
Si recibes un error que indica “servicio no disponible” durante la implementación, asegúrate de que la cuenta de servicio del entorno de ejecución PROJECT_ID@appspot.gserviceaccount.com exista en tu proyecto. Para volver a crear esta cuenta de servicio si se borró, consulta
Recupera una cuenta de servicio.
Consulta también Soluciona problemas de Cloud Run Functions.
1 Cloud Run Functions solo usa la cuenta de servicio heredada de Cloud Build para los proyectos creados antes de julio de 2024.