Skip to main content

Descripción del sistema

Aprende más sobre lo interno, la funcionalidad y la seguridad del sistema de GitHub Enterprise Server.

Acerca de GitHub Enterprise Server

GitHub Enterprise Server is a self-hosted platform for software development within your enterprise. GitHub distributes GitHub Enterprise Server as a self-contained virtual appliance. After you provision a virtual machine and install the appliance, the instance runs a Linux operating system with a custom application stack. Para obtener más información, consulta la sección "Acerca de GitHub Enterprise Server".

Arquitectura de almacenamiento

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

El sistema de archivos raíz se incluye en la imagen de la máquina distribuída. Esta contiene el sistema operativo base y el ambiente de la aplicación de GitHub Enterprise Server. El sistema de archivos raíz se debe tratar como efímero. Cualquier tipo de datos en el sistema de archivos raíz se reemplazará cuando se haga una mejora a lanzamientos futuros de GitHub Enterprise Server.

El volumen de almacenamiento se dividen en dos particiones del mismo tamaño. Una de estas se montará como el sistema de archivos raíz (/). La otra partición solo se montará durante las mejoras y reversiones de mejoras como /mnt/upgrade, para hacer que dichas reversiones se lleven a cabo más fácilmente 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 siguiente información. Esta lista no es exhasutiva.

  • Certificados de autoridad de certificados (CA) personalizados (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 siguientes datos y configuraciones. Esta lista no es exhasutiva.

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

Topologías de despliegue

Puedes desplegar GitHub Enterprise Server en diversas topologías, tales como un par de disponibilidad alta. Para obtener más información, consulta la sección "Acerca de GitHub Enterprise Server".

Retención de datos y redundancia de centro de datos

Advertencia: Antes de utilizar GitHub Enterprise Server en un ambiente productivo, te recomendamos ampliamente que configures respaldos y un plan de recuperación de desastres.

GitHub Enterprise Server incluye apoyo para los respaldos incrementales y en línea con Utilidades de respaldo del servidor de GitHub Enterprise. 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 restablecer capturas de la red en una instancia recién aprovisionada en el momento de la recuperación en caso de que se suscite un desastre en el centro de datos primario.

Adicionalmente a los respaldos de red, tanto las capturas de disco de los volúmenes de almacenamiento de usuario de AWS (EBS) como las de VMware son compatibles mientras la instancia está desconectada 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 Utilidades de respaldo del servidor de GitHub Enterprise si tus requisitos de nivel de servicio permiten un mantenimiento fuera de línea regular.

Para obtener más información, consulta "Configurar copias de seguridad en tu aparato"

Seguridad

GitHub Enterprise Server runs on your infrastructure and is governed by access and security controls that you define, such as firewalls, network policies, IAM, monitoring, and VPNs. GitHub Enterprise Server is suitable for use by enterprises that are subject to regulatory compliance, which helps to avoid issues that arise from software development platforms in the public cloud.

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 que solo cuenta con las aplicaciones y servicios necesarios. GitHub distribuye parches para el sistema operativo nuclear de la instancia como parte de su ciclo de lanzamiento de producto estándar. Los parches tratan la funcionalidad, estabilidad y los problemas de seguridad no críticos para GitHub Enterprise Server. GitHub también proporciona parches de seguridad críticos conforme asea necesario fuera del ciclo de lanzamiento habitual.

GitHub Enterprise Server se proporciona como un aplicativo y muchos de los paquetes de sistema operativo se modifican en comparación con la distribución habitual de Debian. No ofrecemos compatibilidad con la modificación del sistema operativo subyacente por esta razón (incluyendo las mejoras de los sistemas operativos), lo cual se alinea con la licencia de GitHub Enterprise Server y el acuerdo de soporte, bajo las exclusiones de la sección 11.3.

Actualmente, el sistema operativo base de GitHub Enterprise Server es Debian 9 (Stretch), el cual recibe soporte bajo el programa de Soporte a Largo Plazo de Debian. Existen planes para migrarse a un sistema operativo base nuevo antes del final del periodo de Debian LTS para Stretch.

Las actualizaciones habituales de parches se lanzan en la página de lanzamientosde GitHub Enterprise Server y la página de notas de lanzamiento proporciona más información al respecto. 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 un ligero retraso desde cuando se lanza la actualización de nivel superior a cuando esta se prueba y se empaqueta en un lanzamiento de parche de GitHub Enterprise Server subsecuente.

Seguridad de la red

El cortafuegos interno de GitHub Enterprise Server restringe el acceso a la red de 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, consulta "Puertos de red."

Seguridad de la aplicación

El equipo de seguridad de la aplicación de GitHub se enfoca por tiempo completo en la valoración de vulnerabilidades, pruebas de penetración y revisión de código para los productos de GitHub, incluyendo a GitHub Enterprise Server. GitHub también hace contratos con empresas de seguridad externas para proporcionar valoraciones de seguridad a los productos de GitHub en momentos específicos.

Servicios externos y acceso de soporte

GitHub Enterprise Server puede operar sin ningún acceso de salida desde tu red hacia los 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 obtener más información, consulta las secciones "Configurar las notificaciones por correo electrónico", "Configurar el monitoreo externo", y "Reenvío de bitácoras".

Puedes recopilar y enviar manualmente datos de resolución de problemas a Soporte de GitHub. Para obtener más información, consulta "Proporcionar datos a Soporte de GitHub".

Comunicación encriptada

GitHub diseña a GitHub Enterprise Server para que se ejecute detrás de tu cortafuegos 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 es compatible con certificados TLS comerciales de 2048 bits y superiores para el tráfico HTTPS. Para obtener más información, consulta la sección "Configurar el TLS".

Predeterminadamente, la instancia también ofrece acceso de "Secure Shell" (SSH) tanto para el acceso al repositorio utilizando Git como para propósitos administrativos. Para obtener más información, consulta "Acerca de SSH" y "Acceder al shell administrativo (SSH)."

Usuarios y permisos de acceso

GitHub Enterprise Server proporciona tres tipos de cuentas.

  • La cuenta de usuario de Linux del administrador ha controlado el acceso al sistema operativo subyacente, incluido el sistema de archivos directo y el acceso a 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, consulta "Acceder al shell administrativo (SSH)".
  • Las cuentas de usuario en la aplicación web de la instancia tienen acceso total a sus propios datos y a cualquier otros que los usuarios u organizaciones otorguen acceso explícitamente.
  • Los administradores de sitio en la aplicación web de la instancia son cuentas de usuario que pueden administrar ajustes de instancia y aplicación web de alto nivel, ajustes de cuenta de organización y de usuario y datos de repositorio.

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

Autenticación

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, consulta "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, consulta ña sección "Utilizar 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, consulta la sección "Administrar el IAM para tu empresa".
  • OAuth y los token de acceso personal proporcionan acceso a los datos del repositorio de Git y a API para clientes externos y servicios. Para obtener más información, consulta la sección "Crear un token de acceso personal".

Auditoría y registro de acceso

GitHub Enterprise Server almacena tanto sistemas operativos tradicionales como bitácoras de aplicación. La aplicación también escribe bitácoras de seguridad y de auditoría detalladas, las cuales GitHub Enterprise Server almacena premanentemente. Puedes reenviar ambos tipos de bitácoras en tiempo real a varios destinos a través del protocolo syslog-ng. Para obtener más información, consulta las secciones "Acerca de la bitácora de auditoría para tu empresa" y "Reenvío de bitácoras".

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 dependencias en la versión de GitHub Enterprise Server de tu instancia, así como la licencia de cada proyecto, en http(s)://HOSTNAME/site/credits.

Las tarballs con una lista completa de dependencias y los metadatos asociados están disponibles en tu instancia.

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

También están disponibles los tarballes, con una lista completa de las dependencias y los metadatos, en https://enterprise.github.com/releases/<version>/download.html.

Leer más