Skip to main content

Decisión sobre cuándo compilar una instancia de GitHub App

Al compilar una integración, debes considerar la posibilidad de usar una instancia de GitHub App en los escenarios siguientes, en lugar de una instancia de OAuth app, un personal access token o GitHub Actions.

Uso de una GitHub App en lugar de una OAuth app

En general, se prefieren las GitHub Apps antes que las OAuth apps.

Tanto las OAuth apps como las GitHub Apps usan OAuth 2.0.

Las OAuth apps solo pueden actuar en nombre de un usuario, mientras que las GitHub Apps pueden actuar en nombre de un usuario o con independencia de él.

Para más información, consulta Diferencias entre aplicaciones de GitHub y aplicaciones de OAuth.

Para información sobre cómo migrar una OAuth app existente a una GitHub App, consulta Migración de aplicaciones de OAuth a aplicaciones de GitHub.

Las GitHub Apps ofrecen seguridad mejorada

Las GitHub Apps proporcionan más control sobre lo que puede hacer la aplicación. En lugar de los ámbitos amplios que usan las OAuth apps, las GitHub Apps emplean permisos específicos. Por ejemplo, si tu aplicación necesita leer el contenido de un repositorio, una OAuth app requeriría el ámbito repo, que también permitiría a la aplicación editar la configuración y el contenido del repositorio. Una GitHub App puede solicitar acceso de solo lectura al contenido del repositorio, el que no permitirá que la aplicación realice acciones que necesiten más privilegios, como editar la configuración o el contenido del repositorio.

Las GitHub Apps también ofrecen más control sobre el acceso al repositorio. Con una GitHub App, el propietario de la organización o el usuario que instaló la aplicación puede decidir a qué repositorios puede acceder la aplicación. Por el contrario, una OAuth app puede acceder a cada repositorio a los que puede acceder el usuario que autorizó la aplicación.

Las GitHub Apps utilizan tokens de corta duración. Si se filtra el token, será válido durante un período más breve, lo que reduce el daño que pueda haber. Por el contrario, los tokens de una OAuth app no expiran hasta que la persona que autorizó la OAuth app los revoca.

Estas características de seguridad ayudan a proteger la seguridad de GitHub App al limitar el daño que se podría hacer si se hubieran filtrado las credenciales de la aplicación. Además, esto permite que las organizaciones con directivas de seguridad más estrictas usen la aplicación.

Las GitHub Apps pueden actuar con independencia del usuario o en su nombre

Las GitHub Apps pueden actuar de manera independiente de un usuario. Esto resulta beneficioso para las automatizaciones que no requieren la entrada del usuario.

De manera similar a lo que ocurre con las OAuth apps, las GitHub Apps pueden realizar de todos modos acciones en nombre de un usuario. A diferencia de lo que ocurre con las OAuth apps, que no indican que la aplicación hizo la acción, las GitHub Apps indican que la aplicación hizo la acción en nombre del usuario.

Las GitHub Apps no están vinculadas a una cuenta de usuario y no consumen un puesto de GitHub. Las GitHub Apps permanecen instaladas aunque la persona que instaló inicialmente la aplicación deje la organización. Esto permite que las integraciones sigan funcionando incluso si las personas dejan el equipo.

Las GitHub Apps tienen límites de frecuencia escalables

El límite de frecuencia de las GitHub Apps con un token de acceso de instalación se escala con el número de repositorios y el número de usuarios de la organización. Por el contrario, las OAuth apps tienen límites de frecuencia inferiores y no se escalan. Para más información, consulta Límites de frecuencia para aplicaciones de GitHub.

Las GitHub Apps tienen webhooks integrados

Las GitHub Apps tienen webhooks centralizados integrados. Las GitHub Apps pueden recibir eventos de webhook de todos los repositorios y organizaciones a los que pueda acceder la aplicación. Por el contrario, las OAuth apps deben configurar webhooks de manera individual para cada repositorio y organización.

