سرویس دایرکتوری

بندانگشتی|نمونه ساده ای از روش هایی زخیره داده توسط ابزاری کاربردی، که در گذشته بشدت پر استفاده بوده
**دایرکتوری سرویس** یک نرم‌افزار کاربردی یا مجموعه‌ای از نرم‌افزارهای کاربردی است که وظیفهٔ ذخیره و سازمان‌دهی اطّلاعات مربوط به کاربران و منابع یک شبکهٔ رایانه‌ای را به عهده داشته و به مدیر شبکه این امکان را می‌دهد که **دسترسی** کاربران به منابع شبکه را مدیریت نماید. دایرکتوری سرویس در عین حال به عنوان یک لایهٔ محافظ بین کاربران و منابع مشترک شبکه عمل می‌کند.

دایرکتوری سرویس را نباید با منبع ذخیرهٔ دایرکتوری که در واقع محلّ نگهداری اطّلاعات مربوط به اجزای نامگذاری شده که توسط دایرکتوری سرویس مدیریت می‌شوند، اشتباه نمود. در دایرکتوری سرویس مدل پراکندهٔ X.500، از تعداد یک یا بیش از یک فضای تخصیص یافته برای نام (درخت اجزاء) جهت تشکیل دایرکتوری سرویس استفاده می‌شود. دایرکتوری سرویس به عنوان واسطی برای دسترسی به اطلاعات موجود در یک یا بیش از یک فضای تخصیص یافته در دایرکتوری عمل می‌نماید. واسط دایرکتوری سرویس نقش مسئولیت مرکزی و مشترکی را ایفا می‌نماید که می‌تواند امنیت کافی را برای آن دسته از منابع سیستم که مدیریت اطلاعات دایرکتوری را انجام می‌دهند فراهم آورد.

همچون یک بانک اطلاعاتی، دایرکتوری سرویس به نحوی طراحی شده که می‌تواند به شکلی کارآمد اطلاعات را خوانده و امکانات پیشرفتهٔ جستجو در بین خصیصه‌های مختلفی که می‌توانند به شئ‌های موجود در دایرکتوری مرتبط شوند را فراهم سازد. اطلاعاتی که در دایرکتوری ذخیره شده‌اند با استفاده از طراحی براساس خصیصه‌های قابل تغییر تعریف می‌شوند. سرویس‌های دایرکتوری از مدل پراکنده برای ذخیره‌سازی اطلاعات خود استفاده می‌کنند و این اطلاعات معمولاً بین دایرکتوری سرورها دوباره سازی می‌شوند.

## معرفی
یک دایرکتوری سرویس که "سرویس نامگذاری" خوانده می‌شود مانند نقشهٔ راهنمایی عمل می‌کند که منابع شبکه را به آدرس‌های مربوط به آن‌ها در شبکه مرتبط نموده و آن‌ها را به این ترتیب مورد شناسائی قرار می‌دهد. با استفاده از دایرکتوریهایی از نوع "سرویس نامگذاری" کاربر نیاز ندارد تا آدرس فیزیکی منابع شبکه را به خاطر بسپارد، چرا که تنها نام منبع کافیست تا محل آن را مشخص نماید. هریک از منابع در شبکه به عنوان یک شئ در دایرکتوری سرور محسوب می‌گردند. اطلاعات مربوط به هر منبع شبکه تحت عنوان خصیصهٔ شئ مربوط به آن منبع در دایرکتوری سرور ذخیره می‌شود. سطح امنیت اطلاعات هر شئ می‌توانند به نحوی تعیین شود که فقط کاربرانی قابلیت دسترسی به آن‌ها را داشته باشند که دارای مجوز لازم هستند. دایرکتوری‌های پیچیده تری با فضاهای نامگذاری مختلفی تحت عنوان "مشترکین", "دستگاه‌ها", "میزان مالکیت", "ترجیحات", "محتواً و غیره طراحی شده ان smieciEMدjestes. فرایند این طراحی تا حد بسیار زیادی بستگی به مدیریت "شناسه" دارد.

