Skip to main content

OpenID Connect

OpenID Connect permite que tus flujos de trabajo intercambien tokens de vida corta directamente desde tu proveedor de servicios en la nube.

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:

Diagrama de cómo se integra un proveedor de nube con GitHub Actions a través de tokens de acceso e identificadores de rol de nube de token web JSON.

  1. 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.
  2. 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.
  3. 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.
  4. 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).

Compatibilidad con OIDC para Dependabot

          Dependabot puede usar OIDC para autenticarse con registros privados, lo que elimina la necesidad de almacenar credenciales de larga duración como secretos de repositorio. Con la autenticación basada en OIDC, los Dependabot trabajos de actualización pueden obtener dinámicamente credenciales de corta duración del proveedor de identidades en la nube.

          Dependabot admite la autenticación OIDC para cualquier tipo de registro que use `username` y `password` autenticación, cuando el registro se hospede en AWS CodeArtifact, Azure DevOps Artifacts o JFrog Artifactory.

Las ventajas de la autenticación OIDC para Dependabot son:

  •         **Seguridad mejorada:** Elimina las credenciales estáticas y de larga duración de los repositorios.
    
  •         **Administración más sencilla:** Habilita el acceso seguro y compatible con directivas a registros privados.
    
  •         **Evite la limitación de velocidad:** Las credenciales dinámicas le ayudan a evitar alcanzar los límites de velocidad asociados a tokens estáticos.
    

Para más información, consulta Configuración del acceso a registros privados para Dependabot.

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.