El acceso a la API difiere ligeramente

En general, las GitHub Apps y las OAuth apps pueden hacer las mismas solicitudes de API. Sin embargo, hay algunas diferencias:

  • La API REST para administrar las ejecuciones de comprobación y los conjuntos de comprobación solo está disponible para las GitHub Apps.
  • Los recursos de nivel empresarial, como el propio objeto de empresa, no están disponibles para las GitHub Apps. Esto significa que las GitHub Apps no pueden llamar a puntos de conexión como GET /enterprise/settings/license. Sin embargo, hay disponibles recursos de repositorio y de organización propiedad de la empresa.
  • Algunas solicitudes pueden devolver datos incompletos en función de los permisos y el acceso al repositorio que se concedió a una GitHub App. Por ejemplo, si la aplicación realiza una solicitud para obtener todos los repositorios a los que un usuario puede acceder, la respuesta solo incluirá los repositorios a los que también se concedió acceso a la aplicación.

Para más información sobre los puntos de conexión de API REST que están disponibles para las GitHub Apps, consulta Puntos de conexión disponibles para tokens de acceso de instalación de aplicaciones de GitHub.

Elección entre una GitHub App o una personal access token

Si quieres acceder a los recursos de GitHub en nombre de un usuario o una organización, o si prevés una integración de larga duración, te recomendamos compilar una GitHub App.

Puedes usar personal access tokens para scripts de corta duración o pruebas de API. Como personal access token está asociado a un usuario, la automatización podría interrumpirse si el usuario ya no tiene acceso a los recursos que necesita. Una GitHub App instalada en una organización no depende de un usuario. Además, a diferencia de un usuario, GitHub App no consume un puesto de GitHub.

GitHub admite dos tipos de personal access tokens, pero te recomienda usar fine-grained personal access token, siempre que sea posible, en lugar de personal access tokens (classic). Para más información sobre personal access tokens, consulta Administración de tokens de acceso personal.

Elección entre una GitHub App o una GitHub Actions

Tanto GitHub Apps como GitHub Actions proporcionan formas de crear herramientas de automatización y flujo de trabajo.

GitHub Actions proporcionan automatización de trabajos, como integración continua, tareas de implementación y administración de proyectos de un repositorio. Se ejecutan directamente en máquinas ejecutoras hospedadas en GitHub o ejecutores autohospedados que el administrador configura. GitHub Actions no se ejecutan de manera persistente, Los flujos de trabajo de GitHub Actions se ejecutan en respuesta a eventos que se producen en su repositorio y solo tienen acceso a los recursos del repositorio para el que están configurados. Sin embargo, se pueden compartir acciones personalizadas entre repositorios y organizaciones, lo que permite a los desarrolladores reutilizar y modificar las acciones existentes para satisfacer sus necesidades. GitHub Actions también incluyen la administración de secretos integrada, que puedes usar para interactuar de manera segura con servicios de terceros y administrar con seguridad las claves de implementación.

GitHub Apps se ejecutan de forma persistente en una infraestructura de servidor o proceso que proporciones o ejecutes en un dispositivo de usuario. Pueden reaccionar a los eventos de webhook de GitHub, así como a los eventos de fuera del ecosistema de GitHub. Son una buena opción para las operaciones que abarcan varios repositorios u organizaciones, o para proporcionar servicios hospedados a otras organizaciones. Una instancia de GitHub App es la mejor opción al crear una herramienta con funciones que se tienen lugar principalmente fuera de GitHub o que requieren más tiempo de ejecución o permisos de los que asigna un flujo de trabajo de GitHub Actions.

Para más información sobre cómo se comparan GitHub Actions y GitHub Apps, consulta Acercad e las acciones personalizadas.

Puedes usar GitHub App para autenticarte en un flujo de trabajo de GitHub Actions si el GITHUB_TOKEN integrado no tiene permisos suficientes. 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.