Ir al contenido principal
Cybersecurity ensures data protection on internet. Data encryption, firewall, encrypted network, VPN, secure access and authentication defend against malware, hacking, cyber crime and digital threat.

Autenticación segura y sin credenciales a largo plazo en AWS con OpenID Connect y GitHub Actions

La gestión de credenciales y permisos de usuario es un aspecto clave en la seguridad de cualquier sistema. En este artículo explicamos cómo eliminar el uso de credenciales a largo plazo en una plataforma de CI/CD, concretamente GitHub Actions, al autenticarse con Amazon Web Services (AWS) mediante el protocolo OpenID Connect (OIDC).

¿Qué es OpenID Connect?

OpenID Connect (OIDC) es un protocolo de autenticación moderno, basado en el protocolo de autorización OAuth 2.0, que permite verificar la identidad de los usuarios y proporcionar esa información de forma segura y estandarizada con las aplicaciones.

Este protocolo OIDC delega la autenticación en un Proveedor de Identidad (IdP) dedicado. En nuestro caso, GitHub actúa como IdP para AWS, lo que permite ejecutar operaciones de CI/CD, IaC, GitOps u otras automatizaciones desde GitHub Actions sin necesidad de proporcionar credenciales de usuario (nombres de usuario y contraseñas). GitHub garantiza la identidad del origen de los cambios.

Al ejecutar un job, el proveedor OIDC de GitHub proporciona un token JWT, que se presenta al proveedor de nube (AWS). Este token contiene información clave sobre la ejecución, como el nombre del repositorio, la rama, el workflow utilizado, e incluso el usuario que ha lanzado la ejecución. A partir de estos datos, con la configuración adecuada en AWS, es posible autorizar estas ejecuciones para que asuman un rol con permisos específicos.

¿Qué beneficios aporta?

Antes de realizar cualquier cambio en materia de seguridad, conviene entender el valor que aporta. Estas son las principales ventajas de usar OIDC:

  • Credenciales temporales: se elimina la necesidad de gestión y almacenamiento de credenciales, como secretos de larga duración en GitHub, reduciendo el riesgo de filtraciones o usos indebidos.
  • Rotación de credenciales: el token OIDC es válido solo para una ejecución, lo que elimina la necesidad de rotar credenciales manualmente.
  • Principio de mínimo privilegio: si bien es posible aplicar este principio mediante credenciales de usuario, estas tienden a ser reutilizadas para varios sistemas y se suelen configurar con permisos más amplios de lo necesario. Además, es difícil mantener el seguimiento sobre su uso. OIDC permite asignar roles específicos a cada workflow o pipeline, garantizando permisos limitados y que sólo se utiliza en los lugares esperados, y configurarlo con los permisos mínimos necesarios.
  • Escalabilidad: al crecer la infraestructura y el número de flujos de trabajo, la gestión de credenciales puede volverse muy compleja. OIDC simplifica la mayoría de las tareas administrativas, como son la otorgación, rotación y revocación de credenciales de usuario.

 

¿Cómo se adopta OIDC?

Aunque el objetivo de este artículo no es proporcionar una guía detallada, estos son los pasos básicos para implementar OIDC con GitHub Actions y AWS:

Recomendamos gestionar esta configuración mediante Infraestructura como Código (IaC) (por ejemplo, con Terraform), para garantizar trazabilidad, reproducibilidad y escalabilidad para añadir más roles de forma sencilla (por ejemplo, mediante módulos).

Para mayor detalle, seguir los enlaces en los pasos anteriores o ver Referencias.

 

¿Está limitado a GitHub y AWS?

OpenID Connect es un estándar ampliamente adoptado que no se limita al uso de GitHub o AWS. Puede utilizarse para autenticarnos con otros proveedores de nube (como Microsoft Azure o Google Cloud Platform), o para aplicaciones SaaS que lo soporten (como MuleSoft, Salesforce o Confluent). Además de GitHub, también se puede usar con otros IdPs como GitLab, HCP Terraform o Pulumi..

Otro caso de uso muy habitual que quizá ya estés aplicando es Kubernetes. Por un lado, Amazon EKS admite la utilización de proveedores de identidad OpenID Connect (OIDC) como método para autenticar usuarios en su clúster. Por otro lado, las cargas de trabajo que interactúan con recursos de la cuenta AWS, normalmente lo hacen a través de IAM roles for service accounts (IRSA), donde son las cargas de trabajo las que utilizan OIDC para autenticarse en la cuenta.

Si estás utilizando credenciales persistentes para conectar servicios en la nube, vale la pena investigar si estos soportan OIDC. En ese caso, podrías adoptar una solución similar a la descrita en este artículo.

 

Referencias