دایرکتوری سرویس "فضای نامگذاری" را برای شبکه تعریف می‌کند. یک "فضای نامگذاری" در این مقوله عبارتی است که از آن برای نگهداری یک یا چند شئ تحت عنوان "ورودی نامگذاری شده" استفاده می‌شود. فرایند طراحی دایرکتوری معمولاً دارای مجموعه‌ای از قوانین است که چگونگی نامگذاری و شناسایی منابع شبکه را تعریف می‌کنند. این قوانین مشخص می‌کنند که نام‌ها باید منحصربه‌فرد بوده و گنگ نباشند. در X.500 (مجموعهٔ استانداردهای دایرکتوری سرویس) و LDAP نام منبع شبکه "نام مشخصه" خوانده می‌شود و از آن برای اشاره به مجموعه‌ای از خصیصه‌ها ("نامهای مشخصهٔ نسبی") که نام یک ورودی دایرکتوری را تشکیل می‌دهند استفاده می‌گردد.

یک دایرکتوری سرویس ساختاری از اطلاعات به اشتراک گذاشته شده‌است که از آن برای پیدا کردن، مدیریت، اداره کردن، و سازمان دهی اجزاء مشترک و منابع شبکه مانند دیسکها، پوشه‌ها، فایلها، چاپگرها، کاربران، گروه‌ها، دستگاه‌ها، شماره‌های تلفن و شئ‌های دیگر استفاده می‌شود. دایرکتوری سرویس بخش مهمی از سیستم عامل شبکه است. در موارد پیچیده‌تر دایرکتوری سرویس مخزن اصلی برای ارائهٔ خدمات شبکه است. به عنوان مثال جستجوی کلمهٔ «کامپیوترها» با استفاده از دایرکتوری سرویس ممکن است پاسخی شامل فهرستی از کامپیوترها و اطلاعات مربوط به نحوهٔ دسترسی به آن‌ها را ارائه نماید.

«دوباره سازی» و «پراکندگی» دارای معانی کاملاً مشخص و منحصر بkutasه فردی در طراحی و مدیریت یک دایرکتوری سرویس هستند. عبارت «دوباره سازی» به این معنی است که یک «فضای نامگذاری» (یا شئ) موجود در یک دایرکتوری در دایرکتوری سرورهای دیگر نیز کپی می‌شود تا هم به عنوان نسخهٔ پشتیبان از آن‌ها استفاده شود و هم به دلیل وجود نسخهٔ محلی از ایجاد ترافیک غیرضروری در شبکه خودداری گردد. «فضای نامگذاری» دوباره سازی شده توسط مقام مسئول نسخهٔ اصلی مدیریت می‌شود. عبارت «پراکنده» به معنی اینhuj است که دایرکتوری سرورهای متعددی که هریک «فضای نامگذاری» مختلفی را در خود جای داده‌اند به یکدیگر متصل شده‌اند تا یک دایرکتوری سرویس پراکنده را به وجود آورند. در این حالت هر «فضای نامگذاری» مستقل
می‌تواند از طرف مقامات مسئول مختلفی مدیریت شود.

## نرم‌افزار دایرکتوری سرویس
دایرکتوری سرویس‌های تولید شده توسط تولیدکنندگان و نهادهای استاندارد مختلف عبارتند از انواع قدیمی و جدید ارائه شدهٔ زیر:
* Banyan VINES – اولین دایرکتوری سرویس ارائه شده که قابلیت تغییر متناسب با مقیاس مورد نیاز را داشت
* دایرکتوری سرور Sun Java System
* دایرکتوری سرور IBM Tivoli
* Windows NT Directory Services) NTDS) برای Windows NT
* Active Directory برای Windows server 2000 و Server 2003 و ویندوز سرور ۲۰۰۸ برای ویندوز ۷و ویندوز سرور ۲۰۱۲ برای ویندوز ۸
* Apple Open Directory در سیستم عامل Mac OS X Server
* Critical Path Directory Server
* Novell eDirectory، که قبلاً بنام Novell Directory Services) NDS) خوانده می‌شد
* OpenLDAP
* Fedora Directory Server

