Arquitetura de armazenamento
O GitHub Enterprise Server precisa de dois volumes de armazenamento: um no caminho do sistema de arquivos raiz (/
) e 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 do 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 sistema de arquivos raiz tem o seguinte:
- Certificados personalizados de uma autoridade certificada (CA) (em /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 tem dados e configurações do usuário, como:
- Repositórios do Git;
- Banco de dados;
- Índices de pesquisa;
- Conteúdo publicado nos sites do GitHub Pages;
- Arquivos grandes do Git Large File Storage;
- Ambientes de hook pre-receive.
Opções de implantação
Você pode implantar o GitHub Enterprise Server como appliance virtual único ou em uma configuração de alta disponibilidade. Para obter mais informações, consulte "Configurar o GitHub Enterprise Server para alta disponibilidade".
Algumas organizações com dezenas de milhares de desenvolvedores também podem se beneficiar do clustering do GitHub Enterprise Server. Para obter mais informações, consulte "Sobre clustering."
Retenção de dados e redundância de datacenter
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. Para obter mais informações, consulte "Configurar backups no appliance".
O GitHub Enterprise Server dá suporte a 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 um appliance virtual 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 o appliance 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, consulte "Configurar backups no appliance".
Segurança
O GitHub Enterprise Server é um appliance virtual que é executado em sua infraestrutura e é administrado por controles de segurança da informação existentes, como firewalls, IAM, monitoramento e VPNs. Usar o GitHub Enterprise Server pode ajudá-lo a evitar problemas de conformidade regulatória que surgem de soluções baseadas na nuvem.
O GitHub Enterprise Server também apresenta outros recursos de segurança.
- Sistema operacional, software e patches
- Segurança de rede
- Segurança do 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 gerencia patches do sistema operacional central do appliance 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 nos aplicativos do GitHub. O GitHub também oferece pacthes de segurança críticos, conforme necessário e fora do ciclo regular de versões.
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 não damos suporte à modificação do sistema operacional subjacente por esta razão (incluindo atualizações do sistema operacional), que está alinhado à licença GitHub Enterprise Server e acordo de suporte, na seção 11.3 Exclusões.
Atualmente, a base do dispositivo de GitHub Enterprise Server é o Debian 9 (Stretch) e recebe suporte como parte do programa de 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.
Atualizações de atualização regulares são lançadas na página de GitHub Enterprise Server versões e a página de notas de 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 limita o acesso à rede para os serviços do appliance. Apenas os serviços necessários para o funcionamento do appliance estão disponíveis na rede. Para obter mais informações, consulte "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, consulte "Configurar e-mail para notificações, "Configurar o monitoramento externo" e "Encaminhamento de registro".
Você pode levantar e enviar dados de soluções de problemas para o Suporte do GitHub. Para obter mais informações, consulte "Enviar 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, consulte "Configurar o TLS".
Por padrão, o appliance também fornece acesso Secure Shell (SSH) para acesso a repositórios com o Git e para finalidades administrativas. Para obter mais informações, consulte "Sobre SSH" e "Acessar o shell administrativo (SSH)".
Usuários e permissões de acesso
O GitHub Enterprise Server oferece três tipos de contas.
- A conta de usuário Linux
admin
tem acesso controlado ao sistema operacional subjacente, com acesso direto ao sistema de arquivos e 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, consulte "Acessar o shell administrativo (SSH)". - As contas de usuários no aplicativo web do appliance 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 do appliance são contas de usuários que podem gerenciar configurações de alto nível dos aplicativos web e do appliance, 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ários do GitHub Enterprise Server, consulte "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, consulte "Sobre 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 obter mais informações, consulte "Usar 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 obter mais informações, consulte "Autenticar usuários na instância do GitHub Enterprise Server".
- Tokens OAuth e de acesso pessoal oferecem acesso a dados de repositórios e APIs Git para clientes e serviços externos. Para mais informação, consulte "Criando 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. Os dois tipos de logs podem ser encaminhados em tempo real para destinos múltiplos via protocolo syslog-ng
. Para obter mais informações, consulte "Encaminhamento de registro".
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
Veja uma lista completa de dependências na sua versão do appliance do GitHub Enterprise Server, além das licenças 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 no seu appliance:
- 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
.