Sobre a autenticação do LDAP no GitHub Enterprise Server
O LDAP é um protocolo de aplicativo popular para acesso e manutenção dos serviços de informações de diretório, além de ser um dos protocolos mais comuns para integração de software de terceiros a diretórios de usuários em grandes empresas. Para obter mais informações, confira "Lightweight Directory Access Protocol" na Wikipédia.
Se você usar um diretório LDAP para autenticação centralizada, poderá configurar a autenticação LDAP para as pessoas que usam a sua instância do GitHub Enterprise Server.
Observação: você pode usar SAML ou LDAP, mas não ambos.
Se você deseja permitir a autenticação para algumas pessoas que não têm uma conta no seu provedor de autenticação externo, permita a autenticação de fallback para contas locais no sua instância do GitHub Enterprise Server. Para obter mais informações, confira "Como permitir a autenticação interna para usuários de fora do seu provedor".
Serviços LDAP compatíveis
O GitHub Enterprise Server se integra aos seguintes serviços LDAP:
- Active Directory
- FreeIPA;
- Oracle Directory Server Enterprise Edition
- OpenLDAP
- Abrir Diretório
- 389-ds.
Considerações de nome de usuário no LDAP
O GitHub Enterprise Server normaliza um valor do provedor de autenticação externo para determinar o nome de usuário de cada nova conta pessoal no sua instância do GitHub Enterprise Server. Para obter mais informações, veja "Considerações de nome de usuário para autenticação externa".
Como configurar o LDAP com a sua instância do GitHub Enterprise Server
Depois que você configurar o LDAP, os usuários poderão acessar a instância com as credenciais LDAP. Quando os usuários acessarem pela primeira vez, seus nomes de perfil, endereços de e-mail e chaves SSH serão definidos com os atributos LDAP do diretório.
Quando você configurar o acesso LDAP dos usuários pelo Console de Gerenciamento, suas licenças de usuário não serão usadas até que o primeiro usuário faça login na sua instância. No entanto, se você criar uma conta manualmente usando as configurações de administrador do site, a licença do usuário é imediatamente contabilizada.
Aviso: antes de configurar o LDAP em sua instância do GitHub Enterprise Server, verifique se o serviço LDAP dá suporte a resultados paginados.
- Em uma conta administrativa no GitHub Enterprise Server, no canto superior direito de qualquer página, clique em .
- Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.
- Na barra lateral " Administrador do site", clique em Console de Gerenciamento .
- Na barra lateral "Configurações", clique em Autenticação.
- Em "Autenticação", selecione LDAP.
- Opcionalmente, para permitir que pessoas sem uma conta em seu sistema de autenticação externa entrem com autenticação interna, selecione Permitir autenticação interna. Para obter mais informações, confira "Como permitir a autenticação interna para usuários de fora do seu provedor".
- Defina as configurações.
Atributos LDAP
Use estes atributos para concluir a configuração do LDAP em sua instância do GitHub Enterprise Server.
Nome do atributo | Obrigatório | Descrição |
---|---|---|
Host | O host do LDAP, por exemplo, ldap.example.com ou 10.0.0.30 . Se o nome do host só está disponível na rede interna, talvez seja necessário configurar o DNS de sua instância do GitHub Enterprise Server | |
primeiro para que ele possa resolver o nome do host usando os servidores de nomes internos. | ||
Port | Porta em que os serviços de host LDAP estão escutando. Por exemplo: 389 e 636 (para LDAPS). | |
Encryption | Método de criptografia usado para proteger as comunicações com o servidor LDAP. Por exemplo, básico (sem criptografia), SSL/LDAPS (criptografia desde o início) e StartTLS (atualizar para comunicação com criptografia no momento da conexão). | |
Domain search user | O usuário do LDAP que procura outros usuários que efetuam o login para permitir a autenticação. Em geral, é uma conta de serviço criada especificamente para integrações de terceiros. Use um nome totalmente qualificado, como cn=Administrator,cn=Users,dc=Example,dc=com . Com o Active Directory, use também a sintaxe [DOMAIN]\[USERNAME] (por exemplo, WINDOWS\Administrator ) para o usuário de pesquisa de domínio com o Active Directory. | |
Domain search password | Senha do usuário de pesquisa de domínio. | |
Administrators group | Ao fazerem login no seu appliance, os usuários deste grupo são promovidos a administradores do site. Se você não configurar um grupo de administradores LDAP, a primeira conta de usuário LDAP que acessar seu appliance será automaticamente promovida a administrador do site. | |
Domain base | O DN (Distinguished Name ) totalmente qualificado de uma subárvore do LDAP na qual você deseja pesquisar usuários e grupos. Cada grupo deve ser definido na mesma base de domínio que os usuários pertencentes a ele. Se você especificar grupos de usuários restritos, somente os usuários pertencentes a esses grupos estarão no escopo. É recomendável especificar o nível superior da sua árvore de diretórios LDAP como base de domínio e usar grupos de usuários restritos para controlar o acesso. Você pode configurar várias bases de domínio. No entanto, o GitHub Enterprise Server procura usuários e membros de grupo em cada base de domínio configurada sequencialmente e, portanto, a configuração de várias bases de domínio pode aumentar o número de consultas LDAP executadas. Para garantir o desempenho e a estabilidade da instância, recomendamos que você configure no máximo três bases de domínio. | |
Restricted user groups | Se especificados, somente os usuários desses grupos poderão efetuar login. Você só precisa especificar os nomes comuns (CNs) dos grupos. Se nenhum grupo for especificado, todos os usuários no escopo da base de domínio especificada poderão entrar na sua instância do GitHub Enterprise Server. Você pode configurar vários grupos de usuários restritos. No entanto, cada grupo aumenta o número de consultas LDAP de membros de grupo que o GitHub Enterprise Server executa para cada usuário. Para evitar tempos limite de autenticação e problemas de desempenho de sincronização, recomendamos que você configure no máximo três grupos. | |
User ID | Atributo LDAP que identifica o usuário LDAP que tenta fazer a autenticação. Quando houver mapeamento estabelecido, os usuários poderão alterar seus nomes de usuário no GitHub Enterprise Server. Esse campo deve ser sAMAccountName para a maioria das instalações do Active Directory, mas pode ser uid para outras soluções de LDAP, como o OpenLDAP. O valor padrão é uid . | |
Profile name | Nome exibido na págin de perfil do usuário no GitHub Enterprise Server. Se a Sincronização LDAP estiver habilitada, os usuários poderão alterar seus nomes de perfil. | |
Emails | Endereço de e-mail para a conta de usuário no GitHub Enterprise Server. | |
SSH keys | Chaves SSH públicas vinculadas à conta de um usuário no GitHub Enterprise Server. As chaves devem estar no formato OpenSSH. | |
GPG keys | Chaves GPG vinculadas à conta de um usuário no GitHub Enterprise Server. | |
Disable LDAP authentication for Git operations | Se selecionado, desativa a capacidade dos usuários de usar senhas do LDAP para autenticar operações do Git. | |
Enable LDAP certificate verification | Se selecionado, ativa a verificação de certificado LDAP. | |
Synchronization | Se selecionado, ativa a Sincronização LDAP. |
Desabilitar autenticação de senha nas operações no Git
Para impor o uso de personal access tokens ou de chaves SSH para acesso ao Git, o que pode ajudar a impedir que o servidor fique sobrecarregado por solicitações de autenticação LDAP, você pode desabilitar a autenticação por senha para operações do Git.
Essa configuração é recomendável porque servidores LDAP com resposta lenta, especialmente combinados a um grande número de solicitações devido à sondagem, são uma causa comum de interrupções e problemas de desempenho.
Para desabilitar a autenticação de senha para operações do Git, selecione Desabilitar autenticação de nome de usuário e senha para operações do Git nas configurações do LDAP.
Quando essa opção for selecionada, se um usuário tentar usar uma senha para operações Git por meio da linha de comando, ele receberá a mensagem de erro Password authentication is not allowed for Git operations. You must use a personal access token.
Habilitar verificação certificada LDAP
Você pode validar o certificado do servidor LDAP usado com TLS habilitando a verificação de certificado LDAP.
Para habilitar a verificação de certificado LDAP, selecione Habilitar verificação de certificado LDAP nas configurações do LDAP.
Quando esta opção estiver selecionada, o certificado será validado para garantir o seguinte:
- Se o certificado contiver ao menos um nome alternativo da entidade (SAN, Subject Alternative Name), um dos SANs deve corresponder ao nome do host LDAP. Do contrário, o nome comum (CN) corresponderá ao nome de host LDAP.
- O certificado não expirou.
- O certificado deve estar assinado por uma autoridade de certificação (CA, Certificate Authority) confiável.
Habilitar a Sincronização LDAP
Você pode estabelecer o controle de acesso baseado em função para usuários do servidor LDAP sincronizando os usuários do GitHub Enterprise Server e a associação de equipe em relação aos grupos LDAP estabelecidos. Para obter mais informações, confira "Criar equipes".
A sincronização LDAP não cria contas de usuário no sua instância do GitHub Enterprise Server. Para obter mais informações, consulte "Exibir e criar usuários LDAP".
Observação: o uso da Sincronização LDAP com grupos que excedem 1499 membros pode levar a falhas de sincronização de associação da equipe.
Se você usar especificamente o Active Directory, as pesquisas de usuário e a sincronização da equipe poderão falhar quando os grupos LDAP configurados para equipes ou no Console de Gerenciamento excederem 1500 membros, devido ao limite MaxValRange
no Active Directory. Como solução alternativa, você pode usar os grupos do Active Directory que contêm menos de 1500 membros ou trabalhar com o administrador do Active Directory para aumentar o valor MaxValRange
dos controladores de domínio. Para obter mais informações, confira Exibir e definir a política LDAP no Active Directory usando Ntdsutil.exe no Microsoft Learn.
Se você precisar de ajuda para determinar se modificar o MaxValRange
é a abordagem certa para seu ambiente do Active Directory, entre em contato com Suporte da Microsoft.
Para ativar a Sincronização LDAP, nas configurações LDAP, selecione Sincronização.
Para escolher um intervalo de sincronização para todos os usuários e todas as equipes, clique nos menus suspensos. Em seguida, selecione a cada 1 hora, a cada 4 horas ou a cada 24 horas.
Para sincronizar automaticamente determinados atributos do LDAP, em "Sincronizar e-mails, SSH & chaves GPG do usuário", clique em Sincronizar e-mails, Sincronizar chaves SSH e/ou Sincronizar chaves GPG.
Depois que você habilitar a sincronização LDAP, um trabalho de sincronização será executado no período especificado para fazer as seguintes operações em cada conta de usuário:
- Se você tiver permitido a autenticação integrada para usuários de fora do provedor de identidade e o usuário estiver usando a autenticação integrada, vá para o próximo usuário.
- Se não houver mapeamento LDAP para o usuário, tente mapeá-lo para uma entrada LDAP no diretório. Se não for possível mapear o usuário para uma entrada LDAP, suspenda o usuário em questão e passe para o seguinte.
- Se houver um mapeamento LDAP e a entrada LDAP correspondente no diretório estiver ausente, suspenda o usuário e passe para o seguinte.
- Se a entrada LDAP correspondente tiver sido marcada como desativada e o usuário ainda não estiver suspenso, suspenda o usuário e passe para o seguinte.
- Se a entrada LDAP correspondente não estiver marcada como desabilitada, o usuário estiver suspenso e a opção Reativar usuários suspensos estiver habilitada no Centro de Administração, cancele a suspensão do usuário.
- Se um ou mais grupos restritos de usuários estiverem configurados na instância e a entrada do LDAP correspondente não for em um desses grupos, suspenda o usuário.
- Se um ou mais grupos de usuários restritos estiverem configurados na instância, a entrada LDAP correspondente estiver em um desses grupos e a opção Reativar usuários suspensos estiver habilitada no Centro de Administração, cancele a suspensão do usuário.
- Se a entrada LDAP correspondente incluir um atributo
name
, atualize o nome do perfil do usuário. - Se a entrada LDAP correspondente estiver no grupo de administradores, promova o usuário a administrador do site.
- Se a entrada LDAP correspondente não estiver no grupo de administradores, rebaixe o usuário para uma conta normal, a menos que a conta seja suspensa. Os administradores suspensos não serão rebaixados e permanecerão listados nas páginas "Administradores do site" e "Proprietários corporativos".
- Se um campo LDAP User (Usuário LDAP) estiver definido para e-mails, sincronize as configurações de e-mail do usuário com a entrada LDAP. Defina a primeira entrada
mail
do LDAP como o email primário. - Se um campo LDAP User (Usuário LDAP) estiver definido para chaves SSH públicas, sincronize as chaves SSH públicas do usuário com a entrada LDAP.
- Se um campo LDAP User (Usuário LDAP) estiver definido para chaves GPG públicas, sincronize as chaves GPG públicas do usuário com a entrada LDAP.
Observação: as entradas LDAP só poderão ser marcadas como desabilitadas se você usar o Active Directory e o atributo userAccountControl
estiver presente e sinalizado com ACCOUNTDISABLE
. Algumas variações do Active Directory, como o AD LDS e o ADAM, não dão suporte ao atributo userAccountControl
.
Um trabalho de sincronização também será executado no período especificado para fazer as seguintes operações em cada equipe mapeada para um grupo LDAP:
-
Se um grupo LDAP correspondente de uma equipe tiver sido removido, remova todos os integrantes da equipe.
-
Se as entradas do integrante LDAP tiverem sido removidas do grupo LDAP, remova os usuários correspondentes da equipe. Se o usuário não for mais membro de nenhuma equipe na organização e não for proprietário da organização, remova-o da organização. Se o usuário perder o acesso a qualquer repositórios, exclua todas as bifurcações privadas que ele possa ter nesses repositórios.
Observação: a sincronização LDAP não removerá o usuário da organização se ele for proprietário dessa organização. Outro proprietário da organização precisará remover o usuário manualmente.
-
Se as entradas do integrante LDAP tiverem sido adicionadas ao grupo LDAP, adicione os usuários correspondentes à equipe. Se o usuário recuperar o acesso a quaisquer repositórios, restaure todas as bifurcações privadas dos repositórios que foram excluídos porque o usuário perdeu o acesso nos últimos 90 dias.
Como parte da configuração de otimização, a Sincronização LDAP não vai transferir sua estrutura de equipe aninhada. Para criar relacionamentos de equipe filhos e pais, você deve recriar manualmente a estrutura de equipe aninhada e sincronizá-la com o grupo LDAP correspondente. Para obter mais informações, confira "Criar equipes".
Aviso de segurança:
Quando a Sincronização LDAP está ativada, os administradores do site e os proprietários da organização podem pesquisar grupos no diretório LDAP aos quais pretendem mapear a equipe.
Esse procedimento pode resultar na divulgação de informações confidenciais da organização para contratados ou outros usuários sem privilégios, inclusive:
- A existência de grupos de LDAP específicos visíveis para o usuário de pesquisa de domínio.
- Integrantes do grupo LDAP que tenham contas de usuário no GitHub Enterprise Server, divulgadas ao criar uma equipe sincronizada com o grupo LDAP.
Se a divulgação dessas informações não for desejada, sua empresa ou sua organização deverá restringir as permissões do Usuário de pesquisa de domínio configurado no console de administração. Se essa restrição não for possível, entre em contato conosco acessando o Suporte do GitHub Enterprise.
Classes de grupo de objeto LDAP compatíveis
O GitHub Enterprise Server é compatível com as seguintes classes de grupo de objeto LDAP. Os grupos podem ser aninhados.
group
groupOfNames
groupOfUniqueNames
posixGroup
Exibir e criar usuários LDAP
Quando você usa LDAP, sua instância cria uma conta de usuário na primeira vez que alguém entra com êxito usando credenciais LDAP. Como alternativa, você pode provisionar manualmente uma conta de usuário.
É possível exibir a lista completa de usuários LDAP que têm acesso à sua instância, e você também pode provisionar novos usuários.
- Entre no sua instância do GitHub Enterprise Server em
http(s)://HOSTNAME/login
. - Em uma conta administrativa no GitHub Enterprise Server, no canto superior direito de qualquer página, clique em .
- Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.
- Na barra lateral esquerda, clique em Usuários do LDAP.
- Para pesquisar um usuário, digite um nome de usuário completo ou parcial e clique em Pesquisar. Os usuários serão exibidos nos resultados da pesquisa. Se não houver um usuário, clique em Criar para provisionar a nova conta de usuário.
Atualizar contas LDAP
A menos que a Sincronização LDAP esteja habilitada, as alterações nas contas LDAP não serão sincronizadas automaticamente com o GitHub Enterprise Server.
- Para usar um novo grupo de administradores LDAP, os usuários devem ser promovidos e rebaixados manualmente no GitHub Enterprise Server a fim de refletir as mudanças no LDAP.
- Para adicionar ou remover contas LDAP em grupos de administradores LDAP, promova ou rebaixe as contas no GitHub Enterprise Server.
- Para remover contas LDAP, suspenda as contas do GitHub Enterprise Server.
Sincronizar contas LDAP manualmente
- Entre no sua instância do GitHub Enterprise Server em
http(s)://HOSTNAME/login
. - Em uma conta administrativa no GitHub Enterprise Server, no canto superior direito de qualquer página, clique em .
- Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.
- Em "Pesquisar usuários, organizações, equipes, repositórios, gists e aplicativos", digite o nome do usuário no campo de texto.
- À direita do campo de texto, clique em Pesquisar.
- Se uma correspondência exata de nome de conta não for encontrada, em "Resultados da pesquisa – Contas", na seção "Correspondências difusas", clique no nome do usuário que deseja gerenciar.
- Analise os detalhes do usuário na página de administrador do site para confirmar se você identificou o usuário correto.
- No canto superior direito da página, clique em Administrador.
- Em "LDAP", clique em Sincronizar agora para atualizar manualmente a conta com os dados do servidor LDAP.
Você também pode usar a API para disparar uma sincronização manual.
Como revogar o acesso para sua instância do GitHub Enterprise Server
Se a Sincronização LDAP estiver habilitada, a remoção das credenciais LDAP de um usuário suspenderá a conta dele após a próxima execução da sincronização.
Se a Sincronização LDAP não estiver habilitada, você precisará suspender manualmente a conta do GitHub Enterprise Server depois de remover as credenciais LDAP. Para obter mais informações, confira "Suspender e cancelar a suspensão de usuários".
Sobre registrar em log para LDAP
Os eventos de log para LDAP aparecem nos arquivos de log em sua instância do GitHub Enterprise Server. Você encontrará eventos relacionados a operações LDAP nos auth.log
, ldap-sync.log
e ldap.log
. Para obter mais informações, confira "Sobre os logs do sistema".
Limites para LDAP no GitHub Enterprise Server
A configuração de tempo limite de autenticação LDAP do GitHub Enterprise Server é de 10 segundos. Isso significa que todas as consultas LDAP necessárias para autenticação de usuário e consultas de associação de grupo (quando Administradores e Grupos de Usuários Restritos são configurados no console de gerenciamento) devem ser concluídas com êxito em até 10 segundos para um usuário LDAP que está fazendo logon no GitHub Enterprise Server. O GitHub Enterprise Server atualmente não oferece suporte à extensão desse tempo limite da autenticação LDAP de 10 segundos, pois isso pode ter um impacto negativo em outros serviços no dispositivo e levar a um desempenho ruim ou interrupções inesperadas. Recomendamos limitar a latência da rede entre o GitHub Enterprise Server e os servidores LDAP para ajudar a evitar tempos limite de autenticação.