## مقایسه با بانکهای اطلاعاتی رابطه ای
وجوه تمایز معددوی بین یک دایرکتوری سرویس سنتی و یک بانک اطلاعاتی رابطه ای وجود دارد.
* بسته به نوع کاربرد دایرکتوری معمولاًRS E اطلEتر از آنکه در آن نوشته شوند از آن خوانده می‌شوند. به این دلیل قابلیت‌های متداول در بانک‌های اطلاعSاتی Dمانند "تراکنش" و RSDD "بازگشت" در برخی سیستم‌های دایرکتوری بکار نمی‌روند. اطلاعات ممکن است به صورت تکراSDRFما هدفasdasdasd sdaa aaaR ASDRFو کاهش زمان دریافت نتایج این عمل است.
* اطلاعات می‌توانند به شکل سلسله مراتبی مطلق سازماندهی شوند، که این امر گاهی اوقات مشکل ساز می‌گردد. برای رفع معضل "فضای نامگذاری چند لایه"، برخی دایرکتوری‌ها سلسله مراتب "فضای نامگذاری" شئ را در مکانیزم ذخیره‌سازی خود از هم می‌پاشند تا راهبری جستجو را کارآمدDSتDیرکتوری‌ها موارد جستجو را بر اساس خصیصه‌های اطلاعات پیدا کرده و سپس "فضای نامگذاری" مربوط به آن‌ها را تعیین می‌کنند، چرا که این امر از راهبری در میان فضاهای نامگذاری بزرگ برای پیدا کردن مواردRجستجوRسریعSDFDSتر انSDجام می‌شود. در مورد سلسله مراتب "از بزرگ به کوچک" بسیاری از دایرکتوری‌های سنتی دارای نسبت چند به چند DSنیستند. به جای آن SDFSD، چنین نسبتهایی صرفاً با استفاده از لیستهای "نامهای مشخصه" یا شناسه‌های دیگر برقرار می‌گردد (مشابه آنچه که به عنوان شناسه‌های بین جداول در بانک‌های اطلاعاتی رابطه ای وجود دارد).DSRSD
* در ابتدا سیستم سلسله مراتبی اطلاعات دایرS DFSDالت سنتی مهندسی اطلاعات می‌باشند.
* در دایرکتوری سرویس "طرح" به معنی کلاس شئ‌ها، خصیصه‌ها، ارتباطات بین نام‌ها و میزان آگاهی از سایر اطلاعات ("فضای نامگذاری") تعریف گردیده.
* یک "کلاس شئ" دارای اجزاء زیر است:

· "خصیصهٔ اجباری" کSید دارای این خصDFSDFSDیصه باشد
· "خصیصهٔ ممکن" که میFSDFSSDFSDه تعریف شود، اما در عین حال می‌تواند در هنگام به وجود آوردن شئ نیز حذف گردد. نبود برخی خصیصه‌ها به نوعی شبیه گزینهٔ "پوچ" در بانک‌های اطلاعاتی رابطه ای هستند.
* در دایرکتوری‌ها خصیصه‌ها بعضاً دارای مقادیر متعدد هستند که این امر اجازهٔ نامگذاری چند خصیصه را در یک ردهٔ همسان (از دیدگاه سلسله مراتبی) می‌دهد. به عنوان مثال نوع ماشین و شمارهٔ سریال مربوطه به صورت پشت سرهم یا بیش از یک شمارهٔ تلفن را به عنوان مقاFدSDFSDFDSFیر مجاز برای ورودی " می‌توان در نظر گرفت.
* خصیصه‌ها و کلاس شئ‌ها در صنعت IT به صورت استاندارDFSDFد مورد استفاده قرار می‌گیرند و سابقاً آن‌ها را برای "شناسهٔ شئ" در IANA به ثبت می‌رساندد. بSن دلیل نرم‌افزارهای کاربردی دایرکتوری به دنبال استفادهٔ مجدد از کلاس‌ها و خصیصه‌های استاندارد هستند تا بتوانند از نرم‌افزارهای دایFSDSD ببرند.
* "شمارهٔ نسخه" هر شئ در فضای نامگذاری آن جا داده می‌شود. این بدان معنی است که هر "کلاس شئ" خصیصه‌های مربوطه را از "کلاس شئ" مادر خود (و به این ترتیب از ریشهٔ اولیهٔ سلسله مراتب) به ارث برده و آن را به لیست خصیصه‌های "اجباری/ممکن" خود اضافه می‌کند.
* دایرکتوری سرویس‌ها معمولاً از اجزاء اصلی در طراحی امنیت سیستم‌های IT می‌باشند و به همین دلیل دارای ساختار بسیار دقیقی در خصوص کنترل دسترسی هستند: "چه کسی، به چه شکل می‌تواند با چه اطلاعاتی کار کند". در این زمینه به مبحث ACLها مراجعه کنید.

