معرفی 16 محدودیت اکتیودایرکتوری و کاربرد آنها که باید بدانید

در این مقاله به بررسی انواع محدودیت های موجود در اکتیودایرکتوری می پردازیم و همچنین پیشنهادهایی را ارائه می دهیم که رعایت آن ها در طراحی و پیاده سازی زیرساخت اکتیودایرکتوری مهم و حیاتی است. محدودیت هایی که بررسی می کنیم عبارتند از:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
  1. بیشترین تعداد Object
  2. بیشترین تعداد شناسه امنیتی یا همان SID
  3. بیشترین تعداد موجودیت های Discretionary و Security Access Control List
  4. بیشترین تعداد عضویت در گروه ها برای Security Principalها
  5. محدودیت های طول FQDN
  6. محدودیت طول نام و آدرس فایل ها
  7. محدودیت های دیگر در طول نام ها
  8. محدودیت های Schema برای طول نام ها
  9. محدودیت های طول نام در عملیات های اتصال از طریق LDAP
  10. محدودیت تعداد GPOهای اعمال شده
  11. محدودیت Trustها
  12. محدودیت تعداد اکانت ها در هر تراکنش LDAP
  13. راهنمای انتخاب بیشترین تعداد کاربر در یک گروه
  14. راهنمای انتخاب بیشترین تعداد دامین در هر Forest
  15. راهنمای انتخاب بیشترین تعداد دامین کنترلر در یک دامین
  16. راهنمای انتخاب بیشترین تعداد تنظیماتKerberos

بیشترین تعداد Object ها

هر دامین کنترلر در یک forest در تمام عمرش می تواند کمی کمتر 2.15 بیلیون object بسازد. هر دامین کنترلر در اکتیودایرکتوری یک شناسه منحصر به فرد دارد که مخصوص همان دامین کنترلر است. این شناسه ها که به آن ها Distinguished Name Tag یا DNT هم می گویند، replicate نمی شوند

و ار دید دامین کنترلرهای دیگر پنهان هستند. DNT می تواند مقداری از 0 تا 2,147,483,393 را داشته باشد. زمانی که در دامین کنترلر یک object ساخته می شود، یک مقدار منحصر به فرد به آن اختصاص داده می شود.وقتی که یک object را پاک می کنیم، دیگر از DNT مربوط به آن شی استفاده نخواهد شد.

بنابراین تعداد اشیا هر دامین کنترلر محدود به 2 بیلیون شی می شود (که اشیائی که از طریق replication ساخته می شود را شامل می شود). این محدودیت همه اشیا در همه پارتیشن هایی (domain NC، configuration schema و هر application directory partition) که در آن دامین کنترلر داریم را شامل می شود. زمانی که تعداد DNTها به حداکثر رسیده باشد، در سطح پایگاه داده خطای زیر را می بینید:

Error: Add: Operations Error. <1> Server error: 000020EF: SvcErr: DSID-0208044C, problem 5012 (DIR_ERROR), data -1076.
  • نکته: در بعضی از اکتیو دایرکتوری ها مشکلی وجود دارد که اندازه پایگاه داده اکتیودایرکتوری در دامین کنترلری که roleهای DNS بر روی آن نصب هستند، به شدت افزایش می یابد. البته یک hotfix برای رفع این مشکل ارایه شده که شماره آنKB2548145 است. دلیل اصلی این افزایش سایز در بالا بودن تعداد اشیا delete شده است.

بیشترین تعداد SID

این قسمت را با ویندوز سرور 2012 شروع می کنیم که بیسترین تعداد SIDهایی که در تمام عمر یک دامین می توان ساخته شود 2,147,483,647 RID است. در ویندوز سرور 2012 بهبودهای چشمگیری در روش های ساخت و نظارت بر RIDها صورت گرفت و همین امر باعث افزایش تعداد شناسه های امنیتی شد.

در ویندوز سرور 2008 و سیستم عامل های قدیمی تر، بیشترین تعداد security identifier در عمر یک دامین در حدود 1 بیلیون است.اندازه دقیق آن 1,073,741,823 RID است.در ویندوز سرور 2012 زمانی که %1 از تعداد RIDها باقی مانده باشد، هر دامین کنترلری که درخواست RID میکند، یک event با شناسه 16656 در event log سیستم هایشان ثبت می کنند.

