Automação & Identidade

Automação Segura de Identidade no Active Directory com TypeScript

Arquitetura de middleware para operações sensíveis em múltiplos Domain Controllers (desbloqueio e reset de credenciais), com testes automatizados e esteira de auditoria NIST com Graylog.

Carlos Felipe
Carlos Felipe Oliveira da Silva Senior Infrastructure & DevOps Engineer
Princípio Zero Trust: Eliminar credenciais de administrador salvas em scripts operacionais e substituir procedimentos manuais de helpdesk por APIs autenticadas com criptografia TLS/LDAPS e auditoria em tempo real.

1. O Gargalo Operacional da Gestão de Acessos

A gestão manual de contas e senhas de usuários representa mais de 40% das demandas recebidas por equipes de suporte de infraestrutura. Além do tempo de resposta elevado para os colaboradores, o processo manual introduz riscos de erros humanos e falta de rastreabilidade formal.

2. Arquitetura do Middleware de Identidade

Construímos um serviço em TypeScript / Node.js que atua como barramento de execução seguro entre interfaces de autosserviço (portais corporativos e bots autorizados) e a floresta do Active Directory:

  • Conexão LDAPS Segura: Comunicação com múltiplos Domain Controllers (DCs) exclusivamente via porta 636 com validação de certificados da CA interna.
  • Failover de Controladores de Domínio: Caso o DC primário fique indisponível, o pool de conexões redireciona instantaneamente a operação para o nó secundário.
  • Validação de Políticas de Senha: Verificação prévia de complexidade, histórico e dicionário de senhas antes da submissão ao catálogo.

3. Implementação com Tipagem Estrita e Testes

A tipagem estrita com TypeScript garantiu previsibilidade nas respostas de modificação de atributos LDAP:

// ldap-service.ts - Operação atômica de reset de credencial
import ldap from 'ldapjs';

export async function unlockUserAccount(userDn: string, client: ldap.Client): Promise {
  return new Promise((resolve, reject) => {
    const change = new ldap.Change({
      operation: 'replace',
      modification: {
        lockoutTime: '0' // Desbloqueia a conta no Active Directory
      }
    });

    client.modify(userDn, change, (err) => {
      if (err) {
        return reject(new Error(`Falha ao desbloquear conta ${userDn}: ${err.message}`));
      }
      resolve(true);
    });
  });
}

4. Testes Automatizados e Auditoria Contínua

A esteira conta com uma suíte de mais de 68 testes unitários e de integração, simulando cenários de usuários inexistentes, contas desativadas, falhas de conectividade de rede e injeção de caracteres inválidos.

Cada operação concluída emite um evento estruturado para o Graylog contendo o ID da requisição, hash do usuário solicitante, timestamp UTC e status da execução.

Economia Comprovada de Tempo

A automação eliminou cerca de 15 horas semanais de trabalho repetitivo do time de sustentação, com resolução instantânea das solicitações e conformidade integral com normas NIST.