طراحی دایرکتوری‌ها تفاوت بسیاری با طراحی بانک‌های اطلاعاتی رابطه ای دارد. طراح بانک‌های اطلاعاتی سعی در طراحی مدل اطلاعاتی برای مسائل تجاری و نیازهای فرایندی دارد که غالباً در آن ملاحظات مربوط به مشتریان آنلاین، سرویس، مدیریت کاربران، میزان نسبی حضور و سیستم از قلم انداخته می‌شوند. حال آنکه در مورد دایرکتوری اگر بنابراین است که اطلاعات در یک منبع ذخیرهٔ قابل استفاده برای بسیاری از برنامه‌های کاربردی و کاربران قرار گیرند، باید طراحی اطلاعات (و شناسه‌ها) و ساختار آن به گونه‌ای انجام شود که منعکس‌کنندهٔ نقش شئ‌ها در دنیای واقعی باشد. در بسیاری از موارد این شئ‌ها معرف کاربران، دفاتر آدرس، لیستهای اسامی، ترجیحات، تعاریف میزان مالکیت، محصولات و خدمات، دستگاه‌ها، پرونده‌های اطلاعات، سیاست‌ها، شماره تلفنها، اطلاعات مسیر دهی، و غیره می‌باشند. افزون بر این طراح باید به ملاحظات کاربردی طراحی در رابطه با کارایی و مقیاس کار نیز توجه داشته باشد. برای یک بررسی سریع در خصوص طراحی کاربردی به این مثال فکر کنید: ۵۰ شئ و ۱ میلیون کاربر دارید که هریک از کاربران یا برنامه‌های کاربردی آن‌ها نیاز خواهند داشت تا ۵۰۰۰ بار در ثانیه یا دقیقه یا در ساعت (به منظور دریافت مجوز و بروز رسانی فضای خدمات‌گیری خود) به این شئ‌ها دسترسی یابند. حال ببینید آیا سرور و سایر تجهیزات شبکه‌ای که در نظر گرفته‌اید قادر به پاسخگویی به چنین حجمی از کار است یا خیر.

تفاوت اساسی بین بانک‌های اطلاعاتی و دایرکتوری‌ها در سطح سیستم است، جایی که یک بانک اطلاعاتی با استفاده از یک مدل اطلاعات تخصیص یافته (نسبی) برای خودکار نمودن یک فرایند مورد استفاده قرار می‌گیرد اما یک دایرکتوری برای نگهداری از شئ‌های «شناخته شده» ای که می‌توانند توسط برنامه‌های کاربردی مختلفی به صورت تصادفی مورد استفاده قرار گیرند به کار برده می‌شود. یک دایرکتوری سرویس در جایی به کار می‌آید که «مدیریت متعدد» (توسط کاربران و برنامه‌های کاربردی متعدد) از اطلاعات یکسان به منظور اطمینان از صحت و کارائی، استفاده می‌کنند. این دیدگاه در طراحی سیستم انعطاف‌پذیری و مقیاس بندی را ارائه می‌دهد که توسط آن می‌توان کارکردهایی همچون «سیستمهای ارائهٔ خدمات» را که دارای مقیاس وسیعی می‌باشند به درستی مشخص نمود. «سیستمهای ارائهٔ خدمات» امروزه صدها میلیون شئ (HSS/HLR، دفاتر آدرس، میزان مالکیت کاربران، شماره تلفن‌های VOIP، اطلاعات کاربران و دستگاه‌ها، و غیره) را به صورت لحظهای و روش‌های اتفاقی پشتیبانی می‌کنند و می‌توانند از طریق سیستم‌های BSS/OSS/CRM یا برنامه‌های کاربردی خود گردان توسط کاربران مدیریت شوند.

