Onze ferramentas essenciais para gerenciar o Active Directory

 

Por: Laura E. Hunter

VISÃO GERAL:

  • Criando objetos na linha de comando
  • Executando operações em massa dentro do Active Directory
  • Atualizações e manutenções do Active Directory

Caso você já tenha recebido uma planilha do Excel listando 200 novos funcionários que começam na semana seguinte ou caso as suas contas de usuário tenham sido configuradas incorretamente porque a equipe do suporte técnico clicou em algo

que não deveria, ou caso você apenas queira uma forma mais simples de gerenciar o Active Directory® do que sempre abrir Usuários e Computadores, há algumas ferramentas de administração gratuitas que podem ajudar. Algumas são criadas diretamente no SO Windows®, algumas vêm em um Resource Kit ou Ferramentas de Suporte do Windows e outras são ferramentas gratuitas de terceiros. Quais são essas ferramentas úteis e onde é possível obtê-las? Vamos descobrir.

Começarei pelas ferramentas de linha de comando internas do Windows Server® 2003 que lhe permitem criar, excluir, modificar e procurar objetos no Active Directory.

CSVDE

A ferramenta Comma-Separated Values Data Exchange, conhecida como CSVDE, permite que você importe novos objetos para o Active Directory usando um arquivo de origem CSV; ela também possibilita a exportação de objetos existentes para um arquivo CSV. A CSVDE não pode ser usada para modificar objetos existentes; quando você está usando essa ferramenta no modo de importação, só é possível criar objetos novos.

Exportar uma lista dos objetos existentes usando a CSVDE é muito simples. Aqui está como você exportaria os objetos do Active Directory para um arquivo chamado ad.csv:

csvde –f ad.csv

A opção –f indica que o nome do arquivo de saída vem em seguida. Mas você deve estar atento ao fato de que, dependendo do ambiente, essa sintaxe básica poderia resultar em um arquivo de saída grande e complicado. Para restringir a ferramenta e exportar apenas os objetos dentro de uma determinada OU (unidade organizacional), você poderia modificar a instrução da seguinte forma:

csvde –f UsersOU.csv –d ou=Users,dc=contoso,dc=com

Vamos dizer também que você seja o único interessado na exportação dos objetos de usuário para o seu arquivo CSV. Nesse caso, é possível adicionar a opção –r, que lhe permite especificar um filtro de protocolo LDAP (Lightweight Directory Access Protocol) para a pesquisa, e a opção –l, que restringe o número de atributos exportados (observe que está tudo em uma só linha):

csvde –f UsersOnly.csv –d ou=Users,dc=contoso,dc=com –r 
    "(&(objectcategory=person)(objectclass=user))" –l 
    DN,objectClass,description

A opção –i permite que você importe objetos para o Active Directory de um arquivo CSV de origem. No entanto, criar objetos de usuário usando a CSVDE tem uma limitação crítica: não é possível definir senhas de usuário com ela. Por isso, eu evitaria usar a CSVDE para criar objetos de usuário.

LDIFDE

O Active Directory oferece uma segunda ferramenta interna para operações de usuário em massa, chamada LDIFDE, que é mais eficiente e flexível do que a CSVDE. Além de criar novos objetos, a LDIFDE também pode modificar e excluir objetos existentes e até mesmo estender o esquema do Active Directory. A compensação pela flexibilidade da LDIFDE é que o arquivo de entrada necessário, conhecido como LDIF com a extensão .ldf, usa um formato mais complexo do que o arquivo CSV simples. (Com um pouco de trabalho, também é possível configurar senhas de usuário, mas chegarei lá daqui a pouco.)

Comecemos por um exemplo simples, exportando usuários em uma OU para um arquivo LDF (observe que está tudo em uma só linha):

ldifde -f users.ldf -s DC1.contoso.com -d "ou=UsersOU,dc=contoso,dc=com"
       –r "(&(objectcategory=person)(objectclass=user))"

Assim como acontece com a maioria das ferramentas de linha de comando, é possível encontrar uma explicação completa das opções da LDIFDE executando o comando LDIFDE /? . A Figura 1 descreve as que eu usei aqui. (Observe que as opções são, na verdade, as mesmas para os comandos da CSVDE e da LDIFDE.)

  Figure 1 Opções da LDIFDE

