Skip to main content

Visão geral do sistema

Saiba mais sobre os dados internos, a funcionalidade e a segurança do sistema do GitHub Enterprise Server.

Sobre o GitHub Enterprise Server

O GitHub Enterprise Server é uma plataforma autohospedada para desenvolvimento de software em sua empresa. GitHub distribui 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 obter mais informações, confira "Sobre 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 for alocado um volume raiz de 200 GB, haverá 100 GB alocados no sistema de arquivos raiz e 100 GB reservados para 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 dados e configuração a seguir. Esta lista não é exaustiva.

  • Repositórios do Git;
  • Bancos de dados
  • Pesquisar índices
  • Conteúdo publicado nos sites do GitHub Pages;
  • Arquivos grandes do Git Large File Storage;
  • Ambientes de hook pre-receive.

Topologias de implantação

Você pode implantar GitHub Enterprise Server em uma variedade de topologias, como um par de alta disponibilidade. Para obter mais informações, confira "Sobre o GitHub Enterprise Server."

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 o 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 obter mais informações, confira "Como configurar backups no seu dispositivo".

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 ser usado em empresas 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

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 Debian. 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 GitHub Enterprise Server é Debian 9 (Stretch), que recebe suporte de acordo com o programa Suporte de Longo Prazo Debian. Há planos para mudar para um sistema operacional base mais novo antes do final do período Debian LTS para o Stretch.

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. De modo geral, estas atualizações contêm caminhos de segurança do fornecedor a montante e do projeto depois de terem sido testadas e de qualidade aprovadas 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 futura de atualização de GitHub Enterprise Server.

Segurança de rede

O firewall interno do GitHub Enterprise Server restringe o acesso de rede aos serviços da instância. Apenas os serviços necessários para o funcionamento do appliance estão disponíveis na rede. Para obter mais informações, confira "Portas de rede".

Segurança do 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 obter mais informações, confira "Como configurar o email para notificações", "Como configurar o monitoramento externo" e "Encaminhamento de log".

Você pode levantar e enviar dados de soluções de problemas para o Suporte do GitHub. Para obter mais informações, confira "Como fornecer dados para o Suporte do GitHub".

Comunicação criptografada

O GitHub desenvolveu 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 obter mais informações, confira "Como configurar 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 obter mais informações, confira "Sobre o SSH" e "Como acessar o shell administrativo (SSH)".

Usuários e permissões de acesso

O GitHub Enterprise Server fornece três tipos de contas.

  • A conta de usuário do Linux admin tem 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 obter mais informações, confira "Como 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 obter mais informações 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 obter mais informações, confira "Sobre o SSH" e "Como 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 obter mais informações, confira "Como usar a autenticação interna".
  • 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 obter mais informações, confira "Como gerenciar o IAM para sua empresa".
  • Tokens OAuth e de acesso pessoal oferecem acesso a dados de repositórios e APIs Git para clientes e serviços externos. Para obter mais informações, confira "Como criar um token de acesso pessoal".

Log 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 obter mais informações, confira "Sobre o log de auditoria para sua empresa" e "Encaminhamento de log."

Logs de acesso e auditoria contêm informações como as seguintes.

Logs de acesso

  • Logs de servidor web completos para acessos ao navegador e API
  • Logs completos para acesso aos dados do repositório no Git, HTTPS e protocolos 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.

Os tarballs e 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.

Leitura adicional