Qué son las aplicaciones de GitHub

Completado

Aquí se explica qué son las aplicaciones de GitHub, cómo funcionan y cómo se pueden usar para mejorar los flujos de trabajo. Tanto si va a adoptar una solución compilada por otra persona como si va a desarrollar una que satisfaga sus necesidades exactas, siempre hay espacio para mejorar los procesos.

Extensión de la plataforma mediante la API de GitHub

GitHub proporciona una API sólida que permite a los desarrolladores hacer prácticamente cualquier cosa en la plataforma. La API se expone a través de puntos de conexión REST, por lo que es fácil de integrar desde cualquier plataforma o lenguaje de programación. Pero el acceso a la API no funciona por sí solo. Los desarrolladores que quieren compartir sus características con otros tienen que empaquetarlas como aplicación y publicarlas para que los demás puedan usarlas.

Hay varios factores que se deben tener en cuenta a la hora de elegir entre incorporar una aplicación de OAuth o una aplicación de GitHub en el flujo de trabajo. En esta sección, le presentamos las aplicaciones de GitHub y las aplicaciones de OAuth, sus diferencias de uso y permisos y suscripciones de eventos.

Imagen de un icono de instalación y un icono de aprobación para aplicaciones de GitHub y aplicaciones de OAuth.

Al personalizar un flujo de trabajo de GitHub, tiene varias características disponibles. Por ejemplo, escribir scripts personalizados, crear y autorizar sus propias aplicaciones de OAuth o instalar aplicaciones de GitHub disponibles en Marketplace de GitHub. En general, puede usar mejor los scripts para esas tareas puntuales. En el caso de las acciones que se ejecutan con más frecuencia, la automatización de OAuth y aplicaciones de GitHub puede ayudarle a usted y al equipo a ahorrar tiempo, a la vez que se conserva el nivel óptimo de seguridad dentro de los flujos de trabajo. Hay muchas diferencias que afectan a la decisión que tomará entre usar una aplicación de GitHub o una aplicación de OAuth. Comprender estas diferencias con antelación puede reducir ciertas dificultades y replanteamientos, y ayudarle a encontrar la mejor aplicación para su caso de uso concreto dentro del flujo de trabajo.

Al final de esta sección, debe tener una buena comprensión de las diferencias entre una aplicación de GitHub y una aplicación de OAuth y saber cómo elegir mejor una aplicación para la situación correcta.

Concesión de acceso y permisos

Una de las consideraciones más importantes para permitir el acceso de una aplicación a un repositorio de GitHub son los permisos que necesita para operar. Algunas aplicaciones son fáciles de confiar, pero otras podrían ser sospechosas. Asegúrese siempre de estar familiarizado con los permisos que concede a una aplicación.

Captura de pantalla de la revisión de los permisos solicitados y el acceso al repositorio.

Nota:

Cada aplicación usa una clave de API única para realizar solicitudes de los datos del repositorio. Cuando autoriza el acceso, lo que está autorizando es la clave. Puede revocar el acceso a la clave de una aplicación en cualquier momento desde la configuración del repositorio.

aplicaciones de OAuth

Las aplicaciones de OAuth proporcionan una manera de acceder a los datos de GitHub en nombre de un usuario. Dado que actúa en nombre del usuario, es importante tener en cuenta que consume una licencia de GitHub. Puede crear y registrar una aplicación de OAuth en su cuenta personal o en el nivel de la organización si tiene acceso administrativo. Una aplicación de OAuth que se integra con GitHub revela el tipo de acceso a la organización o al repositorio que requiere. Los usuarios autorizan aplicaciones de OAuth, lo que ofrece a la aplicación la capacidad de actuar como el usuario autenticado, como, por ejemplo, para leer o modificar datos. Este enfoque es básicamente una manera automatizada de leer, escribir o editar datos de GitHub como un usuario. También es importante tener en cuenta que la autorización está limitada a los recursos a los que el usuario puede acceder. Sin embargo, la aplicación OAuth también obtiene acceso a todos los recursos que están disponibles para el usuario.

Nota:

El nivel de acceso está limitado por el ámbito del token (usuario, organización o repositorio).

En el caso de las organizaciones con restricciones de acceso a la aplicación de OAuth, el administrador puede dar la aprobación para usar la aplicación. Con las suscripciones a eventos, las aplicaciones de OAuth responden a la actividad a medida que se produce.

Aplicaciones de GitHub

Por el contrario, las aplicaciones de GitHub se instalan en su cuenta personal, en las organizaciones que posee o en repositorios específicos a los que tiene acceso de administrador. Las aplicaciones de GitHub se instalan e interactúan con GitHub como servicio, no como usuario individual como ocurre con las aplicaciones de OAuth. Una ventaja de las aplicaciones de GitHub es que, a diferencia de las aplicaciones de OAuth, las aplicaciones de GitHub no consumen una licencia de GitHub.