در ویندوز سرور 2008 R2 و سیستم عامل های قدیمی تر، زمانی که از تمام محدوده RIDها استفاده شده باشد، یک event با شناسه 16644 در event log ثبت می شود که متن آن مشابه متن زیر است:

The maximum domain account identifier value has been reached. No further account-identifier pools can be allocated to domain controllers in this domain.

اگر تمام RIDهای مجاز استفاده شده باشد، دستور Dcdiag را اجرا کنید، با خطای زیر مواجه می شوید:

The DS has corrupt data: rIDAvailablePool value is not valid.

یکی از راه حل های موقتی برای این مشکل این است که یک دامین additional برای مدیریت اکانت ها بسازیم و سپس اکانت ها را به دامین جدید منتقل کنیم. همچنین برای انتقال اکانت ها باید بین دامین ها trustها برقرار کنید.

  • نکته: پایگاه داده اکتیودایرکتوری بر روی تعداد objectهای درون یک container (برای مثال Organizational unit) محدودیت اعمال نمی کند. ممکن است که هنگام کار کردن با هزاران object با محدودیت هایی مواجه شوید. این محدودیت ها برای بهبود در دسترس بودن برنامه ها یا سرویس ها ایجاد شده اند.
  • برای مثال کنسول Active Directory Users and Computers طوری طراحی شده است که حداکثر 2000 object را در هر container نمایش دهد. می توانید این مقدار را در منوی View و با استفاده از قسمت Filter Options تغییر دهید. همچنین برای بهبود عملکرد دامین کنترلرها، سیاست هایی در LDAP تنظیم شده است.

بیشترین تعداد موجودیت های Discretionary و Security Access Control List

تعداد موجودیت های هر Discretionary Access Control List (یا DACL) و یا Security Access Control List (یا SACL) با استفاده از ntSecurityDescriptor اندازه 64000 شی است. این تعداد از محدود بودن Access Control List (یا ACL) ایجاد می شود. از آن جا که حجم موجودیت های Access Control (یا ACEها) متفاوت است، تعداد واقعی این موجودیت ها، حداکثر 1820 موجودیت می شود.

بیشترین تعداد عضویت در گروه ها برای Security Principalها

Security Principalها (مانند user، group و computer account) می توانند حداکثر عضو 1015 گروه باشند. محدود بودن حجم رمزهای عبور برای هر security policy، این محدودیت را به وجود می آورد. لازم به ذکر است که این محدودیت با چیدمان گروه ها ارتباطی ندارد.

محدودیت های طول FQDN

در اکتیو دایرکتوری FQDNها یا همان Fully Qualified Domain Nameها نمی توانند طولی بیشتر از 64 کاراکتر داشته باشند که این مقدار شامل ویرگول و نقطه ها می شود. برای مثال نام هاست زیر 65 کاراکتر دارد که یک دامین مجاز در اکتیودایرکتوری نیست:

Server10.branch-15.activedirectory.education.networking.tosinso.com

خیلی مهم است که این محدودیت را هنگام نام گذاری دامین ها در نظر داشته باشید.

محدودیت طول نام و آدرس فایل ها

فایل های فیزیکی که اجزا مختلف اکتیودایرکتوری از آن ها استفاده می کنند (مانند SYSVOL، پایگاه داده (یا NTDS.DIT) و آدرس فایل های log) تحت تاثیر تعداد 260 کاراکتر MAX_PATH در APIهای Win32 هستند. هنگام نصب اکتیودایرکتوری، زمانی که آدرس فایلهای SYSVOL و پایگاه داده را تعیین می کنید، از انتخاب فولدرهای تودرتو جلوگیری کنید. زیرا این ساختار تودرتو، طول آدرس فولدرهای SYSVOL، پایگاه داده و فایل های log را بیشتر از 260 کاراکتر می کند.

محدودیت های دیگر در طول نام ها

در اکتیودایرکتوری محدودیت های دیگری برای طول نام ها وجود دارد که عبارتند از:

  • نام کامپیوترها و دامین ها در NetBIOS حداکثر 15 کاراکتر است.
  • نام هاست ها در DNS حداکثر 24 کاراکتر است.
  • نام OU ها حداکثر 64 کاراکتر است.

محدودیت های Schema برای طول نام ها