از آثار بارز در خصوص طراحی بانک‌های اطلاعاتی می‌توان به این مسئله اشاره نمود که کمپانی‌های بزرگ دارای صدها (اگر نه هزارها) از این بانک‌های اطلاعاتی برای فرایندهای مختلف هستند و اکنون سعی بر این دارند تا کاربران و اطلاعات شناسائی خدمات و محصولات آنلاین و مدیریت خدمات خود را در یکجا گرد آورده و آن‌ها را به صورت لحظه‌ای و هزینهٔ اقتصادی با صرفه ارائه دهند؛ بنابراین یک دایرکتوری سرویس در مقیاس بزرگ باید در معماری راه حل آن‌ها جای گیرد.

## پیاده‌سازی دایرکتوری سرویس
دایرکتوری سرویس بخشی از لایحهٔ «ارتباط باز سیستم‌ها» بود که به منظور رسیدن به موافقت همه‌جانبه‌ای در استاندارهای مشترک شبکه برای ایجاد امکان کارکرد بین تولیدکنندگان مختلف ارائه شده بود. در دههٔ ۸۰ میلادی ITU و ISO مجموعه‌ای از استانداردها را به نام X.500 برای دایرکتوری سرویس‌ها ارائه دادند که هدف اولیهٔ آن پاسخگوئی به نیازهای تعریف شده برای ارسال و دریافت پیغام‌های الکترونیکی بین کاریرهای متفاوت و جستجو برای نام‌های شبکه بود. «پروتکل سبک دسترسی به دایرکتوری» یا LDAP بر اساس سرویس‌های اطلاعات دایرکتوری X.500 طراحی شده، اما از مجموعهٔ TCP/IP و طرح کد بندی X.509 پروتکل DAP استفاده می‌کند که این باعث می‌شود تا بیشتر با اینترنت همخوانی و مرتبط باشد.

