Skip to main content

Información general del sistema

Obtén más información sobre la seguridad, la funcionalidad y los elementos internos del sistema de GitHub Enterprise Server.

Acerca de GitHub Enterprise Server

GitHub Enterprise Server es una versión autoalojada de la plataforma GitHub. GitHub distribuye GitHub Enterprise Server como una aplicación virtual independiente. Después de aprovisionar una máquina virtual e instalar el dispositivo, la instancia ejecuta un sistema operativo Linux con una pila de aplicaciones personalizada. Para más información, consulta "Acerca de GitHub Enterprise Server".

Arquitectura de almacenamiento

En GitHub Enterprise Server, se necesitan dos volúmenes de almacenamiento: uno montado en la ruta de acceso del sistema de archivos raíz (/) y el otro, en la ruta de acceso del sistema de archivos del usuario (/data/user). Esta arquitectura simplifica los procedimientos de actualización, reversión y recuperación al separar el entorno del software que se ejecuta de los datos de aplicación persistentes.

El sistema de archivos raíz está incluido en la imagen de máquina distribuida. Contiene el sistema operativo base y el entorno de aplicación GitHub Enterprise Server. El sistema de archivos raíz debería tratarse como efímero. Se reemplazará cualquier dato en el sistema de archivos raíz cuando se actualice con lanzamientos futuros de GitHub Enterprise Server.

El volumen de almacenamiento raíz se divide en dos particiones del mismo tamaño. Una de las particiones se montará como el sistema de archivos raíz (/). La otra partición solo se montará durante actualizaciones y reversiones de actualizaciones como /mnt/upgrade, para facilitar esas reversiones en caso de que sea necesario. Por ejemplo, si se asigna un volumen raíz de 200GB, 100GB se asignarán al sistema de archivos raíz y otros 100GB se reservarán para las mejoras y reversiones.

El sistema de archivos raíz contiene archivos que almacenan la información siguiente. Esta lista no es exhaustiva.

  • Certificados de entidad de certificación (CA) personalizada (en /usr/local/share/ca-certificates*)
  • Las configuraciones de red personalizadas
  • Las configuraciones de firewall personalizadas
  • El estado de replicación

El sistema de archivos del usuario contiene archivos que almacenan los datos y la configuración siguientes. Esta lista no es exhaustiva.

  • Repositorios Git
  • Bases de datos
  • Índices de búsqueda
  • Contenido publicado en los sitios GitHub Pages
  • Archivos grandes de Almacenamiento de archivos de gran tamaño de Git
  • Entornos de enlaces de pre-recepción

Topologías de implementación

De manera predeterminada, GitHub Enterprise Server se ejecuta como una instancia independiente. Puedes aumentar la fiabilidad y el rendimiento de GitHub Enterprise Server mediante una topología diferente para la implementación.

  • Para mitigar el impacto de los errores del sistema o de la red, puedes implementar una instancia de réplica pasiva. Durante una interrupción que afecte a la instancia principal, puedes conmutar por error manualmente a la instancia de réplica. Para obtener más información, vea «Acerca de la configuración de alta disponibilidad».
  • Puedes configurar varias réplicas activas para mejorar el rendimiento de los desarrolladores que están geográficamente alejados de la instancia principal. Para obtener más información, vea «Acerca de la Replicación geográfica».
  • Algunas empresas con decenas de miles de desarrolladores pueden beneficiarse de una configuración de clúster que se escala horizontalmente en lugar de verticalmente. Para obtener más información, vea «Acerca de las agrupaciones».

Retención de datos y redundancia de centro de datos

Advertencia: Antes de usar GitHub Enterprise Server en un entorno de producción, recomendamos firmemente que configures copias de seguridad y un plan de recuperación ante desastres.

GitHub Enterprise Server incluye compatibilidad con copias de seguridad incrementales y en línea con las GitHub Enterprise Server Backup Utilities. Puedes tomar instantáneas incrementales sobre un enlace de red seguro (el puerto administrativo SSH) sobre grandes distancias para el almacenamiento externo o geográficamente disperso. Puedes restaurar instantáneas a través de la red en una instancia recientemente aprovisionada al momento de la recuperación en el caso de un desastre en el centro de datos principal.