Schema بر روی نام objectهای مختلف در اکتیودایرکتوری محدودیت هایی اعمال می کند. موارد زیر مثال هایی از محدودیت های schema برای نام ها است:

  • Display name طولی معادل 256 کاراکتر دارد.
  • Common name طولی معادل 64 کاراکتر دارد.
  • SAM-Account-Name (که در نسخه های قبل از ویندوز 2000 به آن نام کاربری هم می گفتند) در schema دارای طولی معادل 256 کاراکتر است.

محدودیت های طول نام در عملیات های اتصال از طریق LDAP

در عملیات های اتصال به یک دایرکتوری از طریق LDAP، Distinguished Name (که معمولا آن را با DN می شناسیم) می تواند حداکثر 255 کاراکتر باشد. اگر عملیات LDAP مورد نظرتان طولی بیش از 255 کاراکتر داشته باشد، با خطاهایی درباره اعتبارسنجی مواجه می شوید، مانند نمونه زیر:

Error <49>: ldap_simple_bind_s() failed: Invalid Credentials 
Server error: 80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 57, v1771 
Error 0x80090308 The token supplied to the function is invalid

برای جلوگیری از وقوع این مشکل می توانید برنامه ها، اسکریپت ها و utilityهایی که سعی می کنند به یک دایرکتوری با استفاده از LDAP متصل شوند را مجبور کنید که از نسخه امن LDAP استفاده کنند. همچنین می توانید از عمق ساختار OUها کم کنید و یا طول اسم OUها را کاهش دهید. برای مثال distinguished name زیر 258 کاراکتر دارد:

CN=SoLand,OU=CorporateVicePresidents,OU=CorporateOfficers,OU=ViewOfPugetSoundOffices,OU=TopFloor,OU=Building1557,OU=CorporateCampus,OU=Redmond,OU=Washington,OU=NorthWestern,OU=UnitedStatesOfAmerica,OU=NorthAmerica,DC=BusinessGroup,DC=humongousinsurance,DC=com

اگر نام OUای که نامش CorporateVicePresident است را به CVP تغییر دهیم، distinguished name برای اکانت SoLand به 239 کاراکتر کاهش می یابد.

محدودیت تعداد GPOهای اعمال شده

به هر user account یا computer account می توانید حداکثر 999 Group Policy Object (یا همان GPO) را اعمال کنید. این یه این معنی نیست که تعداد تنظیمات policy در سیستم 999 تا است. بلکه یعنی هر user یا computer نمی تواند بیش از 999 GPO را پردازش کند. این محدودیت برای بهبود عملکرد سیستم ایجاد شده است.

محدودیت Trustها

محدودیت Trustها از تعداد دامین هایی که trust دارند، طول آدرس trust و قابلیت کلاینت ها برای شناسایی trustهای موجود ناشی می شود. محدودیت هایی که اعمال می شوند شامل:

  • کلاینت های کربروس می توانند حداکثر 10 trust را در هر تقاضای منایع از یک دامین دیگر شناسایی کنند. اگر مسیر trust بین این دو دامین بیشتر از محدوده باشد، آن تقاضا برای دستریس به دامین ناموفق می شود.
  • زمانی که یک کلاینت به جستجوی مسیر trust می پردازد، جستجو تنها به trustهایی که به دامین مورد نظر ختم می شود، محدود می شود.
  • آزمایش ها نشان می دهد که افزایش زمان اجرای عملیات های مربوط به TDO مانند هویت سنجی در دامین ها، اگر در اکتیودایرکتوری بیش از 2400 TDO داشته باشیم، باعث افت کیفیت و سرعت پردازش ها می شود.

محدودیت تعداد اکانت ها در هر تراکنش LDAP

زمانی که اسکریپت یا برنامه ای می نویسید که تراکنش های LDAP را انجام می دهد، توجه داشته باشید که برنامه یا اسکریپت تان نمی تواند بیش از 5000 عملیات را در هر تراکنش انجام دهد. تراکنش LDAP به گروهی از عملیات های دایرکتوری (مانند اضافه کردن، حذف کردن و دستکاری) گفته می شود که با آن به عنوان یک واحد یکتا برخورد می شود.