Las aplicaciones de GitHub acceden a los datos en nombre de la propia aplicación a través de una clave privada que se usa para firmar un token web JSON. Dado que se instalan en repositorios específicos, los usuarios pueden elegir a qué repositorios puede acceder la aplicación, lo que limita la cantidad de datos a los que puede acceder la aplicación. Los permisos definen a qué recursos puede acceder la aplicación de GitHub a través de la API. A diferencia de las aplicaciones de OAuth, las aplicaciones de GitHub tienen permisos personalizables para los datos del repositorio, las incidencias y las PR. La personalización permite conceder permisos más pormenorizados, lo que limita la aplicación para leer y escribir solo en los repositorios a los que permite acceder. Solo los propietarios de la organización pueden administrar la configuración de las aplicaciones de GitHub de una organización.

Puede encontrar e instalar aplicaciones de GitHub en el marketplace de GitHub. Cuando busque Aplicaciones de GitHub, tenga en cuenta que algunas aplicaciones tienen un distintivo comprobado. Un distintivo comprobado indica lo siguiente sobre la aplicación y la organización que la posee:

  • Se comprueba la propiedad de la organización de su dominio.
  • El soporte técnico de GitHub confirma las direcciones de correo electrónico de la organización.
  • La organización requiere autenticación en dos fases.

Imagen de un distintivo de verificación para una aplicación de GitHub.

  • Un administrador puede conceder permisos relacionados con la administración del repositorio, las comprobaciones, el contenido del repositorio, las implementaciones y las incidencias (los cambios del administrador requieren la aceptación del usuario).
  • Un administrador puede conceder permisos de usuario a la aplicación para bloquear a otro usuario, correos electrónicos, seguidores, claves GPG, claves SSH de Git, marcas de estrella e inspección (los cambios del administrador requieren la aceptación del usuario).
  • Suscripciones a eventos: Aviso de seguridad, Conjunto de comprobación, Creación, Implementación, Bifurcación, Etiqueta, Miembro, Comprobación, Confirmación de comentarios, Eliminación, Estado de la implementación, Hito, Pertenencia, Organización (el administrador los configura en la interfaz de usuario de aplicaciones de GH y se pueden modificar).

Elección entre aplicaciones de GitHub y aplicaciones de OAuth

Aunque Las aplicaciones de GitHub son una manera ideal de integrarse en el flujo de trabajo en algunas situaciones, las organizaciones más grandes pueden resultar difíciles de realizar la transición desde el uso tradicional de aplicaciones de OAuth para la automatización. Por ejemplo, una restricción de directiva de seguridad también podría limitar las opciones de un administrador al elegir usar estas herramientas.

Nota:

Como administrador del sistema, debe trabajar con los desarrolladores para encontrar opciones que son las más adecuadas para la automatización mediante estas aplicaciones, a la vez que sigue siguiendo la directiva de seguridad.

A continuación se plantean algunas preguntas importantes que debe tener en cuenta para determinar qué aplicación es la solución adecuada para su situación:

  • ¿Quiero que la aplicación actúe como un usuario?
  • ¿Qué tiene que ser el límite de velocidad?
  • ¿Qué acceso quiero que tenga la aplicación en la organización y los repositorios?
  • ¿Esta aplicación cumple con nuestra directiva de seguridad?

A continuación se indican algunas características clave y diferencias que se deben tener en cuenta al elegir entre una aplicación de GitHub o una aplicación de OAuth.

