Control de acceso

Puedes configurar el control de acceso con funciones en el nivel del proyecto. Asigna una función a un miembro de proyecto o cuenta de servicio para determinar el nivel del acceso a tu proyecto de Google Cloud Platform y sus recursos. Según la configuración predeterminada, todos los proyectos de Google Cloud Platform vienen con 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 de proyecto.

Control de acceso para usuarios

Puedes agregar usuarios como miembros del equipo a tu proyecto y asignarles funciones con la Administración de identidades y accesos (IAM).

Cloud Functions admite las funciones básicas 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.
  • Lector: acceso de solo lectura a las funciones y ubicaciones. Permite a los usuarios crear una lista de funciones y ver sus detalles, pero no les permite ver el código fuente. Acceso adicional a otros recursos del proyecto.

Cloud Functions también admite las funciones seleccionadas Desarrollador y Visualizador de Cloud Functions, que otorgan los siguientes permisos:

  • Programador: 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.
  • Lector: acceso de solo lectura a las funciones y ubicaciones. Permite a los usuarios crear una lista de funciones y ver sus detalles, pero no les permite ver el código fuente. Sin acceso a otros recursos del proyecto.

Cuenta de servicio del entorno de ejecución

En el entorno de ejecución, Cloud Functions tiene como configuración predeterminada el uso de la cuenta de servicio predeterminada de App Engine (PROJECT_ID@appspot.gserviceaccount.com), que tiene la función de Editor en el proyecto. Puedes cambiar las funciones de esta cuenta de servicio a fin de limitar o extender los permisos para tus funciones en ejecución. También puedes cambiar la cuenta de servicio que se usa con solo proporcionar una cuenta de servicio no predeterminada con base en cada función.

Para obtener más información sobre las cuentas de servicio, consulta la documentación de las cuentas de servicio.

Cuenta de servicio de Cloud Functions

Para las acciones administrativas de tu proyecto durante la creación, actualización o eliminación de funciones, el servicio de Cloud Functions usa la cuenta de servicio del agente de servicio de Google Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com).

Según la configuración predeterminada, la cuenta de servicio tiene la función cloudfunctions.serviceAgent en tu proyecto. La creación, actualización y eliminación de funciones puede fallar si cambias los permisos de esta cuenta.

La función cloudfunctions.serviceAgent tiene los siguientes permisos:

Permisos Descripción
pubsub.subscriptions.* Administrar las suscripciones en el proyecto del usuario
pubsub.topics.create Crear un tema nuevo una vez que se implemente la función
pubsub.topics.attachSubscription Adjuntar la suscripción a un tema existente
pubsub.topics.get Obtener el tema existente en el cual se debería activar la función
iam.serviceAccounts.actAs Ejecutar la función como la cuenta de servicio del entorno de ejecución
iam.serviceAccounts.{getAccessToken, signBlob} Capacidad para obtener credenciales de la cuenta de servicio del entorno de ejecución
resourcemanager.projects.getIamPolicy Determinar el origen de la función
firebasedatabase.instances.{get, update} Crear funciones activadas por Firebase Realtime Database
storage.buckets.{get, update},
resourcemanager.projects.get
Crear funciones activadas por un depósito de Cloud Storage

Puedes restablecer esta cuenta de servicio a la función predeterminada con solo quitar cualquier función que tenga actualmente y agregar la función 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 obtienes errores de permisos cuando implementas, actualizas, borras o ejecutas funciones en tu proyecto, asegúrate de lo siguiente:

  • Tener la función Editor o Propietario en el proyecto o estar usando la función de Desarrollador de Cloud Functions. Si estás usando la función de Desarrollador de Cloud Functions, asegúrate de haberle otorgado al usuario la función de Usuario de cuenta de servicio de IAM.
  • La cuenta de servicio de Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) debe tener la función cloudfunctions.serviceAgent en el proyecto.
  • Tener permisos para las fuentes de activación, como Pub/Sub o el depósito de Cloud Storage que activan la función.

Si recibes un error que indica “permisos insuficientes” o tienes otros problemas de autenticación cuando ejecutas tus funciones, asegúrate de que la cuenta de servicio del entorno de ejecución cuente con los permisos correctos para acceder a los recursos que tu función necesita y, luego, sigue los pasos 2 y 3 anteriores.

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. En esta conversación en Stack Overflow, se analiza cómo volver a crear esta cuenta de servicio si se borró.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Functions