Skip to main content

Configurar OpenID Connect en HashiCorp Vault

Utiliza OpenID Connect dentro de tus flujos de trabajo para autenticarte con HashiCorp Vault.

Nota: Los ejecutores hospedados en GitHub no son compatibles con GitHub Enterprise Server actualmente. Puedes encontrar más información sobre el soporte que se tiene planeado en el futuro en el Itinerario público de GitHub.

Resumen

OpenID Connect (OIDC) permite que tus flujos de trabajo de GitHub Actions se autentiquen con HashiCorp Vault para recuperar secretos.

Esta guía te proporciona un resumen de cómo configurar HashiCorp Vault para que confíe en el OIDC de GitHub como identidad federada y demuestra cómo utilizar esta configuración en la acción hashicorp/vault-action para recuperar los secretos desde HashiCorp Vault.

Prerrequisitos

  • Para aprender los conceptos básicos de cómo GitHub utiliza OpenID Connect (OIDC) y su arquitectura y beneficios, consulta la sección "Acerca del fortalecimiento de seguridad con OpenID Connect".

  • Antes de proceder, debes planear tu estrategia de seguridad para garantizar que los tokens de acceso solo se asignen de forma predecible. Para controlar la forma en la que tu proveedor de servicios en la nube emite tokens de acceso, debes define por lo menos una condición para que los repositorios no confiables no puedan solicitar tokens de acceso para tus recursos en la nube. Para obtener más información, consulta la sección "Configurar la relación de confianza de OIDC con la nube".

Agregar el proveedor de identidad a HashiCorp Vault

Para utilizar OIDC con HashiCorp Vault, necesitarás agregar una configuración de confianza para el proveedor de OIDC de GitHub. Para obtener más información, consulta la documentación de HashiCorp Vault.

Configura la bóveda para que acepte Tokens Web JSON (JWT) para la autenticación:

  • Para el oidc_discovery_url, utiliza https://HOSTNAME/_services/token
  • Para bound_issuer, utiliza https://HOSTNAME/_services/token
  • Asegúrate de que bound_subject se defina correctamente para tus requisitos de seguridad. Para obtener más información, consulta la sección "Configurar la confianza de OIDC con la nube" y hashicorp/vault-action.

Actualizar tu flujo de trabajo de GitHub Actions

Para actualizar tus flujos de trabajo para ODIC, necesitarás hacer dos cambios a tu YAML:

  1. Agregar ajustes de permisos para el token.
  2. Utiliza la acción hashicorp/vault-action para intercambiar el token OIDC (JWT) por un token de acceso a la nube.

Para agregar la integración de OIDC con tus flujos de trabajo, la cual les permita acceder a los secretos en la bóveda, necesitarás agregar los siguientes cambios al código:

  • Otorga permiso para recuperar el token del proveedor de OIDC de GitHub:
    • El flujo de trabajo necesita ajustes de permissions: con el valor id-token configurado en write. Esto te permite recuperar el token de OIDC desde cualquier job en el flujo de trabajo.
  • Solicita el JWT desde el proveedor de OIDC de GitHub y preséntalo a HashiCorp Vault para recibir un token de acceso:

Este ejemplo demuestra cómo utilizar OIDC con la acción oficial para solicitar un secreto de HashiCorp Vault.

Agregar ajustes de permisos

 El job o ejecución de flujo de trabajo requiere un ajuste de permissions con id-token: write. No podrás solicitar la ID de token JWT de OIDC si el ajuste de permissions para el id-token se configura como read o none.

El ajuste de id-token: write permite que se solicite el JWT desde el proveedor de OIDC de GitHub utilizando uno de estos enfoques:

  • Utilizando variables de ambiente en el ejecutor (ACTIONS_ID_TOKEN_REQUEST_URL y ACTIONS_ID_TOKEN_REQUEST_TOKEN).
  • Utilizando getIDToken() desde el kit de herramientas de las acciones.

Si solo necesitas recuperar un token de OIDC para un solo job, entonces este permiso puede configurarse dentro de dicho job. Por ejemplo:

YAML
permissions:
  id-token: write

Puede que necesites especificar permisos adicionales aquí, dependiendo de los requisitos de tu flujo de trabajo.

Solicitar el token de acceso

La acción hashicorp/vault-action recibe un JWT del proveedor de OIDC de GitHub y posteriormente solicita un token de acceso de tu instancia de HashiCorp Vault para recuperar los secretos. Para obtener más información, consulta la documentación de HashiCorp Vault.

Este ejemplo demuestra cómo crear un job que solicite un secreto de HashiCorp Vault.

  • <Vault URL>: Reemplaza esto con la URL de tu HashiCorp Vault.
  • <Role name>: Reemplaza esto con el rol que configuraste en la relación de confianza de HashiCorp Vault.
  • <Audience>: Reemplaza esto con la audiencia que definiste en la relación de confianza de HashiCorp Vault.
  • <Secret-Path>: Reemplaza esto con la ruta al secreto que estás recuperando desde HashiCorp Vault. Por ejemplo: secret/data/ci npmToken.
YAML
jobs:
    retrieve-secret:
        steps:
            - name: Retrieve secret from Vault
              uses: hashicorp/vault-action@v2.4.0
              with:
                url: <Vault URL>
                role: <Role name>
                method: jwt
                jwtGithubAudience: <Audience>
                secrets: <Secret-Path>

            - name: Use secret from Vault
               run: |
                 # This step has access to the secret retrieved above; see hashicorp/vault-action for more details.