Protege tu función de Cloud Run
En esta página, se proporciona una descripción general de alto nivel de las formas en las que puedes controlar las interacciones con tus recursos de funciones de Cloud Run.
Control de acceso
Existen dos enfoques para controlar el acceso a las funciones de Cloud Run:
Protege el acceso con identidad
Una forma de controlar el acceso a una función es requerir que la entidad solicitante se identifique mediante una credencial. Una credencial es un “nombre” de algún tipo, protegido por un Secret al que la entidad conoce o tiene acceso, como una contraseña o una llave de hardware. Según la configuración predeterminada, las funciones se implementan como privadas y requieren esa credencial, aunque es posible implementar una función como pública, es decir, no requiere credenciales.
El primer paso del proceso es validar la credencial para asegurarse de que el solicitante sea quien dice ser y que presente el nombre y la combinación secreta correctos. Este paso se llama (Authentication
).
Una vez que se autentica la identidad del solicitante, se puede evaluar su nivel de acceso, es decir, los permisos que se le otorgaron a la identidad. Este paso se llama (Authorization
).
Autenticación
Las funciones de Cloud Run admiten dos tipos diferentes de identidades, que también se llaman principales:
- Cuentas de servicio: Estas son cuentas especiales que actúan como la identidad de una entidad que no es una persona, como una función, una aplicación o una VM. Te brindan una forma de autenticar a las entidades que no son personas.
- Cuentas de usuario: Estas cuentas representan personas, ya sea como titulares de cuentas de Google individuales o como parte de una entidad controlada por Google, como un Grupo de Google.
Tanto para las cuentas de servicio como para las cuentas de usuario, la parte del nombre de la credencial suele ser una dirección de correo electrónico asociada con la cuenta. Por lo general, el Secret de una cuenta de usuario es una contraseña y, el de una cuenta de servicio suele ser la clave privada del par de claves que se crea junto con la cuenta.
Sin embargo, las contraseñas de usuarios y las claves de las cuentas de servicio son muy potentes, ya que pueden proporcionar acceso amplio a los datos y la funcionalidad, y permanecen vigentes hasta que se revocan o cambian de forma activa. Por lo tanto, para limitar el posible daño que podría ocurrir si se filtra la credencial, en Google Cloud, esta credencial principal se reemplaza por una credencial a corto plazo basada en ella, un token, uno que tiene una vida útil limitada y se crea en el momento como parte de la secuencia de solicitud. El token se pasa con la solicitud y se usa para autenticar la cuenta de forma segura.
Existen dos tipos de tokens que se usan en funciones de Cloud Run: tokens de acceso y tokens de ID. Por lo general, los tokens de acceso se usan para autenticar las llamadas a la API, y los tokens de ID se usan para autenticar las llamadas al código creado por el desarrollador, por ejemplo, si una función llama a otra función. Los tokens se crean mediante el framework de OAuth 2 y su extensión, Open Identity Connect, pero la secuencia es compleja y propensa a errores, y se recomienda el uso de las bibliotecas cliente de Cloud para administrar el proceso.
Autorización
Una vez que se confirme la identidad de la entidad solicitante, se debe evaluar lo que el solicitante tiene permitido hacer. Esta evaluación se basa en los permisos que se le otorgaron a la cuenta autenticada cuando se configuró. Las funciones de Cloud Run usan Identity and Access Management (IAM) para hacer esto. Los roles, que son conjuntos de permisos individuales agrupados para mayor comodidad, se asignan a la cuenta directamente o mediante una configuración llamada política. Cada permiso individual del conjunto de roles suele corresponder a una sola llamada a la API de REST que el servicio solicitado expone. Para obtener más información sobre este proceso, consulta Autoriza el acceso a través de IAM.
Control de acceso basado en la red
También puedes limitar el acceso si especificas la configuración de red para funciones individuales. Esto permite un control preciso sobre la entrada y salida de la red hacia y desde tus funciones.
Aislamiento y zona de pruebas
De forma interna, las instancias de función están aisladas entre sí mediante la plataforma de zona de pruebas gVisor. Por diseño, una función no puede acceder a los entornos operativos de otras funciones.
Actualizaciones del entorno de ejecución
Google hace que los parches de seguridad y las actualizaciones de mantenimiento estén disponibles después de un período de pruebas de estabilidad. Las funciones de Cloud Run podrían aplicar actualizaciones a otros aspectos del entorno de ejecución, como el sistema operativo o los paquetes incluidos. Estas actualizaciones ayudan a mantener seguro el entorno de ejecución de la función.
Actualizaciones de seguridad de las funciones de Cloud Run
Puedes elegir una de las siguientes políticas de actualización de seguridad:
Actualizaciones automáticas (predeterminadas): Las actualizaciones y los parches de seguridad del entorno de ejecución se publican en versiones nuevas de la imagen del entorno de ejecución. Después de un período de prueba de estabilidad y confiabilidad, el entorno de ejecución actualizado se implementa en todas las funciones, lo que da como resultado una actualización sin tiempo de inactividad. Las actualizaciones automáticas de seguridad están disponibles con las funciones de Cloud Run (1ª gen.) y funciones de Cloud Run. Para implementar correcciones de seguridad a nivel del lenguaje, es posible que debas volver a compilar funciones que usen lenguajes compilados, como Go o Java.
Actualizaciones de implementación: Las actualizaciones y los parches de seguridad se aplican a los entornos de ejecución solo cuando se implementan o vuelven a implementar funciones, a menos que se indique lo contrario. Las actualizaciones en la implementación están disponibles en las funciones de Cloud Run (1ª gen.) y funciones de Cloud Run.
La política de actualización del entorno de ejecución se puede cambiar con la marca --runtime-update-policy
en el comando gcloud deploy
.
Para obtener más información sobre las actualizaciones de seguridad del entorno de ejecución, consulta las políticas de actualización de seguridad.