Opção

Descrição

-d

Especifica o caminho LDAP ao qual a LDIFDE deve se conectar para a operação.

-f

Indica o nome do arquivo a ser usado; nesse caso, o arquivo de saída dos resultados da exportação.

-r

Especifica o filtro LDAP a ser usado em uma exportação.

-s

Especifica o DC (controlador de domínio) de conexão que executará a operação; se você não incluir isso, a LDIFDE se conectará ao DC local (ou ao DC que o autenticou em caso de execução da ferramenta em uma estação de trabalho).

A verdadeira força da LDIFDE está na criação e na manipulação dos objetos. No entanto, antes de fazer isso, você precisa criar um arquivo de entrada primeiro. A seguir, são criadas duas novas contas de usuário, chamadas afuller e rking; para criar o arquivo de entrada, digite o texto no Bloco de Notas (ou seu editor de textos sem formatação favorito) e salve-o como NewUsers.ldf:

dn: CN=afuller, OU=UsersOU, DC=contoso, DC=com 
changetype: add 
cn: afuller
objectClass: user 
samAccountName: afuller 

dn: CN=rking, OU=UsersOU, DC=contoso, DC=com 
changetype: add 
cn: rking
objectClass: user 
samAccountName: rking 

Depois de concluir a criação do arquivo, execute o seguinte comando:

ldifde –i –f NewUsers.ldf –s DC1.contoso.com

A única opção nova aqui é -i, que denota se tratar de uma operação de importação, e não de exportação, como você deve ter adivinhado.

Durante a modificação ou a exclusão de objetos existentes, a sintaxe de comando da LDIFDE não muda; na verdade, você modifica o conteúdo do arquivo LDF. Para alterar o campo de descrição das contas de usuário, crie um arquivo de texto chamado ModifyUsers.ldf, como o mostrado na Figura 2.

alt

Figura 2 O arquivo LDF ModifyUsers (Clique na imagem para aumentar a exibição)

Você importa as alterações executando a mesma sintaxe de comando anterior da LDIFDE, mas especificando o novo nome de arquivo LDF depois da opção -f. O formato LDF para excluir objetos é ainda mais simples; para excluir os usuários com os quais você tem trabalhado, crie um arquivo chamado DeleteUsers.ldf e digite o seguinte:

dn: CN=afuller OU=UsersOU, DC=contoso, DC=com 
changetype: delete

dn: CN=rking, OU=UsersOU, DC=contoso, DC=com 
changetype: delete

Observe que, diferentemente da CSVDE, a LDIFDE é capaz de configurar senhas de usuário. No entanto, antes que seja possível configurar o atributo unicodePWD de uma conta de usuário, você deve configurar a criptografia SSL/TL (secure sockets layer/transport layer security) em seus controladores de domínio.

Além disso, a LDIFDE pode criar e modificar qualquer tipo de objeto do Active Directory, e não apenas contas de usuário. O seguinte arquivo LDF, por exemplo, criará uma extensão de esquema personalizada chamada EmployeeID-example no esquema da floresta contoso.com:

dn: cn=EmployeeID-example,cn=Schema,
cn=Configuration,dc=contoso,dc=com
changetype: add
adminDisplayName: EmployeeID-Example
attributeID: 1.2.3.4.5.6.6.6.7
attributeSyntax: 2.5.5.6
cn: Employee-ID
instanceType: 4
isSingleValued: True
lDAPDisplayName: employeeID-example

Como os arquivos da LDIFDE usam o formato de arquivo LDAP padrão do setor, os aplicativos de terceiros que precisam modificar o esquema do Active Directory normalmente fornecerão os arquivos LDF que podem ser usados para examinar e aprovar as alterações antes de sua aplicação ao ambiente de produção.

Além das ferramentas para as operações de importação e de exportação em massa, o Windows Server 2003 também inclui um conjunto de ferramentas interno que lhe permite criar, excluir e modificar vários objetos do Active Directory, bem como executar consultas para objetos que atendam a determinados critérios. (Observe que não há suporte para essas ferramentas, dsadd, dsrm, dsget e dsquery, no Active Directory do Windows 2000.)

Dsadd

