Ir al contenido

El token

Todo aquí es acceso de lectura. El colector nunca escribe en GitHub. Lo que varía es cuánto de la cuenta se le permite ver a un token dado, y hay unos cuantos permisos que conviene entender en vez de limitarse a concederlos.

  1. Ve a https://github.com/settings/tokens.

  2. Elige el tipo de token y dale los permisos de abajo.

    repo, read:packages, read:user, read:org, security_events, read:public_key y read:gpg_key cubre todo lo que esto recoge.

  3. Ponlo donde el proceso pueda leerlo, y en ningún otro sitio.

    Ventana de terminal
    export GITHUB_TOKEN=github_pat_...

    El fichero de configuración lo referencia como ${GITHUB_TOKEN}, que se expande desde el entorno al arrancar. Eso es lo que permite versionar el fichero dejando el token fuera.

PermisoSin él
Acceso de escritura al repositorio, y Administration (lectura) en un token fine-grainedEl tráfico es un 403. GitHub solo muestra visitas y clones a quien puede hacer push al repositorio
security_eventsLas alertas de Dependabot y de code scanning parecen exactamente un repositorio con la función apagada
read:packagesEl registro de contenedores es invisible. Las versiones de paquete cuestan una llamada por paquete
read:userFaltan seguidores, contribuciones, gists y cuentas sociales
read:orgLos repositorios de una organización no se descubren
read:public_key, read:gpg_keyLa familia keys no escribe nada, y no lo dice. Ningún otro permiso implica ninguno de los dos

El del tráfico es el que sorprende, porque poder leer un repositorio no basta. GitHub solo muestra visitas y clones a quien puede hacer push al repositorio, y un token fine-grained necesita además el permiso de repositorio Administration (lectura); un token al que le falte cualquiera de los dos recibe un 403 en ese repositorio. El colector lo anota como “no disponible” y sigue, que es por lo que el síntoma es un panel de tráfico vacío y no una pasada fallida.

Por qué el GITHUB_TOKEN automático no basta

Sección titulada «Por qué el GITHUB_TOKEN automático no basta»

Un workflow recibe un GITHUB_TOKEN gratis. No basta para esto, y la razón merece decirse con precisión en vez de dejar que alguien la descubra como un dashboard vacío.

  • No puede leer el tráfico, ni siquiera el suyo. El tráfico necesita acceso de escritura a cada repositorio que se recoja, y el token automático solo lo tiene para el repositorio en el que corre el workflow. Incluso ahí recibe un 403: GitHub pide además el permiso de repositorio Administration, que un workflow no puede conceder a su token automático.
  • No tiene security_events. Las alertas de Dependabot y de code scanning le son invisibles.
  • No tiene read:packages. El registro de contenedores le es invisible.
  • No es un usuario. Todo lo que es de cuenta (seguidores, el calendario de contribuciones, la facturación, las notificaciones, las estrellas que diste) va sobre la persona, no sobre un repositorio, y el token automático es una instalación, no una persona.

Así que un workflow necesita un token personal guardado como secreto del repositorio y pasado por la entrada token. Ver GitHub Actions.

Solo para las tres órdenes que no preguntan nada a GitHub: -backfill-status, -publish-dashboard y -uninstall. Todo lo que recoge, una tarjeta de números públicos incluida, necesita uno, y sin él se para al arrancar con github.token is empty and GITHUB_TOKEN is unset. Lo que cuesta un token al que le falta un permiso es la tabla de arriba: la parte que no puede ver queda vacía, y el log dice not available (403) para cada una, que es el colector informando de un permiso, no de un fallo.