June 13, 2013

Consultando LDAP.

LDAP (si, el corazón de Active Directory) fue hecho para que lo consultemos, pero ¿no les pasa que a veces como que no hacemos las mejores preguntas? Sí, claro tal como cuando hablamos y no nos expresamos de la mejor manera así puede suceder cuando “hablamos” con el directorio.
El primer punto a definir es la base, el punto de partida a partir de donde estoy consultando, este puede ser desde la raíz del dominio, o bien en el contenedor de Sites de la partición de Configuration o porque no desde un Organization Unit explícito. Inclusive si no estamos seguros de la localización del objeto en el bosque pues podríamos consultar al Global Catalog directamente, esto con las restricciones pertinentes (para agregar más atributos al PAS véase http://support.microsoft.com/kb/248717 ).
Lo anterior va ligado también al tema del ámbito de nuestra búsqueda, por ejemplo si buscamos un único objeto es sugerido usar la opción de Base. Ahora si buscamos múltiples objetos que se encuentra en un mismo contenedor se recomienda utilizar el ámbito  de One-Level, mientras que si no tenemos certeza del almacenamiento de los objetos de nuestra búsqueda es recomendado utilizar la opción de Subtree; esta la podemos ver como una búsqueda recursiva.
Ahora existen atributos que se agregan a un índice, el cual disminuye los tiempos de repuesta y costo de las consultas al directorio, desde luego no todo está indexado, aun así si usted lo requiere puede agregar más atributos al índice siguiente la documentación de este articulo http://technet.microsoft.com/en-us/library/aa995762(v=EXCHG.65).aspx
Un claro ejemplo de lo anterior son los atributos objectCategory y el objectClass, en este caso el segundo no está indexado, así que se sugiere evitar utilizarlo en la medida de lo posible.
Otra buena práctica es también limitar el resultado, es mucho mejor obtener únicamente aquellos atributos que realmente necesitamos versus todos los atributos del objeto/clase en cuestión.
También con cierta regularidad encuentro ambientes donde las políticas de LDAP son alteradas, cambiando así comportamientos como la paginación, es mejor que el aplicativo sea programado de una forma inteligente que utilice paginación versus poner en riesgo la estabilidad del servicio. Para mayor información refiérase a http://support.microsoft.com/kb/315071 .Nótese también que a partir de Windows Server 2008 se introducen limites fijos para ciertos parámetros http://support.microsoft.com/kb/2009267
Existen más recomendaciones, por ejemplo para la aplicación apropiada de operadores o bien las búsquedas con ARN y más, sugiero si este tema es de su interese visitar http://msdn.microsoft.com/en-us/library/ms808539.aspx Estas recomendaciones aplican tanto para consultas por ADSI, PowerShell u otros métodos.
Ahora Windows Server también nos provee herramientas para la verificación y localización de consultas no optimas, a continuación algunos trucos para esto, simples cambios en el registro de los Controladores de Dominio que generaran las bitácoras apropiadas.
HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\NTDS\Diagnostics\ 9 Internal Processing
Al asignar un valor de 4 a esta llave de registro se registrara la utilización de los índices.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics\15 Field Engineering
Asignar valor de 4 para generar entradas en la bitácora sobre las consultas costosas o ineficientes generadas durante el último ciclo de recolección (ejecución del Garbage Collector + mantenimiento en línea de la base de datos (cada 12 horas por defecto) o bien un valor de 5 para generar bitácoras por cada una de estas consultas.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Expensive Search Results Threshold
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Inefficient Search Results Threshold
Los elementos anteriores categorizaran las consultas según corresponda, sus valores por defecto son 10000 y 1000 respectivamente. Donde una consulta que visite o toque más de 10000 objetos es considerada costosa y una consulta se cataloga como ineficiente si esta visita más de un-mil objetos y de estos retorna menos de un 10% de estos.
ldpQuery
Recuerde, pregunte lo que necesita, reduzca el ámbito de esta pregunta de una forma inteligente y por último filtre el resultado según su necesidad.
Que bien se siente blogguear de Nuevo!

No comments:

Post a Comment