Además de las copias de seguridad de red, se admiten las instantáneas de disco AWS (EBS) y VMware de los volúmenes de almacenamiento del usuario mientras que la instancia está sin conexión o en modo de mantenimiento. Las instantáneas de volumen regulares pueden usarse como una alternativa de bajo costo y baja complejidad para las copias de seguridad de red con GitHub Enterprise Server Backup Utilities si tus requisitos de nivel de servicio permiten un mantenimiento fuera de línea regular.

Para obtener más información, vea «Configuración de copias de seguridad en la instancia».

Seguridad

GitHub Enterprise Server se ejecuta en la infraestructura y está regulado por controles de acceso y seguridad que tú defines, como firewall, políticas de red, IAM, supervisión y VPN. GitHub Enterprise Server es adecuado para las empresas que están sujetas al cumplimiento normativo, lo que ayuda a evitar problemas que surgen de plataformas de desarrollo de software en la nube pública.

GitHub Enterprise Server también incluye características de seguridad adicionales.

Sistema operativo, software y parches

GitHub Enterprise Server ejecuta un sistema operativo Linux personalizado con solo las aplicaciones y los servicios necesarios. GitHub distribuye las revisiones del sistema operativo central de la instancia como parte de su ciclo estándar de lanzamiento de productos. Las revisiones abordan problemas de funcionalidad, estabilidad y de seguridad no críticos para GitHub Enterprise Server. GitHub también proporciona revisiones críticas de seguridad según se necesiten fuera del ciclo de lanzamiento regular.

GitHub Enterprise Server se proporciona como un dispositivo y muchos de los paquetes de sistema operativo se modifican en comparación con la distribución Ubuntu habitual. Por esta razón no se admite la modificación del sistema operativo subyacente (incluidas las actualizaciones del sistema operativo), lo que se alinea con el contrato de licencia y soporte técnico de GitHub Enterprise Server, bajo las exclusiones de la sección 11.3.

Actualmente, el sistema operativo base para GitHub Enterprise Server es Ubuntu 20 (Focal Fossa).

Las actualizaciones de revisiones periódicas se publican en la página de versiones de GitHub Enterprise Server. Además, la página de notas de la versión proporciona más información. Estos parches a menudo contienen un proveedor de nivel superior y parches de seguridad de proyecto después de que se prueban y que nuestro equipo de ingeniería aprueba su calidad. Puede haber una demora de tiempo pequeña desde el momento en que se lanza la actualización ascendente hasta el momento en que se prueba y se empaqueta en el lanzamiento de una revisión futura de GitHub Enterprise Server.

Seguridad de las redes

El firewall interno de GitHub Enterprise Server restringe el acceso de la red a los servicios de la instancia. Están disponibles en la red únicamente los servicios necesarios para que el aparato funcione. Para obtener más información, vea «Puertos de red».

Seguridad de las aplicaciones

El equipo de seguridad de la aplicación de GitHub se centra completamente en la evaluación de vulnerabilidades, la prueba de penetración y la revisión del código para los productos de GitHub, incluido GitHub Enterprise Server. GitHub también contrata firmas de seguridad externas para proporcionar valoraciones de seguridad puntuales de los productos de GitHub.

Servicios externos y acceso de soporte

GitHub Enterprise Server puede funcionar sin ningún acceso de salida de tu red a servicios externos. De forma opcional, puedes habilitar la integración con servicios externos para la entrega de correo electrónico, el monitoreo externo y el reenvío de bitácoras. Para más información, consulta "Configurar el correo electrónico para notificaciones," "Configurar la revisión externa" y "Redireccionamiento de registro".

Puedes recopilar y enviar manualmente datos de resolución de problemas a Soporte de GitHub. Para obtener más información, vea «Cómo proporcionar datos al servicio de soporte técnico de GitHub».

Comunicación encriptada

GitHub diseña GitHub Enterprise Server para que se ejecute detrás de tu firewall corporativo. Para asegurar la comunicación a través del cable, te alentamos a habilitar la seguridad de la capa de transporte (TLS). GitHub Enterprise Server admite certificados TLS comerciales de 2048 bits y superiores para el tráfico HTTPS. Para obtener más información, vea «Configurar TLS».

De manera predeterminada, la instancia también ofrece acceso Secure Shell (SSH) con fines administrativos y para el acceso al repositorio utilizando Git. Para obtener más información, vea «Acerca de SSH» y «Acceder al shell administrativo (SSH)».