اگر اسکریپت یا برنامه تان بیش از 5000 عملیات در یک تراکنش LDAP داشته باشد، ممکن است که با خطای محدودیت منابع و یا وقفه در عملیات ها مواجه شوید. اگر همچین اتفاقی رخ دهد، همه عملیات های تراکنش (تغییرات، عملیات های اضافه کردن، دستکاری ها) به وضعیت اولیه خود بازمی گردند، به بیان دیگر تمام تغییراتی که ایجاد کرده اید از بین می روند.

برای مثال اگر با استفاده از ADSI یا همان Active Directory Service Interface اسکریپت می نویسید، تابع SetInfo یک تراکنش کامل را انجام می دهد.در یک مثال دیگر داریم، زمانی که از System.DirectoryServices یا S.DS در فریم ورک .Net استفاده کنید، تابع DirectoryEntry.CommitChanges یک تراکنش کامل را انجام می دهد.

  • نکته: به تابعی که در تراکنش های LDAP استفاده می کنید، دقت کنید و مطمئن شوید که در هر تراکنش بیش از 5000 عملیات نمی فرستید.

راهنمای انتخاب بیشترین تعداد کاربر در یک گروه

در محیط اکتیودایرکتوری ویندوز 2000، پیشنهاد می کنم که حداکثر 5000 کاربر در یک گروه داشته باشید. این محدودیت به دلیل محدود بودن تغییرات همزمان و اتمیک در هر تراکنش پایگاه داده است.در ویندوز سرور 2003، قابلیت replicate کردن تغییرات همزمان به عنوان یک تکنولوژی جدید با نام Linked Value Replication یا LVR معرفی شد.

برای فعال کردن LVR، حداقل سطح عملیاتی forest را ویندوز سرور 2003 انتخاب کنید. افزایش سطح عملیاتی forest روش ذخیره سازی کاربران هر گروه در پایگاه داده و روش replicate کردن بین دامین کنترلرها را تغییر می دهد. با این کار می توانید بیش از 5000 کاربر را در در هر گروه عضو کنید.علاوه بر این، سازمان های تولیدی گزارش 4 میلیون عضو را داده اند و در محیط آزمایشگاهی مایکروسافت این تعداد به 500 میلیون عضو رسیده است.

  • نکته مهم: افزایش سطح عملیاتی به ویندوز سرور 2003 تغییری در روش ذخیره و replicate شدن عضوهای فعلی در گروه ها ایجاد نمی کند. برای این کار، باید عضوهای فعلی گروه را قبل افزایش سطح عملیاتی به ویندوز سرور 2003 حذف کنید و سپس آن ها را به گروه های مناسب اضافه کنید. بعد از افزایش سطح عملیاتی forest، برای هر عضوی که در گروه ساخته شود، قابلیت LVR فعال می شود (حتی اگر در گروه عضوهایی داشته باشیم که برای آن ها LVR غیرفعال است).

راهنمای انتخاب بیشترین تعداد دامین در هر Forest

در ویندوز سرور 2000، پیشنهاد می کنم که حداکثر 800 دامین را در هر forest ایجاد کنید. در ویندوز سرور 2003، زمانی که سطح عملیاتی forest بر روی ویندوز سرور 2003 (به این سطح عملیاتی، سطح عملیاتی دوم هم می گویند) است، حداکثر 1200 دامین را در هر forest بسازید.

راهنمای انتخاب بیشترین تعداد دامین کنترلر در یک دامین

برای اطمینان از امکان بازگردانی SYSVOL، پیشنهاد می کنیم که در هر دامین حداکثر 1200 دامین کنترلر بسازید.

راهنمای انتخاب بیشترین تعداد تنظیمات Kerberos

بهتر است که بیشترین سایز برای هر تیکت کربروس را 48000 بایت انتخاب کنید که این مقدار از طریق یک کلید DWORD به نام MaxTokenSize در رجیستری (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Lsa\Kerberos\Parameters) و یا از طریق Group Policy تعیین می شود.

  • نکته: بیشترین مقدار مجاز برای MaxTokenSize 65535 بایت است. با این حال به دلیل روش رمزنگاری در tokenهای احراز هویت HTTP که base64 است، مقدار بیش از 48000 را برای MaxTokenSize پیشنهاد نمی کنم. در ویندوز سرور 2012، مقدار پیش فرض برای MaxTokenSize بر روی 48000 تعیین شده است.

نظرات