Información general de OpenID Connect (OIDC)
GitHub Actions Los flujos de trabajo a menudo están diseñados para acceder a un proveedor de nube (como AWS, Azure, GCP, HashiCorp Vault y otros) con el fin de implementar software o usar los servicios de la nube. Antes de que un flujo de trabajo pueda acceder a estos recursos, este suministrará credenciales, tales como contraseña o token, al proveedor de servicios en la nube. Estas credenciales normalmente se almacenan como un secreto en GitHuby el flujo de trabajo presenta este secreto al proveedor de nube cada vez que se ejecuta.
Sin embargo, el uso de secretos codificados requiere crear credenciales en el proveedor de nube y luego duplicarlas en GitHub como un secreto.
Después de establecer una conexión de confianza con un proveedor de nube que admita OIDC, puedes configurar el flujo de trabajo para solicitar un token de acceso de corta duración directamente al proveedor de nube.
Beneficios de utilizar OIDC
Al actualizar tus flujos de trabajo para que utilicen tokens de OIDC, puedes adoptar las siguientes buenas prácticas de seguridad:
- Sin secretos en la nube: No tendrá que duplicar sus credenciales de la nube como secretos permanentes GitHub. En vez de esto, puedes configurar la confianza de OIDC en tu proveedor de servicios en la nube y luego actualizar tus flujos de trabajo para que soliciten un token de acceso de vida corta desde dicho proveedor mediante OIDC.
- Administración de la autenticación y la autorización: tiene un control más preciso sobre cómo los flujos de trabajo pueden usar las credenciales, mediante las herramientas de autenticación (authN) y autorización (authZ) del proveedor de servicios en la nube para controlar el acceso a los recursos de nube.
- Rotación de credenciales: con OIDC, el proveedor de servicios en la nube emite un token de acceso de duración breve que solo es válido para un trabajo y después expira de forma automática.
Cómo se integra OIDC con GitHub Actions
En el diagrama siguiente se proporciona información general sobre cómo GitHubse integra el proveedor OIDC con los flujos de trabajo y el proveedor de nube:

- Establece una relación de confianza de OIDC en el proveedor de nube, lo que permite que flujos de trabajo específicos GitHub soliciten tokens de acceso a la nube en nombre de un rol de nube definido.
- Cada vez que se ejecuta el trabajo, el proveedor de OIDC GitHub genera automáticamente un token de OIDC. Este token contiene notificaciones múltiples para establecer una identidad verificable y fortalecida en seguridad sobre el flujo de trabajo específico que está tratando de autenticar.
- Un paso o una acción en el proceso de trabajo puede solicitar un token del proveedor OIDC de GitHub, que luego se puede presentar al proveedor de la nube como prueba de la identidad del flujo de trabajo.
- Una vez que el proveedor de identidad valide con éxito las notificaciones que se presentan en el token, este proporciona un token de acceso a la nube de vida corta que está disponible únicamente por la duración del job.
Entender el token de OIDC
Cada trabajo solicita un token OIDC del GitHub proveedor OIDC, que responde con un token web JSON (JWT) generado automáticamente que es único para cada tarea del flujo de trabajo donde se genera. Cuando se ejecuta el job, el token de OIDC se presenta al proveedor de servicios en la nube. Para validar el token, el proveedor de servicios en la nube verifica si el asunto del token de OIDC y otros reclamos empatan con las condiciones que se preconfiguraron en la definición de confianza de OIDC del rol en la nube.
El siguiente token de OIDC de ejemplo usa un asunto (sub) que hace referencia a un entorno de trabajo denominado prod en el repositorio octo-org/octo-repo.
{
"typ": "JWT",
"alg": "RS256",
"x5t": "example-thumbprint",
"kid": "example-key-id"
}
{
"jti": "example-id",
"sub": "repo:octo-org/octo-repo:environment:prod",
"environment": "prod",
"aud": "https://HOSTNAME/octo-org",
"ref": "refs/heads/main",
"sha": "example-sha",
"repository": "octo-org/octo-repo",
"repository_owner": "octo-org",
"actor_id": "12",
"repository_visibility": "private",
"repository_id": "74",
"repository_owner_id": "65",
"run_id": "example-run-id",
"run_number": "10",
"run_attempt": "2",
"runner_environment": "github-hosted",
"actor": "octocat",
"workflow": "example-workflow",
"head_ref": "",
"base_ref": "",
"event_name": "workflow_dispatch",
"enterprise": "avocado-corp",
"enterprise_id": "2",
"ref_type": "branch",
"job_workflow_ref": "octo-org/octo-automation/.github/workflows/oidc.yml@refs/heads/main",
"iss": "https://HOSTNAME/_services/token",
"nbf": 1632492967,
"exp": 1632493867,
"iat": 1632493567
}
Autenticación de acciones personalizadas mediante OIDC
Las acciones personalizadas usan el método getIDToken() del kit de herramientas de Actions o un comando curl para autenticarse mediante OIDC.
Para más información, consulta Referencia de OpenID Connect.
Actualizar tus flujos de trabajo para OIDC
GitHub Actions los flujos de trabajo pueden usar tokens de OIDC en lugar de secretos para autenticarse con proveedores de nube. Muchos proveedores de nube conocidos ofrecen acciones oficiales de inicio de sesión que simplifican el proceso de uso de OIDC en tus flujos de trabajo. Para más información sobre cómo actualizar tus flujos de trabajo con proveedores de nube específicos, consulta [AUTOTITLE](/actions/how-tos/security-for-github-actions/security-hardening-your-deployments).
Pasos siguientes
Para más información sobre la configuración de OIDC, consulta Fortalecer la seguridad de tus despliegues.
Para obtener información de referencia sobre OIDC, consulta Referencia de OpenID Connect.