Aplicaciones de GitHub aplicaciones de OAuth
La instalación de una aplicación de GitHub concede a la aplicación acceso a los repositorios elegidos de una cuenta de usuario u organización. La autorización de una aplicación de OAuth concede a la aplicación acceso a los recursos accesibles del usuario; por ejemplo, los repositorios a los que pueden acceder.
Los tokens de acceso de instalación se limitan a repositorios especificados con los permisos que ha elegido el creador de la aplicación. Un token de acceso de OAuth se limita mediante ámbitos.
Un token de instalación identifica la aplicación como el bot de aplicaciones de GitHub. Un token de acceso identifica la aplicación como el usuario que ha concedido el token a la aplicación.
Las aplicaciones de GitHub usan permisos de destino que les permiten solicitar acceso solo a lo que necesitan. Las aplicaciones de OAuth no pueden usar permisos pormenorizados.
Las aplicaciones de GitHub no están sujetas a las directivas de aplicación de la organización. Una aplicación de GitHub solo tiene acceso a los repositorios que concede un propietario de la organización. Si hay una directiva de aplicación de organización activa, solo un propietario de la organización puede autorizar la instalación de una aplicación de OAuth. Si está instalada, la aplicación de OAuth obtiene acceso a cualquier elemento visible para el token que el propietario de la organización tiene dentro de la organización aprobada.
Pueden concederse aumentos del límite de frecuencia tanto en el nivel de las aplicaciones de GitHub (lo que afecta a todas las instalaciones) como en el nivel de una instalación individual. Los aumentos del límite de frecuencia se conceden por cada aplicación de OAuth. Cada token concedido a esa aplicación de OAuth obtiene el aumento en el límite.
Las aplicaciones de GitHub se pueden autenticar en nombre del usuario, lo que se denomina solicitud de usuario a servidor. El flujo de autorización es el mismo que el flujo de autorización de la aplicación de OAuth. Los tokens de usuario a servidor pueden expirar y renovarse con un token de actualización. El flujo de OAuth que usan las aplicaciones de OAuth autoriza una aplicación de OAuth en nombre del usuario. Este flujo es el mismo que se usa en la autorización de usuario a servidor de la aplicación de GitHub.
Las aplicaciones de GitHub solicitan permiso al contenido del repositorio y usan el token de instalación para autenticarse mediante Git basado en HTTP. Las aplicaciones de OAuth solicitan el ámbito write:public_key y crean una clave de implementación mediante la API. Posteriormente, pueden usar esa clave para realizar comandos de Git.

Permisos y acceso de la aplicación

Una de las consideraciones más importantes para permitir el acceso de una aplicación a un repositorio de GitHub son los permisos que necesita para operar. Algunas aplicaciones son fáciles de confiar, pero otras podrían ser sospechosas. Asegúrese siempre de estar familiarizado con los permisos que concede a una aplicación.

Tomar la decisión de usar una aplicación de GitHub o una aplicación de OAuth puede depender del nivel de acceso al que quiere que acceda la aplicación. En general, debe animar a su equipo a usar la herramienta con el ámbito más pequeño para realizar la tarea. Una aplicación de OAuth tiene acceso a todos los recursos de un usuario u propietario de la organización.

  • Las aplicaciones de OAuth pueden tener acceso de lectura o escritura a los datos de GitHub.
  • Puede conceder a una aplicación de GitHub acceso a una cuenta sin tener que concederle acceso a otra.

Seguridad de la aplicación

Cuando encuentra una vulnerabilidad en la aplicación, informar a los usuarios del proyecto debe ser una prioridad y constar en la directiva de seguridad. La comunicación rápida de un problema de seguridad podría marcar la diferencia entre que los usuarios puedan revocar un token en peligro o la exposición de datos confidenciales. Si bien los tokens son mucho más seguros que las contraseñas, la seguridad todavía puede ponerse en peligro y es importante que la organización esté preparada.

Además de un archivo README.md, se recomienda agregar un archivo SECURITY.md a los repositorios. El archivo SECURITY.md resalta la información relacionada con la seguridad del repositorio. El archivo debe incluir los contactos de seguridad, las directivas de su organización y detallar la respuesta que planea tomar cuando se detecta una vulnerabilidad.

Reacción a eventos

Las aplicaciones de GitHub están diseñadas para ser pasivas. Esperan a que suceda algo y luego reaccionan, normalmente a través de la API de GitHub. Cuando se espera a que se produzcan eventos en GitHub, hay dos enfoques: webhooks y sondeo.

Nota:

Las aplicaciones de GitHub no se limitan a trabajar con datos de GitHub. Puede esperar fácilmente los eventos que se producen desde otros orígenes o realizar acciones que actualicen otros servicios.

Uso de webhooks de GitHub

Los webhooks son el enfoque preferido para el control de eventos. Cuando sucede algo en GitHub dentro del ámbito de un webhook, se genera inmediatamente un evento. Los webhooks insertan notificaciones que la aplicación puede escuchar y procesar en tiempo real. Puede definir webhooks en la configuración del repositorio, incluidos los tipos de eventos, la autenticación y el modo en que se entregan las notificaciones HTTP.

Sondeo

A veces, los webhooks no son una opción. Es posible que la aplicación deba residir detrás de un firewall corporativo, donde GitHub no puede acceder directamente a ella. En ese caso, una alternativa es sondear los datos cuyo seguimiento se realiza mediante la API de GitHub.

Retransmisión de webhooks

Una alternativa al sondeo de aplicaciones detrás de un firewall es usar un servicio de reenvío de webhooks, como smee.io. Con este enfoque, el servicio público se suscribe al webhook del repositorio y, a continuación, retransmite los datos entrantes a un servicio cliente que se ejecuta detrás del firewall. Luego ese servicio cliente envía las notificaciones a la aplicación en ejecución como si provinieran del origen original.