A Dsadd é usada para criar uma instância de uma classe de objeto do Active Directory em uma determinada partição do diretório. Essas classes incluem usuários, computadores, contatos, grupos, unidades organizacionais e cotas. Dsadd tem uma sintaxe genérica que consiste no seguinte:

dsadd <ObjectType> <ObjectDistinguishedName> attributes

Observe que cada tipo de objeto criado por você assume um conjunto específico de opções correspondentes aos atributos disponíveis para o tipo. Este comando cria um único objeto de usuário com vários atributos preenchidos (observe que está tudo em uma só linha):

dsadd user cn=afuller,ou=IT,dc=contoso,dc=com 
–samID afuller –fn Andrew –ln Fuller –pwd * 
-memberOf cn=IT,ou=Groups,dc=contoso,dc=com "cn=Help Desk,ou=Groups,
dc=contoso,dc=com" 
–desc "Marketing Director"

A opção –memberOf exige o DN (nome distinto) completo de todos os grupos aos quais o usuário deve ser adicionado; caso você queira adicioná-lo a vários grupos, é possível adicionar vários DNs separados por espaços.

Caso algum elemento contenha um espaço como, por exemplo, o DN do grupo de suporte técnico, ele deve ser colocado entre aspas. Caso um elemento contenha uma barra invertida, como uma OU chamada IT\EMEA, a barra deve ser inserida duas vezes: IT\\EMEA. (Esses requisitos se aplicam a todas as ferramentas ds*.)

Ao usar a opção -pwd *, você será solicitado a digitar uma senha para o usuário na linha de comando. É possível especificar a senha dentro do próprio comando (-pwd P@ssword1), mas isso exibirá a senha em texto sem formatação na tela ou em qualquer arquivo de texto ou de script incorporado por você ao comando.

Da mesma forma, é possível criar um objeto de grupo e uma OU usando os dois comandos a seguir:

dsadd computer cn=WKS1,ou=Workstations,dc=contoso,dc=com
dsadd ou "ou=Training OU,dc=contoso,dc=com"

Dsmod

A Dsmod é usada para modificar um objeto existente e você trabalha com ela de maneira muito parecida com a dsadd, usando submenus diferentes e sintaxes dependendo do tipo de objeto que você está modificando. A seguinte instrução da dsmod altera a senha de um usuário e modifica a conta para que ele seja solicitado a trocar a senha por uma nova no próximo logon:

dsmod user "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1
    –mustchpwd yes

Para ver a semelhança dessas opções, veja a sintaxe da dsadd que você usaria para criar esse usuário usando os mesmos atributos configurados:

dsadd user "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1
    –mustchpwd yes

Como é possível ver claramente, caso você saiba as opções de criação de objetos na dsadd, você pode usar essas mesmas opções para modificar usuários usando a dsmod.

Dsrm

O inverso da dsadd é dsrm; como você deve imaginar, essa ferramenta permite que você exclua um objeto na linha de comando. A sintaxe básica de dsrm é muito simples: apenas digite dsrm seguido do nome distinto do objeto que você deseja excluir como:

dsrm cn=WKS1,ou=Workstations,dc=contoso,dc=com

Por padrão, a dsrm exibirá "Tem certeza de que deseja excluir este objeto?" Digite S e pressione Enter. É possível suprimir esse aviso usando a opção –noprompt, mas, obviamente, você não terá nenhuma oportunidade para confirmar que selecionou o objeto correto antes de excluí-lo. Duas opções adicionais podem ser úteis caso você esteja excluindo um objeto de contêiner, ou seja, uma unidade organizacional que pudesse conter outros objetos. O seguinte comando exclui a unidade organizacional TrainingOU e todos os objetos que ela contém:

dsrm ou=TrainingOU,dc=contoso,dc=com –subtree 

Este exclui todos os objetos filho contidos em TrainingOU, mas deixa o objeto de unidade organizacional propriamente dito no lugar:

dsrm ou=TrainingOU,dc=contoso,dc=com –subtree 
    –exclude 

Dsmove