Si configuras la autenticación de SAML para tu instancia de GitHub Enterprise Server, puedes habilitar las aserciones cifradas entre la instancia y tu IdP de SAML. Para obtener más información, vea «Uso de SAML para IAM empresarial».

Usuarios y permisos de acceso

GitHub Enterprise Server proporciona tres tipos de cuentas.

  • La cuenta de usuario de Linux admin ha controlado el acceso al sistema operativo subyacente, incluido el acceso directo al sistema de archivos y la base de datos. Un pequeño conjunto de administradores de confianza debería tener acceso a esta cuenta, a la que pueden acceder por medio de SSH. Para obtener más información, vea «Acceder al shell administrativo (SSH)».
  • Las cuentas de usuario en la aplicación web de la instancia tienen acceso completo a sus propios datos y a cualquier dato que otros usuarios u organizaciones concedan de manera explícita.
  • Los administradores del sitio en la aplicación web de la instancia son cuentas de usuario que pueden administrar los ajustes de instancia y aplicación web de alto nivel, la configuración de las cuentas de usuario y organización, y los datos del repositorio.

Para obtener más información sobre permisos de usuario de GitHub Enterprise Server, consulta "Permisos de acceso en GitHub".

Authentication

GitHub Enterprise Server proporciona cuatro métodos de autenticación.

  • La autenticación de claves públicas SSH proporciona acceso del repositorio usando Git y el shell administrativo. Para obtener más información, vea «Acerca de SSH» y «Acceder al shell administrativo (SSH)».
  • El nombre de usuario y la autenticación de contraseña con cookies HTTP proporciona acceso a la aplicación web y la gestión de sesiones, con autenticación opcional de dos factores (2FA). Para obtener más información, vea «Configurar la autenticación integrada».
  • La autenticación externa LDAP, SAML o CAS mediante un servicio LDAP, SAML Identity Provider (IdP) u otro servicio compatible proporciona acceso a la aplicación web. Para obtener más información, vea «Uso de SAML para IAM empresarial».
  • OAuth y los personal access token proporcionan acceso a los datos del repositorio de Git y a API para servicios y clientes externos. Para obtener más información, vea «Administración de tokens de acceso personal».

Auditoría y registro de acceso

GitHub Enterprise Server almacena registros tradicionales tanto de aplicaciones como de sistemas operativos. La aplicación también escribe registros de auditoría y seguridad detallados, que GitHub Enterprise Server almacena de manera permanente. Puede reenviar ambos tipos de registros en tiempo real a varios destinos por medio del protocolo syslog-ng. Para obtener más información, vea «Acerca del registro de auditoría de la empresa» y «Redireccionamiento de registro».

Los registros de acceso y de auditoría incluyen información como la siguiente.

Registros de acceso

  • Registros completos de servidor web tanto para el navegador como para el acceso a la API
  • Registros completos para acceder a los datos del repositorio por medio de protocolos Git, HTTPS y SSH
  • Registros de acceso administrativo por medio de HTTPS y SSH

Registros de auditoría

  • Inicios de sesión del usuario, restablecimientos de contraseña, solicitudes 2FA, cambios en la configuración del correo electrónico y cambios en aplicaciones autorizadas y API
  • Acciones de administrador del sitio, como desbloquear cuentas de usuario y repositorios
  • Eventos push de repositorio, permisos de acceso, transferencias y renombres
  • Cambios de membresía de la organización, incluida la creación y la destrucción de equipo

Dependencias de código abierto para GitHub Enterprise Server

Puedes ver una lista completa de las dependencias en la versión de GitHub Enterprise Server de la instancia, así como a la licencia de cada proyecto, en http(s)://HOSTNAME/site/credits.

En la instancia, están disponibles los tarballs con una lista completa de las dependencias y los metadatos asociados.

  • Para las dependencias comunes a todas las plataformas, en /usr/local/share/enterprise/dependencies-<GHE version>-base.tar.gz
  • Para las dependencias específicas de una plataforma, en /usr/local/share/enterprise/dependencies-<GHE version>-<platform>.tar.gz

También hay archivos .tar disponibles, con una lista completa de dependencias y metadatos, en https://enterprise.github.com/releases/<version>/download.html.

Información adicional