Visão geral do sistema
GitHub Enterprise Server is your organization's private copy of GitHub contained within a virtual appliance, hosted on premises or in the cloud, that you configure and control.
Neste artigo
- Arquitetura de armazenamento
- Opções de implantação
- Retenção de dados e redundância de datacenter
- Segurança
- Dependências de código aberto para o GitHub Enterprise Server
Arquitetura de armazenamento
GitHub Enterprise Server requires two storage volumes, one mounted to the root filesystem path (/
) and the other to the user filesystem path (/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. For more information, see "Clustering overview."
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. For more information, see "Configuring backups on your 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. You can restore snapshots over the network into a newly provisioned appliance at time of recovery in case of disaster at the primary datacenter.
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.
For more information, see "Configuring backups on your appliance."
Segurança
GitHub Enterprise Server is a virtual appliance that runs on your infrastructure and is governed by your existing information security controls, such as firewalls, IAM, monitoring, and VPNs. Using GitHub Enterprise Server can help you avoid regulatory compliance issues that arise from cloud-based solutions.
GitHub Enterprise Server also includes additional security features.
- Operating system, software, and patches
- Network security
- Application security
- External services and support access
- Encrypted communication
- Users and access permissions
- Autenticação
- Audit and access logging
Operating system, software, and patches
GitHub Enterprise Server runs a customized Linux operating system with only the necessary applications and services. GitHub manages patching of the appliance's core operating system as part of its standard product release cycle. Patches address functionality, stability, and non-critical security issues for GitHub applications. GitHub also provides critical security patches as needed outside of the regular release cycle.
Network security
GitHub Enterprise Server's internal firewall restricts network access to the appliance's services. Only services necessary for the appliance to function are available over the network. For more information, see "Network ports."
Application security
GitHub's application security team focuses full-time on vulnerability assessment, penetration testing, and code review for GitHub products, including GitHub Enterprise Server. GitHub also contracts with outside security firms to provide point-in-time security assessments of GitHub products.
External services and support access
GitHub Enterprise Server can operate without any egress access from your network to outside services. You can optionally enable integration with external services for email delivery, external monitoring, and log forwarding. For more information, see "Configuring email for notifications," "Setting up external monitoring," and "Log forwarding."
You can manually collect and send troubleshooting data to Suporte do GitHub. For more information, see "Providing data to Suporte do GitHub."
Encrypted communication
GitHub designs GitHub Enterprise Server to run behind your corporate firewall. To secure communication over the wire, we encourage you to enable Transport Layer Security (TLS). GitHub Enterprise Server supports 2048-bit and higher commercial TLS certificates for HTTPS traffic. For more information, see "Configuring TLS."
By default, the appliance also offers Secure Shell (SSH) access for both repository access using Git and administrative purposes. For more information, see "About SSH" and "Accessing the administrative shell (SSH)."
Users and access permissions
GitHub Enterprise Server provides three types of accounts.
- The
admin
Linux user account has controlled access to the underlying operating system, including direct filesystem and database access. A small set of trusted administrators should have access to this account, which they can access over SSH. For more information, see "Accessing the administrative shell (SSH)." - User accounts in the appliance's web application have full access to their own data and any data that other users or organizations explicitly grant.
- Site administrators in the appliance's web application are user accounts that can manage high-level web application and appliance settings, user and organization account settings, and repository data.
For more information about GitHub Enterprise Server's user permissions, see "Access permissions on GitHub."
Autenticação
GitHub Enterprise Server provides four authentication methods.
- SSH public key authentication provides both repository access using Git and administrative shell access. For more information, see "About SSH" and "Accessing the administrative shell (SSH)."
- Username and password authentication with HTTP cookies provides web application access and session management, with optional two-factor authentication (2FA). For more information, see "Using built-in authentication."
- External LDAP, SAML, or CAS authentication using an LDAP service, SAML Identity Provider (IdP), or other compatible service provides access to the web application. For more information, see "Authenticating users for your GitHub Enterprise Server instance."
- OAuth and Personal Access Tokens provide access to Git repository data and APIs for both external clients and services. For more information, see "Creating a personal access token for the command line."
Audit and access logging
GitHub Enterprise Server stores both traditional operating system and application logs. The application also writes detailed auditing and security logs, which GitHub Enterprise Server stores permanently. You can forward both types of logs in realtime to multiple destinations via the syslog-ng
protocol. For more information, see "Log forwarding."
Access and audit logs include information like the following.
Access logs
- Full web server logs for both browser and API access
- Full logs for access to repository data over Git, HTTPS, and SSH protocols
- Administrative access logs over HTTPS and SSH
Audit logs
- User logins, password resets, 2FA requests, email setting changes, and changes to authorized applications and APIs
- Site administrator actions, such as unlocking user accounts and repositories
- Repository push events, access grants, transfers, and renames
- Organization membership changes, including team creation and destruction
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
.