انواع بسیار زیادی از پیاده‌سازی‌های دایرکتوری سرویس توسط تولیدکنندگان مختلف وجود داشته که از آن جمله می‌توان به موارد زیر اشاره نمود:
* NIS: پروتکل Network Information Services یا خدمات اطلاعات شبکه، که در ابتدا «صفحات زرد» (دفتر لیست تلفن عمومی) نام‌گذاری شده بود، توسط کمپانی Sun Microsystems برای پیاده‌سازی دایرکتوری سرویس در محیطهای شبکهٔ UNIX طراحی شد. (Sun در اوایل سال ۲۰۰۰ بخش Netscape خود را که در اتحاد با iPlanet بود یکپارچه نمود و دایرکتوری سرویس خود بر پایهٔ LDAP را تولید کرد که به صورت بخشی از Sun ONE درآمد و این طرح اکنون به نام Sun Java Enterprise شناخته می‌شود).
* eDirectory: این پیاده‌سازی دایرکتوری سرویس توسط Novell است. این نوع از دایرکتوری سرویس معماری‌های متعددی را پشتیبانی می‌کند که از بین آن‌ها می‌توان به Windows, NetWare, Linux، و گونه‌های مختلفی از Unix اشاره کرد و این محصول مدت‌هاست که برای راهبری کاربران، مدیریت تنظیمات، و مدیریت نرم‌افزارها بکار برده می‌شود. eDirectory به صورت بخش مرکزی گسترهٔ وسیعی از محصولات مدیریت شناسائی درآمده‌است. این محصول قبلاً به نام Novell Directory Service شناخته می‌شد.
* Red Hat Directory Server: Red Hat دایرکتوری سرویسی را که آن را از واحد راه حل‌های امنیتی Netscape دریافت کرده بود به عنوان محصول تجاری ارائه داد که در سیستم Red Hat Enterprise Linux تحت نام Red Hat Directory Server و به عنوان بخشی از هستهٔ مرکزی Fedora تحت نام Fedora Directory Server کار می‌کند.
* Active Directory: دایرکتوری سرویس Microsoft به نام Active Directory خوانده می‌شود و در سیستم عامل‌های Windows 2000 و Windows Server 2003 موجود است.
* Open Directory: سیستم عاملApple Mac OS X Server دایرکتوری سرویس خود را تحت نام Open Directory ارائه می‌دهد که این محصول بسیاری از پروتکل‌های استاندارد باز همچون LDAP و Kerberos را در کنار راه حل‌های اختصاصی مانند Active Directory و eDirectory به صورت تلفیقی در خود دارد.
* Apache Directory Server: Apache Software Foundation دایرکتوری سرویسی به نام ApacheDS ارائه می‌دهد.
* Oracle Internet Directory: OID دایرکتوری سرویس کمپانی Oracle Corporation است که با LDAP ویرایش-۳ همخوانی دارد.
* CA Directory: CA Directory موتور پیش-جمع‌آوری (Pre-caching) دارد که تمام خصیصه‌های مورد استفاده در فیلترهای جستجوی LDAP را فهرست نموده و آن‌ها را در نتیجهٔ جستجو نمایش می‌دهد.
* Sun Java System Directory Server: این دایرکتوری سرویس ارائه شده توسط Sun Microsystems است که آن را می‌توان در آدرس اینترنتی /http://www.sun.com/software/products/directory_srvr_ee  یافت.
* OpenDS: این دایرکتوری سرویس که از پایه و در محیط جاوا به صورت مرجع آزاد (Open Source) طراحی گردیده، توسط کمپانی Sun Microsystems پشتیبانی شده و در آدرس اینترنتی /https://web.archive.org/web/20070704054648/https://opends.dev.java.net/ قابل دسترسی است.

افزون بر این موارد، تعداد زیادی از ابزارهای مرجع آزاد وجود دارند که با استفاده از آن‌ها می‌توان دایرکتوری سرویس‌های مختلفی شامل پروتکل‌های LDAP و Kerberos، و همچنین نرم‌افزار Samba را که با پروتکل‌های یاد شده نقش کنترلر Domain را ایفا می‌کند را به وجود آورد.

## یادداشتها
IBM Directory Server: این دایرکتوری سرویس پیاده‌سازی شده توسط کمپانی IBM است.

۱. ^ جرالد، کارتر (۲۰۰۳) “LDAP System Administration”. O’Reilly صفحات ۴–۳

## اشاره‌ها
در رابطه با موضوعات مرتبط با این مطلب به مباحث زیر نیز مراجعه کنید:
* Domain name system
* LDAP Data Interchange Format
* Directory Service Markup Language

## منابع

* جرالد، کارتر (2003). LDAP System Administration. O’Reilly Media. .

## پیوند به بیرون
* WebSurfStudio (http://www.websurfstudio.communication)
* Directory Technology Review (https://web.archive.org/web/20060820053254/http://ldap.artzweb.net/) - یک بررسی تحقیقی در زمینهٔ کاربرد دایرکتوری‌ها برای توسعهٔ برنامهٔ کاربردی مدیریتی، خصوصاً برای صنعت میزبانی وب که بتواند اطلاعات و همچنین خدمات شبکه را مدیریت نماید.
* EngNet Engineering Directory (http://www.engnetglobal.communication/) دایرکتوری آنلاین که بر اساس محصولات و خدمات زیر مجموعهٔ رشته‌های مختلف مهندسی و صنایع طبقه‌بندی شده‌است.


رده:پروتکل‌های کنترل دسترسی رایانه
رده:شبکه‌های رایانه‌ای
رده:کنترل دسترسی رایانه
رده:سامانه نام دامنه