Al inicio de cada trabajo del flujo de trabajo, crea automáticamente un secreto _TOKEN
único para usarlo en el flujo de trabajo. Puede usar _TOKEN
para autenticarse en el trabajo del flujo.
Cuando habilitas Actions, instala una App en tu repositorio. El secreto _TOKEN
es un token de acceso de instalación de App. Puedes usar el token de acceso de instalación para autenticarte en nombre de la App instalado en tu repositorio. Los permisos del token están limitados al repositorio que contiene tu flujo de trabajo. Para más información, consulta Permisos para _TOKEN
.
Antes de que comience cada job, extrae un token de acceso de instalación para éste. _TOKEN
expira cuando finaliza un trabajo o después de un máximo de 24 horas.
El token también está disponible en el contexto .token
. Para más información, consulta Accessing contextual information about workflow runs.
Puedes usar _TOKEN
mediante la sintaxis estándar para hacer referencia a secretos: ${{ secrets._TOKEN }}
. Los ejemplos de uso de _TOKEN
incluyen pasar el token como entrada a una acción, o bien utilizarlo para realizar una solicitud autenticada a la API de .
Importante
Una acción puede acceder a _TOKEN
mediante el contexto .token
incluso si el flujo de trabajo no pasa explícitamente _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 _TOKEN
. Para más información, consulta Permisos para _TOKEN
.
Al usar _TOKEN
del repositorio para realizar tareas, los eventos desencadenados por _TOKEN
, a excepción de workflow_dis
y repository_dis
, no crearán una ejecución de flujo de trabajo. Esto impide que crees ejecuciones de flujo de trabajo recursivas por accidente. Por ejemplo, si una ejecución de flujo de trabajo inserta código mediante _TOKEN
del repositorio, un nuevo flujo de trabajo no se ejecutará incluso cuando el repositorio contenga un flujo de trabajo configurado para ejecutarse cuando se produzcan eventos push
.
Las confirmaciones insertadas por un flujo de trabajo de Actions que usa _TOKEN
no desencadenan una compilación de Pages.
En este flujo de trabajo de ejemplo se usa la CLI de , que necesita _TOKEN
como valor para el parámetro de entrada GH_TOKEN
:
name: Open new issue on: workflow_dis jobs: open-issue: runs-on: ubuntu-latest permissions: contents: read issues: write steps: - run: | gh issue --repo ${{ .repository }} \ create --title "Issue title" --body "Issue body" env: GH_TOKEN: ${{ secrets._TOKEN }}
name: Open new issue
on: workflow_dis
jobs:
open-issue:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
steps:
- run: |
gh issue --repo ${{ .repository }} \
create --title "Issue title" --body "Issue body"
env:
GH_TOKEN: ${{ secrets._TOKEN }}
Puede usar _TOKEN
para realizar llamadas API autenticadas. Este flujo de trabajo de ejemplo crea una propuesta mediante la API REST del :
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..com/repos/${{ .repository }}/issues \
--header 'authorization: Bearer ${{ secrets._TOKEN }}' \
--header 'content-type: application/json' \
--data '{
"title": "Automated issue for commit: ${{ .sha }}",
"body": "This issue was automatically created by the Action workflow **${{ .workflow }}**. \n\n The commit hash was: _${{ .sha }}_."
}' \
--fail
Para obtener información sobre los puntos de conexión de la API a los que Apps puedes acceder con cada permiso, consulta Permisos que requieren las Apps.
En la tabla siguiente, se muestran los permisos concedidos al _TOKEN
de manera predeterminada. Las personas con permisos administrativos en una empresa, organización o repositorio pueden configurar los permisos predeterminados para que sean permisivos o restringidos. Para obtener información sobre cómo establecer los permisos predeterminados para _TOKEN
para tu empresa, organización o repositorio, consulta Requerir políticas para las Actions en tu empresa, Inhabilitar o limitar Actions para tu organización o Administrar los ajustes de las Actions de un repositorio.
Nota:
- Cuando el evento
pull_request_target
desencadena un flujo de trabajo, se concede a_TOKEN
permiso de repositorio de lectura y escritura, incluso cuando se desencadena desde una bifurcación pública. Para más información, consulta Events that trigger workflows. - Los repositorios privados pueden controlar si las solicitudes de incorporación de cambios de bifurcaciones pueden ejecutar flujos de trabajo y configurar los permisos asignados a
_TOKEN
. Para más información, consulta Administrar los ajustes de las Actions de un repositorio. - Las ejecuciones de flujos de trabajo que las solicitudes de incorporación de cambios de Dependabot desencadenan se ejecutan como si fueran de un repositorio bifurcado y, por lo tanto, usan un elemento
_TOKEN
de solo lectura. Estas ejecuciones de flujo de trabajo no pueden acceder a ningún secreto. Para obtener información sobre las estrategias para mantener estos flujos de trabajo seguros, consulta Fortalecimiento de seguridad para Actions.
Puede modificar los permisos de _TOKEN
en archivos de flujo de trabajo individuales. Si los permisos predeterminados para _TOKEN
son restrictivos, es posible que tenga que elevarlos para permitir que algunas acciones y comandos se ejecuten correctamente. Si los permisos predeterminados son permisivos, puede editar el archivo de flujo de trabajo para quitar algunos permisos de _TOKEN
. Como práctica de seguridad recomendada, debe conceder el permiso de acceso menos necesario a _TOKEN
.
Puede ver los permisos que ha tenido _TOKEN
para un trabajo específico en la sección "Configuración del trabajo" del registro de ejecución de flujo de trabajo. Para más información, consulta Uso de registros de ejecución de flujo de trabajo.
También puede usar la clave permissions
en el archivo de flujo de trabajo a fin de modificar los permisos para _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.
Puede usar la clave permissions
a fin de agregar y quitar permisos de lectura para repositorios bifurcados, pero normalmente no se puede conceder acceso de escritura. La excepción a este comportamiento es cuando un usuario administrador ha seleccionado la opción Enviar tokens a flujos de trabajo desde solicitudes de incorporación de cambios en la configuración de Actions. Para más información, consulta Administrar los ajustes de las Actions de un repositorio.
En los dos ejemplos de flujo de trabajo anteriores de este artículo se muestra la clave permissions
que se usa en el nivel de trabajo, ya el procedimiento recomendado es limitar el ámbito de los permisos.
Para obtener detalles completos de la clave permissions
, consulta Workflow syntax for Actions.
Nota:
Los propietarios de la organización pueden impedir que se conceda acceso de escritura al _TOKEN
en el nivel de repositorio. Para obtener más información, consulta Inhabilitar o limitar Actions para tu organización.
Cuando se usa la clave permissions
, todos los permisos no especificados se establecen en Sin acceso, a excepción del ámbito metadata
, que siempre obtiene acceso de lectura.
Los permisos para _TOKEN
se establecen inicialmente con los valores predeterminados para la empresa, organización o repositorio. Si lo predeterminado se configura para los permisos restringidos en cualquiera de estos niveles, esto aplicará a los repositorios relevantes. Por ejemplo, si eliges las restricciones predeterminadas a nivel organizacional, entonces todos los repositorios de la organización utilizarán estos permisos restringidos como los predeterminados. Entonces, los permisos se ajustarán con base en cualquier configuración dentro del archivo de flujo de trabajo, primero a nivel del flujo de trabajo y luego al nivel de los jobs. Por último, si una solicitud de incorporación de cambios ha desencadenado el flujo de trabajo desde un repositorio bifurcado y no se selecciona el valor Enviar tokens de escritura a los flujos de trabajo desde las solicitudes de incorporación de cambios, los permisos se ajustarán para cambiar los de escritura a solo lectura.
Si necesitas un token que requiera permisos que no estén disponibles en _TOKEN
, puedes crear una App y generar 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 en un flujo de trabajo de Acciones de . Como alternativa, puedes crear un personal access token, almacenarlo como secreto en el repositorio y usar el token en el flujo de trabajo con la sintaxis ${{ secrets.SECRET_NAME }}
. Para más información, consulta Administración de tokens de acceso personal y Uso de secretos en Acciones de .