{"id":623,"date":"2026-02-26T20:26:01","date_gmt":"2026-02-26T19:26:01","guid":{"rendered":"https:\/\/secure-pipelines.com\/?p=623"},"modified":"2026-03-24T18:42:36","modified_gmt":"2026-03-24T17:42:36","slug":"short-lived-credentials-workload-identity-federation-ci-cd-2","status":"publish","type":"post","link":"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/short-lived-credentials-workload-identity-federation-ci-cd-2\/","title":{"rendered":"Credenciales de Corta Duraci\u00f3n y Workload Identity Federation en Pipelines CI\/CD"},"content":{"rendered":"<h2>Introducci\u00f3n<\/h2>\n<p>Si audita los almacenes de secretos de la mayor\u00eda de las plataformas CI\/CD hoy en d\u00eda, encontrar\u00e1 un cementerio de credenciales de larga duraci\u00f3n: claves de acceso de AWS creadas hace a\u00f1os, claves JSON de cuentas de servicio de GCP compartidas entre docenas de pipelines, Personal Access Tokens de GitHub con alcances amplios y contrase\u00f1as de bases de datos que nunca han sido rotadas. Estos secretos est\u00e1ticos son el vector de ataque m\u00e1s com\u00fan en las vulneraciones de CI\/CD.<\/p>\n<p>La raz\u00f3n es directa. Una credencial de larga duraci\u00f3n es una llave maestra. Una vez que un atacante la obtiene \u2014 a trav\u00e9s de un log filtrado, una dependencia comprometida, un almac\u00e9n de secretos mal configurado o un ataque a la cadena de suministro de la propia plataforma CI \u2014 tiene acceso persistente, a menudo con privilegios excesivos, a la infraestructura de producci\u00f3n. No hay un reloj de expiraci\u00f3n en marcha. No hay una revocaci\u00f3n autom\u00e1tica. El atacante puede usar esa credencial desde cualquier IP, cualquier contexto, durante todo el tiempo que le tome al equipo defensor darse cuenta.<\/p>\n<p>Workload Identity Federation cambia la ecuaci\u00f3n por completo. En lugar de inyectar secretos est\u00e1ticos en las ejecuciones del pipeline, la propia plataforma CI se convierte en un proveedor de identidad. Cada ejecuci\u00f3n del pipeline recibe un token de corta duraci\u00f3n, firmado criptogr\u00e1ficamente, que demuestra <em>qu\u00e9<\/em> se est\u00e1 ejecutando (qu\u00e9 repositorio, qu\u00e9 rama, qu\u00e9 workflow, qu\u00e9 entorno). Los proveedores de nube validan ese token y emiten credenciales temporales con el alcance exacto de los permisos necesarios \u2014 credenciales que expiran en minutos, no en meses.<\/p>\n<p>Esta gu\u00eda recorre el problema en detalle, explica c\u00f3mo funciona Workload Identity Federation a nivel de protocolo, proporciona ejemplos funcionales completos para GitHub Actions y GitLab CI en AWS, GCP y Azure, cubre patrones avanzados e incluye una gu\u00eda pr\u00e1ctica de migraci\u00f3n para equipos listos para eliminar sus secretos de larga duraci\u00f3n.<\/p>\n<h2>El Problema con las Credenciales de Larga Duraci\u00f3n<\/h2>\n<p>Antes de profundizar en la soluci\u00f3n, vale la pena entender exactamente por qu\u00e9 las credenciales de larga duraci\u00f3n son tan peligrosas en contextos de CI\/CD espec\u00edficamente \u2014 no solo en general.<\/p>\n<h3>Sin Expiraci\u00f3n ni Rotaci\u00f3n Autom\u00e1tica<\/h3>\n<p>Una clave de acceso de AWS IAM, una vez creada, es v\u00e1lida para siempre a menos que se revoque expl\u00edcitamente. Una clave JSON de cuenta de servicio de GCP no tiene fecha de expiraci\u00f3n. Un PAT de GitHub puede configurarse para no expirar nunca. En la pr\u00e1ctica, la mayor\u00eda de los equipos crean estas credenciales una vez durante la configuraci\u00f3n inicial y nunca las vuelven a tocar. La edad media de un secreto de CI\/CD en la mayor\u00eda de las organizaciones se mide en a\u00f1os.<\/p>\n<p>Esto significa que incluso si una credencial se filtr\u00f3 hace seis meses, sigue siendo v\u00e1lida hoy. Los atacantes lo saben y escanean rutinariamente repositorios p\u00fablicos, im\u00e1genes Docker y logs de CI en busca de credenciales que pueden haberse expuesto en cualquier momento de la historia.<\/p>\n<h3>Amplio Radio de Impacto<\/h3>\n<p>Las credenciales de CI\/CD tienden a tener privilegios excesivos porque necesitan realizar tareas diversas: construir contenedores, hacer push a registros, desplegar infraestructura, ejecutar migraciones de bases de datos, invalidar cach\u00e9s. En lugar de crear credenciales con alcance limitado para cada tarea, los equipos t\u00edpicamente crean una credencial poderosa y la reutilizan en todas partes. Una sola clave filtrada puede otorgar acceso a bases de datos de producci\u00f3n, infraestructura en la nube y pipelines de despliegue simult\u00e1neamente.<\/p>\n<h3>Dif\u00edcil de Auditar<\/h3>\n<p>Cuando la misma clave de cuenta de servicio se usa en 50 repositorios, 200 pipelines y tres entornos, se vuelve casi imposible responder preguntas b\u00e1sicas de seguridad:<\/p>\n<ul>\n<li>\u00bfQu\u00e9 pipeline hizo esta llamada API a producci\u00f3n a las 3 AM?<\/li>\n<li>\u00bfSe us\u00f3 esta credencial desde un runner CI autorizado o desde la m\u00e1quina de un atacante?<\/li>\n<li>\u00bfQu\u00e9 repositorios a\u00fan dependen de esta clave si necesitamos rotarla?<\/li>\n<\/ul>\n<p>Las credenciales de larga duraci\u00f3n no proporcionan informaci\u00f3n contextual sobre <em>qui\u00e9n<\/em> o <em>qu\u00e9<\/em> las est\u00e1 usando. Cada uso se ve id\u00e9ntico en los logs de auditor\u00eda.<\/p>\n<h3>Almacenadas en los Almacenes de Secretos de la Plataforma CI<\/h3>\n<p>Las plataformas CI como GitHub Actions, GitLab CI y Jenkins almacenan secretos en sus propias b\u00f3vedas. Estos son objetivos valiosos. Una sola brecha en el almac\u00e9n de secretos de la plataforma CI expone cada credencial de cada proyecto. La brecha de CircleCI en enero de 2023 es un ejemplo de libro de texto: los atacantes comprometieron los sistemas internos de CircleCI y exfiltraron los secretos de los clientes, obligando a cada cliente de CircleCI a rotar cada secreto almacenado en la plataforma.<\/p>\n<h3>Brechas en el Mundo Real<\/h3>\n<p>El patr\u00f3n se repite en toda la industria:<\/p>\n<ul>\n<li><strong>Codecov (2021):<\/strong> Los atacantes modificaron el Codecov Bash Uploader para exfiltrar variables de entorno \u2014 incluidos secretos de CI\/CD \u2014 de los pipelines de miles de clientes. Las credenciales de larga duraci\u00f3n almacenadas como variables de entorno fueron enviadas a servidores controlados por los atacantes.<\/li>\n<li><strong>CircleCI (2023):<\/strong> Un laptop comprometido de un empleado llev\u00f3 a la exfiltraci\u00f3n de secretos de clientes del almacenamiento de secretos de CircleCI. Se aconsej\u00f3 a todos los clientes que rotaran todos los secretos inmediatamente.<\/li>\n<li><strong>Travis CI (2021):<\/strong> Una vulnerabilidad expuso secretos de las compilaciones de repositorios p\u00fablicos, incluyendo claves de AWS, tokens de GitHub y credenciales de Docker Hub.<\/li>\n<li><strong>Uber (2022):<\/strong> Un atacante obtuvo acceso a sistemas internos a trav\u00e9s de un pipeline CI\/CD comprometido, aprovechando credenciales hardcodeadas encontradas en scripts de PowerShell.<\/li>\n<\/ul>\n<p>En cada caso, la causa ra\u00edz fue la misma: credenciales de larga duraci\u00f3n almacenadas en entornos CI proporcionaron acceso persistente y con privilegios excesivos que los atacantes pudieron explotar mucho despu\u00e9s del compromiso inicial.<\/p>\n<h2>C\u00f3mo Funciona Workload Identity Federation<\/h2>\n<p>Workload Identity Federation reemplaza las credenciales est\u00e1ticas con un flujo de autenticaci\u00f3n din\u00e1mico basado en tokens, construido sobre OpenID Connect (OIDC). As\u00ed es como funciona a nivel de protocolo.<\/p>\n<h3>El Flujo OIDC<\/h3>\n<p>El flujo de autenticaci\u00f3n involucra tres partes: la plataforma CI (proveedor de identidad), el proveedor de nube (parte confiante) y la ejecuci\u00f3n del pipeline (workload).<\/p>\n<ol>\n<li><strong>Emisi\u00f3n del token:<\/strong> Cuando un job del pipeline comienza, la plataforma CI genera un JWT (JSON Web Token) firmado para esa ejecuci\u00f3n espec\u00edfica. Este token contiene claims sobre el workload: qu\u00e9 repositorio lo activ\u00f3, qu\u00e9 rama, qu\u00e9 workflow, qu\u00e9 actor y el entorno.<\/li>\n<li><strong>Intercambio del token:<\/strong> El pipeline presenta este JWT al Security Token Service (STS) del proveedor de nube y solicita credenciales temporales.<\/li>\n<li><strong>Validaci\u00f3n:<\/strong> El proveedor de nube obtiene el documento de descubrimiento OIDC p\u00fablico de la plataforma CI y las claves de firma. Valida la firma del JWT, verifica que el token no haya expirado y comprueba que los claims coincidan con la pol\u00edtica de confianza configurada.<\/li>\n<li><strong>Emisi\u00f3n de credenciales:<\/strong> Si la validaci\u00f3n es exitosa, el proveedor de nube emite credenciales de corta duraci\u00f3n (t\u00edpicamente v\u00e1lidas por 1 hora o menos) con el alcance del rol IAM o cuenta de servicio configurado en la pol\u00edtica de confianza.<\/li>\n<\/ol>\n<p>El contenido completo de este art\u00edculo contin\u00faa con secciones detalladas sobre la relaci\u00f3n de confianza, el alcance basado en claims, la configuraci\u00f3n de OIDC Federation en GitHub Actions y GitLab CI con AWS, GCP y Azure, patrones avanzados incluyendo encadenamiento de OIDC con Vault, identidades por entorno, Kubernetes Workload Identity, patrones de acceso entre cuentas, combinaci\u00f3n con Terraform, consideraciones de seguridad, y una gu\u00eda completa de migraci\u00f3n desde credenciales de larga duraci\u00f3n a credenciales de corta duraci\u00f3n.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Workload Identity Federation es el cambio de mayor impacto que la mayor\u00eda de los equipos pueden hacer en su postura de seguridad CI\/CD. Elimina el vector de ataque m\u00e1s com\u00fan \u2014 las credenciales de larga duraci\u00f3n \u2014 y lo reemplaza con un sistema que es m\u00e1s seguro por defecto: de corta duraci\u00f3n, con alcance autom\u00e1tico, auditable y resistente al movimiento lateral.<\/p>\n<p>El camino de migraci\u00f3n es directo. Comience con un pipeline y un proveedor de nube. Configure la relaci\u00f3n de confianza OIDC, actualice el workflow para usar autenticaci\u00f3n federada, valide que funciona y pase al siguiente pipeline. En unas pocas semanas, puede eliminar cada credencial de nube de larga duraci\u00f3n de su plataforma CI\/CD.<\/p>\n<p>No hay raz\u00f3n para mantener credenciales de larga duraci\u00f3n en sus pipelines CI\/CD. El riesgo es alto, el costo de migraci\u00f3n es bajo y la mejora de seguridad es inmediata. Comience hoy.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Si audita los almacenes de secretos de la mayor\u00eda de las plataformas CI\/CD hoy en d\u00eda, encontrar\u00e1 un cementerio de credenciales de larga duraci\u00f3n: claves de acceso de AWS creadas hace a\u00f1os, claves JSON de cuentas de servicio de GCP compartidas entre docenas de pipelines, Personal Access Tokens de GitHub con alcances amplios y &#8230; <a title=\"Credenciales de Corta Duraci\u00f3n y Workload Identity Federation en Pipelines CI\/CD\" class=\"read-more\" href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/short-lived-credentials-workload-identity-federation-ci-cd-2\/\" aria-label=\"Leer m\u00e1s sobre Credenciales de Corta Duraci\u00f3n y Workload Identity Federation en Pipelines CI\/CD\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55,58],"tags":[],"post_folder":[],"class_list":["post-623","post","type-post","status-publish","format-standard","hentry","category-ci-cd-security","category-pipeline-hardening"],"_links":{"self":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/623","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/comments?post=623"}],"version-history":[{"count":1,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/623\/revisions"}],"predecessor-version":[{"id":624,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/623\/revisions\/624"}],"wp:attachment":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/media?parent=623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/categories?post=623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/tags?post=623"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/post_folder?post=623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}