Control de acceso con IAM (1ª gen.)
Tú, es decir, la cuenta de usuario o servicio que implementa la función, puedes configurar el control de acceso con roles a nivel del proyecto. Asigna un rol a un miembro del proyecto o a una cuenta de servicio para determinar el nivel del acceso a tu proyecto deGoogle Cloud y a sus recursos. De forma predeterminada, todos los proyectos de Google Cloud incluyen un solo usuario, es decir, el creador original del proyecto. Ningún otro usuario tiene acceso al proyecto y, por lo tanto, tampoco a las funciones, hasta que se agrega un usuario como un miembro del equipo del proyecto.
Control de acceso para usuarios
Puedes agregar usuarios como miembros del equipo a tu proyecto y asignarles roles con Identity and Access Management (IAM).
Cloud Run Functions admite los roles básicos de editor, propietario y visualizador, que otorgan los siguientes permisos:
- Editor y propietario: acceso de lectura y escritura a todos los recursos relacionados con las funciones. Permite a los usuarios implementar, actualizar y borrar funciones. Acceso adicional a otros recursos del proyecto
- Visualizador: acceso de solo lectura a las funciones y ubicaciones. Permite a los usuarios enumerar funciones y ver sus detalles, pero no les permite ver el código fuente. Acceso adicional a otros recursos del proyecto
Cloud Run Functions también admite los roles predefinidos de desarrollador y visualizador de Cloud Run Functions, que otorgan los siguientes permisos:
- Desarrollador: acceso de lectura y escritura a todos los recursos relacionados con las funciones. Permite a los usuarios implementar, actualizar y borrar funciones. Sin acceso a otros recursos del proyecto
- Visualizador: acceso de solo lectura a las funciones y ubicaciones. Permite a los usuarios enumerar funciones y ver sus detalles, pero no les permite ver el código fuente. Sin acceso a otros recursos del proyecto
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 para 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 | Función |
|---|---|---|
| Cuenta de servicio predeterminada de App Engine | PROJECT_ID@appspot.gserviceaccount.com |
Editor |
| Agente de servicio de Google Cloud Run Functions | service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com |
Agente de servicio de Cloud Run Functions |
| — | 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 tiene como configuración predeterminada
el uso de la cuenta de servicio predeterminada de App Engine (PROJECT_ID@appspot.gserviceaccount.com),
que tiene el rol de editor en el proyecto. Puedes cambiar el rol de estas cuentas
de servicio para limitar o extender los permisos de tus funciones en ejecución. También puedes
cambiar la cuenta de servicio que se usa
brindando una cuenta de servicio individual no predeterminada.
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 Run 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 de Cloud Build básica (
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 Run Functions
De forma predeterminada, la cuenta de servicio del agente de servicio de Google Cloud Run 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 almacena 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. |
cloudfunctions.functions.invoke |
Invoca una función de HTTP protegida por IAM. |
compute.globalOperations.get,compute.networks.access,vpcaccess.connectors.{get, use} |
Aprovisiona funciones con acceso a la VPC de proyectos del consumidor. |
firebasedatabase.instances.{get, update} |
Crea funciones activadas por Firebase Realtime Database. |
iam.serviceAccounts.{actAs, getAccessToken, signBlob} |
Tiene la capacidad para obtener credenciales de la 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. |
storage.buckets.{get, update} |
Configura notificaciones en un bucket de Cloud Storage que activen una función. |
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
Puedes restablecer esta cuenta de servicio al rol predeterminado con solo quitar cualquier rol que tenga actualmente y agregar el de agente de servicio de Cloud Run 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 propietario en el proyecto, o de que estés usando el rol de desarrollador de Cloud Run Functions.
Si usas el rol de desarrollador de Cloud Run Functions a nivel del proyecto, asegúrate de haber otorgado al usuario el rol de usuario de la cuenta de servicio de IAM.
Solo se permiten los permisos de ejecución a nivel de cada función.
Verifica que la cuenta de servicio del agente de servicio de Cloud Run Functions (
service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) tenga el rol cloudfunctions.serviceAgent en el proyecto.Asegúrate de que la casilla Incluir asignaciones de roles proporcionadas 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 “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; luego, sigue los pasos 2 y 3.
Si recibes un error “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.