Para mover ou renomear um objeto no Active Directory, você usa a ferramenta dsmove, mas observe que você deve usá-la apenas para mover um objeto dentro de um domínio único. Para migrar objetos entre domínios ou florestas, use a ADMT (Ferramenta de Migração do Active Directory), uma ferramenta gratuita disponível para download no site da Microsoft. A Dsmove depende de duas opções que podem ser usadas separadamente ou em conjunto. Este comando atribui um novo sobrenome à conta de Steve Conn:

dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" 
    –newname "Steve Conn" 

Este comando move a conta de Steve da OU IT para a OU Training:

dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newparent 
    ou=Training,dc=contoso,dc=com 

É possível combinar renomeação e movimentação em uma única operação, especificando ambas as opções de uma só vez da seguinte forma:

dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newname 
    "Steve Conn" –newparent ou=Training,dc=contoso,dc=com

Dsget e Dsquery

O conjunto de ferramentas de linha de comando ds* também inclui duas ferramentas usadas para consultar o Active Directory em busca de informações, e não para criar ou modificar objetos.

Dsget assume o DN de um objeto como entrada e fornece a você o valor do atributo ou dos atributos especificados. Dsget usa os mesmos submenus de dsadd e dsmod – usuário, computador, contato, grupo, ou e cota.

Para obter o Nome da Conta SAM e o SID (Identificador de Segurança) de uma conta de usuário, digite o seguinte comando (observe que está tudo em uma só linha):

dsget user cn=afuller,ou=IT,dc=contoso,dc=com 
    –samAccountName –sid

Você terá uma saída como a mostrada na Figura 3.

alt

Figura 3 Executando dsget (Clique na imagem para aumentar a exibição)

Dsquery retorna uma lista dos objetos do Active Directory que atendem aos critérios especificados por você. É possível especificar os seguintes parâmetros, independentemente do submenu que você esteja usando:

dsquery <ObjectType> <StartNode> -s <Search Scope> -o <OutputFormat>

Para ObjectType, a dsquery pode usar os seguintes submenus, cada um com sua própria sintaxe: computador, contato, sub-rede, grupo, ou, site, servidor (observe que o submenu servidor recupera informações sobre controladores de domínio, e não todos os servidores membro do ambiente), usuário, cota e partição. E caso nenhum desses tipos de consulta funcione, é possível usar o submenu *, que lhe permite inserir uma consulta LDAP de forma livre.

StartNode especifica o local na árvore do Active Directory em que a pesquisa começará. É possível usar um DN específico como, por exemplo, ou=IT,dc=contoso,dc=com, ou um dos seguintes especificadores se atalho: domainroot, que começa na raiz de um determinado domínio, ou forestroot, que começa na raiz do domínio raiz da floresta usando um servidor de Catálogo Global para executar a pesquisa.

Por fim, a opção Escopo da Pesquisa especifica como a dsquery deve pesquisar a árvore do Active Directory. Subtree (o padrão) consulta o StartNode especificado e todos os seus objetos filho, onelevel consulta apenas os filhos imediatos do StartNode e base consulta apenas o objeto StartNode.

Para melhor compreender os escopos de pesquisa, leve em consideração uma OU que contenha os objetos de usuário e uma OU filho com objetos adicionais. Usar o escopo da subárvore consultará a OU, todos os objetos de usuário contidos nela, além da OU filho e seu conteúdo. O escopo onelevel consultará apenas os usuários contidos na OU, e não a OU filho ou seu conteúdo. Uma consulta base pesquisará apenas a própria OU sem consultar nenhum dos objetos contidos nela.

Por fim, é possível usar o Formato de Saída para controlar como os resultados de dsquery são formatados. Por padrão, dsquery retorna os nomes distintos de todos os objetos que correspondam à consulta da seguinte forma:

"cn=afuller,ou=Training,dc=contoso,dc=com"
"cn=rking,ou=ITTraining,ou=Training,dc=contoso,dc=com"

Para consultar todos os objetos de usuário contidos na OU IT e em todas as OUs filho, use o seguinte:

dsquery user ou=IT,dc=contoso,dc=com 

Please note, however, then when piping data to the dsrm tool, the -noprompt switch is required.

É possível refinar ainda mais essa consulta adicionando mais opções como, por exemplo, -disabled, que retorna apenas as contas de usuário desabilitadas; -inactive x, que retorna apenas os usuários que não fizeram logon nas últimas x semanas ou mais; ou -stalepwd x, que retornará apenas os usuários que não alteraram suas senhas em x dias ou mais.

