Skip to main content

Uso de GITHUB_TOKEN para la autenticación en flujos de trabajo

Aprenda a usar GITHUB_TOKEN para autenticarse en nombre de GitHub Actions.

En este tutorial se explica cómo usar GITHUB_TOKEN para la autenticación en los flujos de trabajo de GitHub Actions, incluidos ejemplos de cómo pasar el token a las acciones, realizar solicitudes a la API y configurar permisos para una automatización segura.

Para obtener información de referencia, consulta Sintaxis del flujo de trabajo para Acciones de GitHub.

Uso de GITHUB_TOKEN en un flujo de trabajo

Puede usar GITHUB_TOKEN mediante la sintaxis estándar para hacer referencia a secretos:${{ secrets.GITHUB_TOKEN }} . Algunos ejemplos de uso del GITHUB_TOKEN incluyen pasar el token como entrada a una acción o usarlo para realizar una solicitud autenticada a la API de GitHub.

Importante

Una acción puede acceder a GITHUB_TOKEN mediante el contexto github.token incluso si el flujo de trabajo no pasa explícitamente GITHUB_TOKEN a la acción. Como procedimiento de seguridad correcto, siempre debe asegurarse de que las acciones solo tengan el acceso mínimo necesario para limitar los permisos que se conceden a GITHUB_TOKEN. Para más información, consulta Sintaxis del flujo de trabajo para Acciones de GitHub.

Ejemplo 1: Pasar GITHUB_TOKEN como entrada

En este flujo de trabajo de ejemplo se usa la CLI de GitHub, que necesita GITHUB_TOKEN como valor para el parámetro de entrada GH_TOKEN:

YAML
name: Open new issue
on: workflow_dispatch

jobs:
  open-issue:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: write
    steps:
      - run: |
          gh issue --repo ${{ github.repository }} \
            create --title "Issue title" --body "Issue body"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Ejemplo 2: llamar a la API de REST

Puede usar GITHUB_TOKEN para realizar llamadas API autenticadas. En este flujo de trabajo de ejemplo se crea un problema mediante la GitHub API REST:

name: Create issue on commit

on: [ push ]

jobs:
  create_issue:
    runs-on: ubuntu-latest
    permissions:
      issues: write
    steps:
      - name: Create issue using REST API
        run: |
          curl --request POST \
          --url https://api.github.com/repos/${{ github.repository }}/issues \
          --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
          --header 'content-type: application/json' \
          --data '{
            "title": "Automated issue for commit: ${{ github.sha }}",
            "body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**. \n\n The commit hash was: _${{ github.sha }}_."
            }' \
          --fail

Modificación de los permisos para GITHUB_TOKEN

Usa la clave permissions del archivo de flujo de trabajo a fin de modificar los permisos para GITHUB_TOKEN en un flujo de trabajo completo o en trabajos individuales. Esto te permite configurar los permisos mínimos requeridos para un flujo de trabajo o job. Como práctica de seguridad recomendada, debe conceder el permiso de acceso menos necesario a GITHUB_TOKEN.

A fin de ver la lista de permisos disponibles para su uso y sus nombres con parámetros, consulta Administración de tokens de acceso personal.

En los dos ejemplos de flujo de trabajo mostrados antes en este artículo se muestra cómo se usa la clave permissions en el nivel de trabajo.

Otorgar permisos adicionales

Si necesita un token que requiera permisos que no estén disponibles en GITHUB_TOKEN, cree GitHub App y genere un token de acceso de instalación dentro del flujo de trabajo. Para más información, consulta Realización de solicitudes de API autenticadas con una aplicación de GitHub en un flujo de trabajo de Acciones de GitHub. Como alternativa, puede crear un personal access token, almacenarlo como un secreto en el repositorio y usar el token en el flujo de trabajo con la ${{ secrets.SECRET_NAME }} sintaxis . Para más información, consulta Administración de tokens de acceso personal y Uso de secretos en Acciones de GitHub.

Pasos siguientes