quarta-feira, 15 de setembro de 2010

Como surgiu o Active Directory?

O objetivo principal de uma rede de dados é compartilhar informações. Mas esse compartilhamento requer medidas de segurança a fim de evitar que pessoas não autorizadas tenham acesso a determinadas informações. Essa medida de segurança chama-se “Identidade e Acesso” (Identity and Access ou simplesmente, IDA).

Tendo o conceito em mente, o próximo passo era criar um repositório para armazenar as informações de IDA. Este repositório foi chamado de “Serviço de Diretório de Rede” (Network Directory Services ou mais comumente, Directory Services).

O objetivo do Serviço de Diretório é armazenar, organizar, gerenciar e compartilhar informações e recursos comuns de rede, como: usuários, grupos, computadores, impressoras, pastas compartilhadas, entre outros. Cada um desses recursos citados é considerado como um objeto dentro do diretório. Informações sobre um recurso em particular são armazenadas como atributos daquele objeto.

Um Serviço de Diretório é um componente fundamental para qualquer Sistema Operacional de Rede (Network Operating System ou simplesmente, NOS). É neste contexto que contaremos a história de um desses Serviços de Diretório lançado pela Microsoft, o NT Domains...

Era uma vez, um sistema operacional chamado Windows NT. Apesar de sua sigla significar “Nova Tecnologia” (New Technology), o Windows NT era muito limitado em sua tecnologia.

Sua base de dados de usuários, mais conhecida como SAM (Security Account Manager) não podia exceder um determinado tamanho físico de, aproximadamente, 192 MB (megabytes), e por isso, não podia chegar à casa dos milhões de usuários.

O Windows NT introduziu o conceito de Controlador de Domínio (Domain Controller ou simplesmente, DC). Cabia aos DCs autenticar os usuários (através de um login e uma senha) e prover acesso aos recursos de rede autorizados para aquele usuário. Os DCs se dividiam em PDC (Primary Domain Controller) e BDC (Backup Domain Controller). O PDC era o Highlander da rede (só podia haver um) e os BDCs tantos quantos fossem necessários. Somente o PDC podia gravar alterações na SAM. Os BDCs apenas aliviavam a carga de autenticação. Como somente o Highlander podia alterar a SAM, caso sua cabeça fosse decepada, ninguém mais poderia mexer na SAM. Usuários continuariam sendo autenticados na rede pelos BDCs, mas tarefas como alteração de senha ou criação de novos usuários não poderiam ser feitas.

O Administrador da Rede, dotado de poderes cósmicos, podia promover um BDC para PDC, mas como em todo filme, o mocinho nunca morre, se o PDC original voltasse ao ar, teríamos um problema na rede com dois Highlanders.

Outo problema neste modelo PDC/BDC estava na replicação das alterações: Quanto mais BDCs na rede, mais replicações para o PDC. Geralmente, o PDC possuía hardware mais potente que os BDCs devido a essa demanda de serviço. Quando o Highlander morria e um BDC era promovido, devido ao hardware inferior, o servidor não dava conta do recado.

Os servidores que não eram Controladores de Domínio eram chamados de Servidores Membro (Member Servers). Não era possível promover um Servidor Membro à Controlador de Domínio porque a estrutura da SAM era completamente diferente. A única forma de promoção (Membro para Controlador) ou demoção (Controlador para Membro) era através da reinstalação do servidor.

Como se não bastasse, o NT amarrava tanto a sua base de dados, que não permitia integração com outras aplicações baseadas em servidor, como o SQL Server por exemplo. Com isso, uma pessoa tinha que utilizar um usuário e senha para ser autenticado na rede e outro usuário e senha para acessar o banco de dados.

Em resumo, muita coisa precisava ser melhorada no NT Domains. Foi então que a Microsoft resolveu apostar em outro Serviço de Diretório...

Era uma vez, um grupo de pessoas que formavam a União Internacional de Telecomunicações (International Telecommunication Union – ITU). Esse grupo, espalhado em aproximadamente 130 países, é uma agência das Nações Unidas que age como um fórum para governos que buscam um consenso em questões de telecomunicações globais.

Lá pela década de 80, a ITU lançou um documento chamado “X.500 – Data Network and Open System Communications – Directory”, contendo uma série de recomendações para os Serviços de Diretório. Mas a ITU não definia padrões, apenas recomendava. O órgão responsável pelas padronizações internacionais é a Organização Internacional para Padronização (International Organization for Standardization – ISO).

Uma observação: a sigla ISO não se encaixa no nome International Organization for Standardization, que deveria ser IOS. Isso é porque ISO vem do grego isos e significa “igual”. Este padrão foi adotado para evitar a variação das siglas na tradução do nome International Organization for Standardization: IOS em inglês, OIP em português e assim por diante.

Para padronizar a sua recomendação X.500 a ITU procurou a ISO e esta por sua vez lançou a ISO 9594 Information Technology – Open Systems Interconnection – The Directory”. O problema do X.500 da ITU era o protocolo de acesso utilizado, o Directory Access Protocol (DAP), que além de consumir muita banda, dependia da pilha do protocolo OSI, que fora pouco adotado devido a sua complexidade.

Pouco tempo depois da padronização do X.500, surgiu um grupo de especialistas com foco voltado para as atividades com a Internet, chamado Internet Engineering Task Force (IETF). Este grupo possui tamanha influência sobre a Internet, que consegue sobrepor padronizações ISO e recomendações ITU a cerca de protocolos de comunicações que acharem úteis, através de documentos chamados Request for Comments (RFCs).

E foi através da RFC 1777 Lighweight Directory Access Protocol” que surgiu o protocolo LDAP. Durante o seu desenvolvimento, o LDAP foi chamado de Lightweight Directory Browsing Protocol (LDBP), mas foi renomeado quando deixou de ser apenas um protocolo de consulta e incorporou funções de update.

Atualmente, o LDAP se encontra na versão 3, RFC 2251. Não há padronização ISO ou recomendação ITU para o LDAP. Mas devido ao seu baixo consumo de banda e utilização da pilha do protocolo TCP/IP, diversas soluções baseadas na implementação LDAP/X.500 começaram a ser desenvolvidas.

E foi baseada na implementação LDAP/X.500, que a Microsoft lançou seu novo Serviço de Diretório chamado Windows NT Directory Services (NTDS) que, posteriormente, seria conhecido como Active Directory.

Com o Active Directory (AD), a Microsoft deu um salto gigantesco e trouxe novos conceitos, novas funcionalidades e novas tecnologias ao seu Serviço de Diretório. Dentre eles:

  • Sua base de dados, agora baseada no modelo X.500, comporta bilhões de objetos;
  • O modelo PDC/BDC deixou de existir (sim, o Highlander morreu). No AD, cada Controlador de Domínio consegue ler e gravar na base de dados e replicar as alterações aos demais Controladores de Domínio, utilizando um processo chamado Multi-master replication;
  • A promoção ou demoção de um Controlador de Domínio passou a ser realizada sem a necessidade de reinstalação do sistema operacional;
  • O acesso às informações do Diretório foi facilitado através de métodos mais simplificados de segurança e interfaces de acesso, o que permitiu maior integração com aplicações baseadas em servidor e a utilização de login único (Single Sign-On – SSO) para acesso a vários serviços de rede.

O Active Directory foi lançado oficialmente em 1999 com o Windows 2000 Server. Já são 11 anos de vida.