Dependendo do número de objetos no diretório, você talvez precise especificar a opção -limit x ao executar a sua consulta. Por padrão, dsquery retornará até 100 objetos que correspondem às especificações da sua consulta; é possível especificar um número maior como, por exemplo, -limit 500, ou usar -limit 0 para instruir dsquery a retornar todos os objetos correspondentes.

É possível usar os demais submenus para executar consultas úteis também de outros tipos de objeto. Leve em consideração a seguinte consulta, que retorna cada subnet definido no Sites e Serviços do Active Directory e que está no espaço de endereçamento 10.1.x.x:

dsquery subnet –name 10.1.*

Ou use o seguinte para retornar todas as sub-redes localizadas no site Corp:

dsquery subnet –site Corp

Com outro submenu, é possível determinar rapidamente quantos controladores de domínio em sua floresta estão configurados como servidores de Catálogo Global:

dsquery server –forest –isgc

Também é possível usar esta sintaxe para ajudar você a determinar qual controlador do seu domínio hospeda a função FSMO (operação flutuante de mestre único) de emulador do PDC (controlador de domínio primário):

dsquery server –hasfsmo pdc

Assim como acontece com os demais comandos ds* que incluem submenus, é possível exibir todas as opções disponíveis dentro de um determinado submenu dsquery acessando o prompt de comando e digitando dsquery user /?, dsquery computer /?, dsquery subnet /? e assim por diante.

Um outro truque inteligente é vincular a saída de dsquery a outra ferramenta como, por exemplo, dsmod usando o caractere | (barra em teclados dos EUA). Por exemplo, digamos que a sua empresa tenha renomeado um departamento de Treinamento para Desenvolvimento Interno e que agora você tenha que atualizar o campo de descrição de todos os usuários relevantes do nome anterior do departamento para o novo. Em uma única linha de comando, é possível consultar os objetos de usuário que tenham um campo de descrição Treinamento e, em seguida, modificar esse campo em massa da seguinte forma:

dsquery user –description "Training" | dsmod 
    -description "Internal Development"

Algumas pedras preciosas de terceiros

Como o Active Directory baseia-se em padrões LDAP, é possível consultar e modificá-lo usando qualquer ferramenta compatível com o protocolo LDAP. Muitos fornecedores terceiros lançaram ferramentas pagas para ajudá-lo na administração do Active Directory, mas você, às vezes, acha um tesouro disponibilizado gratuitamente para a comunidade. É esse o caso de uma coleção criada por Joe Richards, MVP de Serviços de Diretório, disponível para download emjoeware.net/freetools. Lá, você encontrará várias ferramentas que realizam muitas funções diferentes. As três às quais eu sempre recorro são adfind, admod e oldcmp.

Adfind e Admod

Adfind e admod são semelhantes a dsquery e dsmod; adfind é uma ferramenta de consulta de linha de comando para o Active Directory, e admod pode criar, excluir ou modificar um ou mais objetos do Active Directory.

Diferentemente das ferramentas ds* que têm vários submenus e opções diferentes dependendo do tipo de objeto, adfind e admod apresentam uma sintaxe consistente, independentemente do tipo de consulta ou de modificação que você está tentando executar. A sintaxe básica de adfind é:

adfind –b <Search Base> -s <Search Scope> -f <Search Filter>
    attributesDesired

Portanto, uma consulta do DN e da descrição de todos os objetos de computador dentro do domínio seria:

adfind –b dc=contoso,dc=com –s subtree –f (objectclass=computer) dn 
    description

Uma consulta de todos os objetos de usuário ficaria assim:

adfind –b dc=contoso,dc=com –s subtree –f "(&(objectcategory=person)
    (objectclass=user))" dn description

Observe que, exceção feita ao conteúdo da consulta LDAP, a sintaxe não mudou.

À medida que trabalhar com adfind, você descobrirá vários operadores de atalho capazes de evitar que você digite muito. Por exemplo, a opção -default pode substituir -b dc=contoso,dc=com no exemplo anterior e pesquisar todo o seu domínio; -gc pesquisa em uma GC (Coleta de Lixo) e retorna todos os usuários em sua floresta do Active Directory. Também é possível usar a opção -rb para definir uma base relativa para a pesquisa; caso você queira pesquisar a OU Training no domínio phl.east.us.contoso.com, é possível economizar esforço apenas especificando –default –rb ou=Training, e não –b ou=Training, dc=phl,dc=east,dc=us,dc=contoso,dc=com.

