Sobre o GitHub Enterprise Server
O GitHub Enterprise Server é uma versão auto-hospedada da plataforma GitHub. O GitHub distribui o GitHub Enterprise Server como um dispositivo virtual independente. Depois de provisionar uma máquina virtual e instalar o dispositivo, a instância executa um sistema operacional Linux com uma pilha de aplicativos personalizada. Para saber mais, confira Sobre o GitHub Enterprise Server.
Arquitetura de armazenamento
O GitHub Enterprise Server exige dois volumes de armazenamento: um montado no caminho do sistema de arquivos raiz (/) e o outro no caminho do sistema de arquivos do usuário (/data/user). Essa arquitetura simplifica os procedimentos de atualização, reversão e recuperação separando o ambiente do software em execução dos dados persistentes do aplicativo.
O sistema de arquivos raiz está incluído na imagem da máquina distribuída. Ele contém o sistema operacional de base e o ambiente de aplicativo GitHub Enterprise Server. O sistema de arquivos raiz deve ser tratado como efêmero. Todos os dados no sistema de arquivos raiz serão substituídos nas atualizações futuras do GitHub Enterprise Server.
O volume do armazenamento raiz é dividido em duas partições de tamanho igual. Uma das partições será montada como o sistema de arquivos raiz (/). A outra partição só será montada durante upgrades e reversões de upgrades como /mnt/upgrade, para facilitar as reversões, se necessário. Por exemplo, se um volume raiz de 400 GB for alocado, 200 GB serão alocados para o sistema de arquivos raiz e o volume raiz de 200 GB serão reservados para as atualizações e reversões.
Em novas instalações de 3.14 e posteriores, o volume de armazenamento raiz é dividido em quatro partições. Duas partições pequenas são para os modos de inicialização aceitos (BIOS e UEFI), e as outras duas partições igualmente grandes são para o GitHub Enterprise Server primário e atualizações e reversões.
O sistema de arquivos raiz contém arquivos que armazenam as informações a seguir. Esta lista não é exaustiva.
- Certificados de CA (autoridade de certificação) personalizados (no
/usr/local/share/ca-certificates*) - Configurações de rede personalizadas;
- Configurações de firewall personalizadas;
- O estado da replicação.
O sistema de arquivos do usuário contém arquivos que armazenam as seguintes configurações e dados. Esta lista não é exaustiva.
- Repositórios do Git;
- Bancos de dados
- Pesquisar índices
- Conteúdo publicado nos sites de GitHub Pages
- Arquivos grandes do Armazenamento de Arquivos Grandes do Git;
- Ambientes de hook pre-receive.
Topologias de implantação
Por padrão, o GitHub Enterprise Server é executado como uma instância autônoma. Você pode aumentar a confiabilidade e o desempenho do GitHub Enterprise Server usando uma topologia diferente para sua implantação.
- Para atenuar o impacto das falhas do sistema ou da rede, você poderá implantar uma instância de réplica passiva. Durante uma interrupção que afeta sua instância primária, você pode fazer failover manualmente para a instância de réplica. Para saber mais, confira Sobre a configuração de alta disponibilidade.
- Você pode configurar várias réplicas ativas para melhorar o desempenho de desenvolvedores geograficamente distantes da instância primária. Para saber mais, confira Sobre a replicação geográfica.
- Algumas empresas com dezenas de milhares de desenvolvedores podem se beneficiar de uma configuração de cluster que é dimensionada horizontalmente em vez de verticalmente. Para saber mais, confira Sobre agrupamento (clustering).
Retenção de dados e redundância de datacenter
Aviso
Antes de usar o GitHub Enterprise Server em um ambiente de produção, é altamente recomendável configurar backups e um plano de recuperação de desastres.
O GitHub Enterprise Server inclui suporte para backups online e incrementais com os GitHub Enterprise Server Backup Utilities. Você pode obter instantâneos incrementais em um link de rede seguro (porta administrativa SSH) por longas distâncias para fins de armazenamento externo ou geograficamente disperso. Em caso de desastre no datacenter primário, é possível restaurar instantâneos pela rede em uma instância recém-provisionado no momento da recuperação.
Além dos backups de rede, os instantâneos de volumes de armazenamento do usuário no AWS (EBS) e no VMware serão compatíveis enquanto a instância estiver offline ou em modo de manutenção. Se os requisitos de nível de serviço permitirem manutenção offline regular, os instantâneos de volumes regulares podem ser usados como alternativa de baixo custo e complexidade aos backups de rede com o GitHub Enterprise Server Backup Utilities.
Para saber mais, confira Como configurar backups em sua instância usando Utilitários de Backup.
Segurança
O GitHub Enterprise Server é executado na sua infraestrutura e é regido pelos controles de acesso e segurança que você define, como firewalls, políticas de rede, IAM, monitoramento e VPNs. O GitHub Enterprise Server é adequado para uso por empresas que estão sujeitas à conformidade regulatória, o que ajuda a evitar os problemas que surgem nas plataformas de desenvolvimento de software na nuvem pública.
O GitHub Enterprise Server também apresenta outros recursos de segurança.
- Sistema operacional, software e patches
- Segurança de rede
- Segurança de aplicativo
- Serviços externos e acesso ao suporte
- Comunicação criptografada
- Usuários e permissões de acesso
- Autenticação
- Log de auditoria e acesso
Sistema operacional, software e patches
O GitHub Enterprise Server executa um sistema operacional Linux personalizado somente com os aplicativos e serviços necessários. O GitHub distribui patches do sistema operacional central da instância como parte do ciclo padrão de versões do produto. Os patches tratam de problemas de segurança não críticos, funcionalidade e estabilidade do GitHub Enterprise Server. O GitHub também oferece patches de segurança críticos, conforme necessário e fora do ciclo regular de versões.
O GitHub Enterprise Server é fornecido como um dispositivo, e muitos dos pacotes do sistema operacional são modificados em comparação com a distribuição habitual do Ubuntu. Não há suporte para modificar o sistema operacional subjacente por esse motivo (incluindo upgrades do sistema operacional), que está alinhado ao contrato de licença e suporte do GitHub Enterprise Server, na seção 11.3 Exclusões.
Atualmente, o sistema operacional base para o GitHub Enterprise Server é o Ubuntu 20 (Focal Fossa). Embora o Ubuntu 20 (Focal Fossa) chegue ao fim do suporte padrão em maio de 2025, poderemos usar a manutenção de segurança estendida e obter suporte de segurança depois de 2025.
As atualizações regulares de patch são liberadas na página de versões do GitHub Enterprise Server, e a página de notas sobre a versão fornece mais informações. Geralmente, estas atualizações contêm correções de segurança do fornecedor upstream e do projeto depois de terem sido testadas e aprovadas em termos de qualidade pela nossa equipe de engenharia. Pode haver um pequeno atraso entre o lançamento da atualização upstream e o teste e empacotamento de uma versão de patch futura de GitHub Enterprise Server.
Segurança de rede
O firewall interno do GitHub Enterprise Server limita o acesso à rede para os serviços da instância. Apenas os serviços necessários para o funcionamento do appliance estão disponíveis na rede. Para saber mais, confira Portas de rede.
Segurança de aplicativo
A equipe de segurança de aplicativos do GitHub trabalha em tempo integral na avaliação de vulnerabilidades, testes de invasão e revisão de códigos dos produtos do GitHub e também do GitHub Enterprise Server. O GitHub também contrata empresas de segurança externas para fornecer avaliações específicas dos produtos do GitHub.
Serviços externos e acesso ao suporte
O GitHub Enterprise Server pode operar sem acessos de saída da sua rede para serviços externos. Alternativamente, você pode habilitar a integração com serviços externos de correio eletrônico, monitoramento externo e encaminhamento de logs. Para saber mais, confira Configurar notificações de e-mail, Configurando o monitoramento externo com collectd e Encaminhamento de logs.
Você pode levantar e enviar dados de soluções de problemas para o Suporte do GitHub. Para saber mais, confira Fornecendo dados para GitHub suporte.
Comunicação criptografada
GitHub projeta o GitHub Enterprise Server para ser executado atrás do firewall corporativo. Para garantir a comunicação com fio, incentivamos que o Transport Layer Security (TLS) seja habilitado. O GitHub Enterprise Server é compatível com certificados TLS comerciais de 2048 bits ou mais para tráfego HTTPS. Para saber mais, confira Configurando o TLS.
Por padrão, a instância também fornece acesso Secure Shell (SSH) para acesso a repositórios com o Git e para finalidades administrativas. Para saber mais, confira Sobre o SSH e Acessar o shell administrativo (SSH).
Se você configurar a autenticação do SAML para sua instância do GitHub Enterprise Server, você poderá habilitar as declarações criptografadas entre a instância e o seu IdP do SAML. Para saber mais, confira Usar SAML para IAM empresarial.
Usuários e permissões de acesso
O GitHub Enterprise Server oferece três tipos de contas.
- A conta de usuário do Linux
admintem acesso controlado ao sistema operacional subjacente, incluindo o sistema de arquivos direto e o acesso ao banco de dados. Um número reduzido de administradores deve ter acesso a essa conta, o que pode ser feito por SSH. Para saber mais, confira Acessar o shell administrativo (SSH). - As contas de usuários no aplicativo web da instância têm acesso total aos seus próprios dados e quaisquer dados que outros usuários ou organizações permitirem explicitamente.
- Administradores de site no aplicativo Web da instância são contas de usuários que podem gerenciar configurações de alto nível dos aplicativos Web e da instância, configurações de contas de usuários e organização e dados de repositório.
Para saber mais sobre as permissões de usuário do GitHub Enterprise Server, confira Permissões de acesso no GitHub.
Autenticação
O GitHub Enterprise Server oferece quatro métodos de autenticação.
- A autenticação com chave pública SSH oferece acesso a repositórios usando Git e acesso shell administrativo. Para saber mais, confira Sobre o SSH e Acessar o shell administrativo (SSH).
- A autenticação de nome de usuário e senha com cookies HTTP oferece acesso ao aplicativo web e gerenciamento de sessão, com autenticação de dois fatores (2FA) opcional. Para saber mais, confira Configurar a autenticação integrada.
- Autenticações LDAP, SAML ou CAS externas usando um serviço LDAP, provedor de identidade (IdP) SAML ou outros serviços compatíveis fornecem acesso ao aplicativo web. Para saber mais, confira Usar SAML para IAM empresarial.
- OAuth e personal access tokens fornecem acesso aos dados do repositório Git e a APIs para serviços e clientes externos. Para saber mais, confira Gerenciar seus tokens de acesso pessoal.
Registros de auditoria e acesso
O GitHub Enterprise Server armazena logs do sistema operacional tradicional e de aplicativos. O aplicativo também grava logs de auditoria e segurança detalhados, que são armazenados permanentemente pelo GitHub Enterprise Server. Você pode encaminhar os dois tipos de logs em tempo real para vários destinos por meio do protocolo syslog-ng. Para saber mais, confira Log de auditoria para uma empresa e Encaminhamento de logs.
Logs de acesso e auditoria contêm informações como as seguintes.
Logs de acesso
- Logs completos do servidor web para acesso ao navegador e à API
- Logs completos para acesso aos dados do repositório através dos protocolos Git, HTTPS e SSH.
- Logs de acesso administrativo em HTTPS e SSH
Logs de auditoria
- Login de usuários, redefinição de senhas, solicitações 2FA, alteração de configurações de e-mails e alterações em aplicativos e APIs autorizados
- Ações de administrador do site, como desbloqueio de contas de usuários e repositórios
- Eventos de push do repositório, concessão de acesso, transferências e renomeações
- Alterações nos integrantes da organização, incluindo criação e exclusão de equipes
Dependências de código aberto para o GitHub Enterprise Server
Você pode ver uma lista completa de dependências na versão de sua instância do GitHub Enterprise Server, bem como a licença de cada projeto, em http(s)://HOSTNAME/site/credits.
Tarballs com uma lista completa de dependências e metadados associados estão disponíveis na sua instância.
- Para dependências comuns a todas as plataformas, em
/usr/local/share/enterprise/dependencies-<GHE version>-base.tar.gz - Para dependências específicas de uma plataforma, em
/usr/local/share/enterprise/dependencies-<GHE version>-<platform>.tar.gz
Os tarballs também estão disponíveis, com uma lista completa de dependências e metadados, em https://enterprise.github.com/releases/<version>/download.html.