Proteger una función de Cloud Run
En esta página se ofrece una descripción general de las formas en las que puedes controlar las interacciones con los recursos de tus funciones de Cloud Run.
Control de acceso
Hay dos formas de controlar el acceso a las funciones de Cloud Run:
Proteger el acceso con la identidad
Una forma de controlar el acceso a una función es requerir que la entidad que realiza la solicitud se identifique mediante una credencial. Una credencial es un "nombre" de algún tipo, protegido por un secreto que la entidad conoce o al que tiene acceso, como una contraseña o un dispositivo de hardware. De forma predeterminada, las funciones se implementan como privadas y requieren una credencial de este tipo, aunque es posible implementar una función como pública, es decir, sin necesidad de una credencial.
El primer paso del proceso es validar la credencial para asegurarse de que el solicitante es quien dice ser y de que presenta la combinación correcta de nombre y secreto. Este paso se denomina (Authentication
).
Una vez que se ha autenticado la identidad del solicitante, se puede evaluar su nivel de acceso y los permisos que se le han concedido. Este paso se denomina Authorization
.
Autenticación
Cloud Run Functions admite dos tipos de identidades, también llamadas principales:
- Cuentas de servicio: se trata de cuentas especiales que sirven como identidad de una entidad que no es una persona, como una función, una aplicación o una máquina virtual. Te permiten autenticar a estas entidades no personales.
- Cuentas de usuario: estas cuentas representan a 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 en las cuentas de servicio como en las de usuario, la parte del nombre de la credencial suele ser una dirección de correo asociada a la cuenta. El secreto de una cuenta de usuario suele ser una contraseña, mientras que 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 los usuarios y las claves de las cuentas de servicio son muy potentes, ya que pueden proporcionar un acceso amplio a datos y funciones, y siguen siendo eficaces hasta que se revocan o cambian de forma activa. Por lo tanto, para limitar los posibles daños que podrían producirse si se filtraran las credenciales, en Google Cloud esta credencial principal se sustituye por una credencial a corto plazo basada en ella, un token, que tiene un tiempo de vida limitado y se crea sobre la marcha como parte de la secuencia de solicitudes. El token se transmite con la solicitud y sirve para autenticar la cuenta de forma segura.
En Cloud Run Functions se usan dos tipos de tokens: tokens de acceso y tokens de ID. Los tokens de acceso se suelen usar para autenticar llamadas a la API, y los tokens de ID se usan para autenticar llamadas a código creado por desarrolladores. Por ejemplo, si una función llama a otra función. Los tokens se crean con el marco de OAuth 2 y su extensión, Open Identity Connect, pero la secuencia es compleja y propensa a errores, por lo que se recomienda usar las bibliotecas de cliente de Cloud para gestionar el proceso.
Autorización
Una vez que se haya confirmado la identidad de la entidad solicitante, se debe evaluar qué puede hacer el solicitante. Esta evaluación se basa en los permisos que se concedieron a la cuenta autenticada cuando se configuró. Las funciones de Cloud Run usan Gestión de Identidades y Accesos (IAM) para ello. Los roles, que son conjuntos de permisos individuales agrupados para mayor comodidad, se asignan a la cuenta directamente o a través de una configuración llamada política. Cada permiso del conjunto de roles suele corresponder a una sola llamada a la API REST expuesta por el servicio solicitado. Para obtener más información sobre este proceso, consulta Autorizar el acceso mediante IAM.
Control de acceso basado en redes
También puedes limitar el acceso especificando ajustes de red para funciones concretas. Esto permite controlar con precisión el tráfico de entrada y salida de la red hacia y desde tus funciones.
Aislamiento y zona de pruebas
Internamente, las instancias de funciones se aíslan 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 pone a disposición parches de seguridad y actualizaciones de mantenimiento después de un periodo de pruebas de estabilidad. Las funciones de Cloud Run pueden 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 tu función.
Actualizaciones de seguridad de Cloud Run Functions
Puedes elegir una de las siguientes políticas de actualizaciones de seguridad:
Actualizaciones automáticas (opción predeterminada): las actualizaciones y los parches de seguridad del entorno de ejecución se publican en nuevas versiones de la imagen del entorno de ejecución. Después de un periodo de pruebas para comprobar la estabilidad y la fiabilidad, el tiempo de ejecución actualizado se implementa en todas las funciones, lo que da como resultado una actualización sin tiempo de inactividad. Las actualizaciones de seguridad automáticas están disponibles en Cloud Functions (1.ª gen.) y Cloud Run Functions. Para aplicar correcciones de seguridad a nivel de idioma, es posible que tengas que volver a compilar las funciones que usen idiomas compilados, como Go o Java.
En las actualizaciones de la implementación: las actualizaciones y los parches de seguridad se aplican a los tiempos de ejecución solo cuando se implementan o se vuelven a implementar las funciones, a menos que se indique lo contrario. Las actualizaciones sobre la implementación están disponibles tanto en Cloud Functions (1.ª gen.) como en Cloud Run Functions.
La política de actualización del tiempo de ejecución se puede cambiar con la --runtime-update-policy
marca en el comando gcloud functions deploy
.
Para obtener más información sobre las actualizaciones de seguridad del entorno de ejecución, consulta las políticas de actualizaciones de seguridad.