Adfind também pode realizar várias funções de pesquisa avançadas que podem ser gerenciadas facilmente na linha de comando, incluindo as mostradas na Figura 4.

  Figure 4 Opções da Adfind

Opção

Descrição

-showdel

Consulta o contêiner Deleted Objects em busca de objetos de marca para exclusão.

-bit

Consulta operadores bit a bit como, por exemplo, o atributo user AccountControl.

-asq

Executa uma consulta com abrangência de atributo. Essa função (que pode ser replicada em dsquery) pode recuperar um atributo de um determinado objeto e executar uma consulta em relação a ele.

-dsq

Vincula a saída de uma consulta de adfind a dsmod ou uma das demais ferramentas ds*.

Um exemplo de uso da opção –asq seria "Mostre-me as associações de grupo dos membros do suporte técnico", assim:

adfind –default –rb cn=HelpDesk,ou=IT –asq member memberOf 

A admod, como seu próprio nome sugere, é usada para modificar os objetos dentro do Active Directory. Assim como acontece com adfind, não há submenus especializados com sintaxes específicas a serem lembradas; admod usa a mesma sintaxe independentemente do tipo de objeto com o qual você está trabalhando. Também é possível usar a admod para adicionar, mover, renomear, excluir e até mesmo desfazer a exclusão de objetos apenas adicionando a opção apropriada como, por exemplo, -add, -rm, -move, -undel. E assim como acontece com dsquery e dsmod, também é possível usar o caractere | para vincular os resultados de uma consulta de adfind à admod.

Observe que a execução de um cancelamento da exclusão usando admod apenas realiza uma operação de animação da marca para exclusão, na qual a maioria dos atributos do objeto foi removida. Para restaurar completamente um objeto e todos os seus atributos, você precisará executar uma restauração autoritativa do objeto.

Oldcmp

Há mais uma ferramenta joeware que eu considero parte indispensável do meu kit de ferramentas de automação: oldcmp, que examina o banco de dados do Active Directory em busca de contas de computador que não tenham sido usadas em um determinado número de semanas e é capaz do seguinte:

  • criar um relatório das contas sem realizar nenhuma ação em relação a elas
  • desabilitar as contas de computador que não são usadas
  • mover as contas de computador para uma OU diferente designada por você
  • excluir as contas de computador imediatamente

Observe que, como oldcmp tem a capacidade de causar estragos graves no seu diretório, ele tem vários recursos de segurança integrados. Ela não excluirá nenhuma conta que ainda não tenha sido desabilitada (e sem a especificação manual de uma opção de linha de comando "Não foi isso o que eu quis dizer!"). Ela não modificará mais de dez objetos por vez sem uma opção "Não foi isso o que eu quis dizer!" semelhante e não fará absolutamente nada para a conta de computador de um controlador de domínio.

Apesar do nome atualmente equivocado da ferramenta, Joe atualizou oldcmp para que ela execute funções semelhantes também para contas de usuário que não tenham sido usadas há um determinado tempo.

Para um pequeno ambiente do Active Directory ou um em que você esteja apenas trabalhando com uma ou duas inclusões ou alterações por vez, ferramentas de GUI como, por exemplo, Usuários e Computadores do Active Directory podem ser suficientes para a administração do dia-a-dia. Mas caso você esteja adicionando e modificando um grande número de objetos diariamente ou apenas queira uma solução mais aprimorada para as tarefas administrativas, passar para a linha de comando pode agilizar muito o processo de criação, modificação e exclusão de objetos dentro do Active Directory. Como você viu, há várias ferramentas flexíveis e eficientes disponíveis gratuitamente, tanto integradas ao Windows quanto disponibilizadas para download pelos membros da comunidade do Active Directory. Qualquer uma delas tem a possibilidade de aumentar muito a sua produtividade como administrador do Active Directory e, juntas, elas se tornam ainda mais essenciais para a sua rotina de trabalho diário.