{"id":3002,"date":"2015-12-23T16:24:44","date_gmt":"2015-12-23T19:24:44","guid":{"rendered":"http:\/\/www.radians.com.ar\/blog\/?p=3002"},"modified":"2018-01-16T16:49:25","modified_gmt":"2018-01-16T19:49:25","slug":"test-7","status":"publish","type":"post","link":"https:\/\/www.radians.com.ar\/blog\/?p=3002","title":{"rendered":"Active Directory Error &ldquo;Administrative limit for this request was exceeded&quot; como solucionarlo?"},"content":{"rendered":"<p align=\"justify\"><a href=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/logoactivedirectory720.png\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"border-top: 0px; border-right: 0px; border-bottom: 0px; margin-left: 0px; border-left: 0px; display: inline; margin-right: 0px\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/logoactivedirectory720_thumb.png\" width=\"420\" align=\"left\" height=\"127\" \/><\/a> Quer\u00eda comentarles sobre un problema con un entorno particular que puede ocurrir cuando se est\u00e1n integrando los sistemas UNIX y Active Directory. Microsoft tiene varios atributos en AD para facilitar esta tarea, y uno de esos atributos es el atributo <b>memberUid<\/b> en los objetos del grupo de seguridad. Hemos agregaso los ID de usuario al atributo <b>memberUid<\/b> del grupo de seguridad y Active Directory tratar\u00e1 que a medida que la pertenencia al grupo de los sistemas UNIX para los prop\u00f3sitos de autenticaci\u00f3n\/autorizaci\u00f3n.<\/p>\n<p align=\"justify\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/01_thumb.jpg\" width=\"504\" height=\"799\" \/> <\/p>\n<p align=\"justify\">Todo estaba muy bien durante mucho tiempo. El grupo creci\u00f3 y creci\u00f3 a m\u00e1s de un millar de usuarios, hasta que un d\u00eda quisimos agregar otro usuario de UNIX, y obtuvimos este error:<\/p>\n<p><a href=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/02.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/02_thumb.jpg\" width=\"544\" height=\"290\" \/><\/a> <\/p>\n<p align=\"justify\"><i>\u201cSe ha superado el l\u00edmite administrativo para esta solicitud&quot;, <\/i>hay un l\u00edmite en este atributo? <\/p>\n<p align=\"justify\">La documentaci\u00f3n <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/cc220559.aspx\">MSDN<\/a> establece que la propiedad <b>rangeUpper<\/b> del atributo <b>memberUid<\/b> es 256.000. El <a title=\"This support KB\" href=\"https:\/\/support.microsoft.com\/en-us\/kb\/2983975\">KB2983975<\/a> tambi\u00e9n menciona que:<\/p>\n<p align=\"justify\"><i>&quot;El l\u00edmite de tama\u00f1o de atributo para el atributo memberUid en el esquema es 256.000 caracteres. <\/i><i>Depende de la longitud valor individual de la cantidad de identificadores de usuario (UID) caben en el atributo &quot;.<\/i><\/p>\n<p align=\"justify\">E incluso se puede ver por ti mismo si te apetece un ganso en el esquema:<\/p>\n<p align=\"justify\"><a href=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/03.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/03_thumb.jpg\" width=\"544\" height=\"607\" \/><\/a> <\/p>\n<p align=\"justify\">Algo no cuadra aqu\u00ed &#8211; s\u00f3lo se han a\u00f1adido alrededor de 1200 usuarios al atributo <b>memberUid<\/b> de este grupo de seguridad. Claro que es un grupo grande, pero que no exceda de 256.000 caracteres. Sumando todos los nombres que he a\u00f1adido al atributo, me imagino que se suma a alguna parte alrededor de 10.000 caracteres. No 256.000.<\/p>\n<p align=\"justify\">Entonces, \u00bfqu\u00e9 pasa?<\/p>\n<p align=\"justify\">El problema es que estamos tocando un l\u00edmite <i>diferente<\/i> a medida que seguimos agregando miembros al atributo <b>memberUid,<\/b> mucho antes de que lleguemos a 256k caracteres. El atributo <b>memberUid<\/b> es un atributo multivalor, sin embargo, no es <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/ms677270(v=vs.85).aspx\">linked<\/a> attribute. Esto significa que tiene una limitaci\u00f3n en su tama\u00f1o m\u00e1ximo que es menor que los 256.000 caracteres que se muestran en el objeto <b>memberUid<\/b> <b>attributeSchema.<\/b><\/p>\n<p align=\"justify\">podemos distinguir entre qu\u00e9 atributos est\u00e1n relacionados o no en funci\u00f3n de si esos objetos <b>attributeSchema<\/b> tienen valores en su atributo <b>linkID.<\/b><\/p>\n<p>Un ejemplo de un atributo multivalor <u>y vinculadas:<\/u><\/p>\n<p><a href=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/04.png\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/04_thumb.png\" width=\"544\" height=\"371\" \/><\/a><\/p>\n<p>Ejemplo de un atributo <u>multivalor, pero no<\/u> vinculado:<\/p>\n<p><a href=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/05.png\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/05_thumb.png\" width=\"544\" height=\"391\" \/><\/a><\/p>\n<p>As\u00ed que si el l\u00edmite no es realmente 256.000 caracteres, entonces \u00bfqu\u00e9 es?<\/p>\n<p>Seg\u00fan <a href=\"https:\/\/technet.microsoft.com\/en-us\/library\/cc772829.aspx\">C\u00f3mo el almac\u00e9n de datos funciona<\/a><i><\/i> en TechNet:<\/p>\n<blockquote>\n<p align=\"justify\"><i>&quot;El tama\u00f1o m\u00e1ximo de un registro de base de datos es 8110 bytes, en base a un ni\u00f1o de 8 kilobytes (KB) el tama\u00f1o de p\u00e1gina.<\/i> <i>Debido a los requisitos generales variable y el n\u00famero variable de atributos que un objeto puede tener, es imposible proporcionar un l\u00edmite preciso para el n\u00famero m\u00e1ximo de multivalues ??que un objeto puede almacenar en sus atributos.<\/i><i>..<\/i><\/p>\n<p align=\"justify\"><i>El \u00fanico valor que realmente se puede calcular es el n\u00famero m\u00e1ximo de valores de un atributo nonlinked, varios valores cuando el objeto tiene un solo atributo (lo cual es imposible).<\/i>&#160;<i>En Windows 2000 Active Directory, este n\u00famero se calcula en 1575 valores.<\/i> <i>A partir de este valor, tomando diversas estimaciones generales en cuenta y generalizar sobre los otros valores que el objeto puede almacenar, el l\u00edmite pr\u00e1ctico para el n\u00famero de multivalues ??almacenados por un objeto se estima en 800 valores nonlinked por objeto en todos los atributos.<\/i><\/p>\n<p align=\"justify\"><b><i>Atributos que representan enlaces no cuentan en este valor.<\/i><\/b>&#160;<b><i>Por ejemplo, los miembros vinculados, atributo multivalor de un objeto de grupo puede almacenar miles de valores porque los valores son enlaces solamente.<\/i><\/b><\/p>\n<p align=\"justify\"><b><i>El l\u00edmite pr\u00e1ctico de 800 valores nonlinked por objeto aumenta en Windows Server 2003 y versiones posteriores.<\/i><\/b> <i>Cuando el bosque tiene un nivel funcional de Windows Server 2003 o superior, para un registro te\u00f3rica de que s\u00f3lo tiene un atributo con el m\u00ednimo de gastos generales, el n\u00famero m\u00e1ximo de multivalues ??posibles en un registro se calcula en 3937. El uso de estimaciones similares para gastos generales, <b>un l\u00edmite pr\u00e1ctico para multivalues ??nonlinked en un registro es de aproximadamente 1.200.<\/b> Estas cifras se proporcionan s\u00f3lo se\u00f1alan que el tama\u00f1o m\u00e1ximo de un objeto es algo mayor en Windows Server 2003 y posteriores&quot;.<\/i><\/p>\n<\/blockquote>\n<p align=\"justify\">Entonces, si tenemos un dominio de Active Directory corriendo todo sobre Windows Server 2003 o superior, entonces un l\u00edmite &quot;pr\u00e1ctico&quot; para los atributos <u>no vinculados<\/u> de valores m\u00faltiples debe ser de aproximadamente 1.200 valores.<\/p>\n<p align=\"justify\">As\u00ed que vamos a poner esto a prueba, \u00bfde acuerdo?<\/p>\n<p align=\"justify\">Se encuentra disponible en el sitio de Microsoft un script de prueba r\u00e1pida y sucia con PowerShell que generar\u00eda una cadena de 8 caracteres al azar de un grupo de caracteres (es decir, es un usuario ficticio al azar,) y luego a\u00f1ade el ID de usuario al azar al atributo <b>memberUid<\/b> de un grupo de seguridad, en un bucle hasta que el script se encuentra con un error porque el gui\u00f3n no puede a\u00f1adir m\u00e1s valores:<\/p>\n<p><font face=\"OCR A Extended\"># <strong>This script is for testing purposes only!<\/strong>       <br \/>$ValidChars = @(&#8216;a&#8217;, &#8216;b&#8217;, &#8216;c&#8217;, &#8216;d&#8217;, &#8216;e&#8217;, &#8216;f&#8217;, &#8216;g&#8217;, &#8216;h&#8217;, &#8216;i&#8217;, &#8216;j&#8217;,       <br \/>&#8216;k&#8217;, &#8216;l&#8217;, &#8216;m&#8217;, &#8216;n&#8217;, &#8216;o&#8217;, &#8216;p&#8217;, &#8216;q&#8217;, &#8216;r&#8217;, &#8216;s&#8217;, &#8216;t&#8217;,       <br \/>&#8216;u&#8217;, &#8216;v&#8217;, &#8216;w&#8217;, &#8216;x&#8217;, &#8216;y&#8217;, &#8216;z&#8217;, &#8216;A&#8217;, &#8216;B&#8217;, &#8216;C&#8217;, &#8216;D&#8217;,       <br \/>&#8216;E&#8217;, &#8216;F&#8217;, &#8216;G&#8217;, &#8216;H&#8217;, &#8216;I&#8217;, &#8216;J&#8217;, &#8216;K&#8217;, &#8216;L&#8217;, &#8216;M&#8217;, &#8216;N&#8217;,       <br \/>&#8216;O&#8217;, &#8216;P&#8217;, &#8216;Q&#8217;, &#8216;R&#8217;, &#8216;S&#8217;, &#8216;T&#8217;, &#8216;U&#8217;, &#8216;V&#8217;, &#8216;W&#8217;, &#8216;X&#8217;,       <br \/>&#8216;Y&#8217;, &#8216;Z&#8217;, &#8216;0&#8217;, &#8216;1&#8217;, &#8216;2&#8217;, &#8216;3&#8217;, &#8216;4&#8217;, &#8216;5&#8217;, &#8216;6&#8217;, &#8216;7&#8217;,&#8217;8&#8242;, &#8216;9&#8217;)<\/font><\/p>\n<p><font face=\"OCR A Extended\">[String]$Str = [String]::Empty      <br \/>[Int]$Bytes = 0       <br \/>[Int]$Uids = 0       <br \/>While ($Uids -LT 1000000)       <br \/>{       <br \/>$Str = [String]::Empty       <br \/>1..8 | % { $Str += ($ValidChars | Get-Random) }       <br \/>Try       <br \/>{       <br \/>Set-ADGroup &#8216;TestGroup&#8217; -Add @{ memberUid = $Str } -ErrorAction Stop       <br \/>}       <br \/>Catch       <br \/>{       <br \/>Write-Error $_.Exception.Message       <br \/>Write-Host &quot;$Bytes bytes $Uids users added&quot;       <br \/>Break       <br \/>}       <br \/>$Bytes += 8       <br \/>$Uids += 1       <br \/>}<\/font><\/p>\n<p>Aqu\u00ed el resultado del script:<\/p>\n<p><a href=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/06.png\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"border-top: 0px; border-right: 0px; border-bottom: 0px; float: none; margin-left: auto; border-left: 0px; display: block; margin-right: auto\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2014\/Test_E6C9\/06_thumb.png\" width=\"544\" height=\"72\" \/><\/a><\/p>\n<p align=\"justify\">Aproximadamente 1.200 usuarios antes de llegar al &quot;l\u00edmite administrativo&quot;, al igual que el art\u00edculo sugiere. Una forma de moverse por tama\u00f1o m\u00e1ximo de este atributo ser\u00eda utilizar grupos anidados, o para romper los ID de usuario separados en dos grupos separados, aunque esto puede hacer que usted tenga que cambiar algo de c\u00f3digo en los sistemas UNIX. <\/p>\n<p align=\"justify\">Por lo general no es un buen d\u00eda cuando uno se da cuenta de que existe este l\u00edmite, por lo que es mejor que debe saberlo de antemano. Otro atributo en Active Directory que podr\u00eda tener un l\u00edmite similar es el atributo <b>servicePrincipalName,<\/b> como se puede leer en <a href=\"http:\/\/blogs.technet.com\/b\/askpfeplat\/archive\/2014\/09\/01\/service-principal-name-attribute-limitations.aspx\">este art\u00edculo AskPFEPlat.<\/a><\/p>\n<p>Espero les sea de interes y utilidad. Saludos. Roberto Di Lello<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quer\u00eda comentarles sobre un problema con un entorno particular que puede ocurrir cuando se est\u00e1n&#8230;<\/p>\n","protected":false},"author":1,"featured_media":4291,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[12,11,158,281],"tags":[217,215,194,195,243,290],"class_list":["post-3002","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-2003-r2","category-2008-r2","category-windows-server-2012","category-281","tag-ad-domain-services","tag-sbs-howto","tag-windows-server-2003-r2","tag-windows-server-2008-r2","tag-windows-server-2012-r2","tag-windows-server-2016"],"_links":{"self":[{"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3002","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3002"}],"version-history":[{"count":2,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3002\/revisions"}],"predecessor-version":[{"id":3004,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3002\/revisions\/3004"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/media\/4291"}],"wp:attachment":[{"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}