محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

دایرکتوری سرویس چیست؟ بررسی مفهوم Directory Service به زبان ساده

دایرکتوری سرویس چیست؟ چگونه Directory Service را تعریف کنیم؟ در اینترنت برای نوشتن این موضوع که دایرکتوری سرویس چیست و از کجا مفهومی به نام Directory Service آمده است جستجو کردم اما جالب اینجاست که بیشتر از اینکه در مورد ماهیت اصلی این مفهوم توضیح داده شده باشد در خصوص کاربردهایش توضیح داده شده است. امروز برای اولین بار در توسینسو کاملترین و ساده ترین توضیح در خصوص دایرکتوری سرویس را به شما ارائه می کنیم و امیدوارم که مورد توجه شما قرار بگیرد .

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

فرض کنید که شما قرار است تعداد زیادی Object یا شیء را در یک پایگاه داده ذخیره سازی کنید ، چگونه اینکار را انجام می دهید ؟ آنها را در یک فایل متنی قرار می دهید ؟ یا در یک ساختار دیتابیس که قابلیت Query گرفته شدن و جستجو داشته باشد ؟ طبیعتا شما گزینه دوم را انتخاب می کنید . در دانشگاه درسی به نام ساختمان داده داشتید که در آن الگوریتم های جستجوی دودویی بیان شده بود . این نوع الگوریتم جستجو در اکثر پروتکل ها و استانداردهایی که در آن نیاز به ذخیره سازی تعداد زیادی Object وجود دارد استفاده می شود که یکی از آنها دایرکتوری سرویس ها هستند .

معنی دایرکتوری سرویس یا Directory Service چیست ؟ اگر بخواهیم بصورت فارسی ترجمه کنیم به معنی سرویس پوشه ها یا دایرکتوری هاست ! یعنی مثل ساختار پرونده های اداره ها و سازمان های ما قرار است در این پوشه ها اشیاء نگهداری و جستجو شوند . اگر نگهداری این اشیاء دارای ساختار منظم و مشخصی نباشد پرونده افراد و مستندات داخل آنها گم می شود یا به سختی پیدا می شود . بنابراین این دایرکتوری سرویس است که به شما کمک می کند دسترسی سریعتر به اشیاء خودتان داشته باشید و البته هر پرونده یا شیء در مجموعه شما یک آدرس منحصر به فرد برای خودش داشته باشد که براحتی بتواند به آن دسترسی داشته باشد .

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

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

شما در شبکه ای که در آن کار می کنید با انواع و اقسام اشیاء سر و کار دارید ، اشیاء یا Object ها برای مثال در ساختار اکتیودایرکتوری مایکروسافتی شما به گروه ها (Groups( ، کاربرها (User) ، شماره تماس ها (Contacts) ، کامپیوترها (Computers) ، ساختارهای سازمانی یا Organizational Units و بسیاری دیگر از اشیاء تقسیم بندی می شوند . فرض کنید که این اشیاء همان پرونده های شما در سازمان هستند که باید در سریعترین زمان ممکن در دسترس باشند . دایرکتوری سرویس وظیفه ایجاد یک ساختار منظم سلسله مراتبی برای دسترسی ساده تر به این اشیاء را فراهم می کند. به زبان ساده Directory Service است که مثل یک ساختار درختی اشیاء را درون خودش جای می دهد .

اگر با ساختار DNS آشنایی دارید بد نیست بدانید که DNS هم به نوعی دایرکتوری سرویس است و تقریبا تا حد زیادی از همان مکانیزم جستجوی اشیائی که در سایر دایرکتوری سرویس ها استفاده می شود استفاده می کند با این تفاوت که به اشیاء در DNS رکورد گفته می شود. توجه کنید که اگر DNS ساختار دایرکتوری سرویسی نداشت و یک ساختار Flat و دیتابیس فاقد مکانیزم جستجوی شاخه ای نداشت ، شما برای باز کردن یک وب سایت ممکن بود ساعت ها منتظر بمانید .

توجه کنید که ضمن اینکه دایرکتوری سرویس ساختاری برای نگهداری اشیاء است در عین حال پایگاه داده آنها نیز محسوب می شود یعنی اشیاء درون ساختار شاخه شاخه Directory Service ذخیره می شوند . اما نکته مهم اینجاست که این ساختار از دید کاربر کاملا مخفی است ! یعنی کاربر وقتی درخواستی از منبعی برای دسترسی به اشیاء دارد هیچوقت درگیر پیچیدگی های دسترسی به این Object نمی شود .

Directory Service چیست

اصلا برای کاربر مهم نیست که توپولوژی شبکه شما یا پروتکل هایی که پس زمینه هستند چه هستند و به چه کاری می آیند ! برای مثال ممکن است شما برای لاگین به اکتیودایرکتوری که یک دایرکتوری سرویس است فقط نام کاربری m.nasiri را وارد کنید اما چیزی که در پس زمینه برای اکتیودایرکتوری برداشت می شود به شکل زیر است :

"CN=m.nasiri;OU=IT Department;OU=Support;DC=TOSINSO;DC=LOCAL”

ساختار نامگذاری که در بالا مشاهده می کنید چیزی است که در پس زمینه اکتیودایرکتوری یا همان دایرکتوری سرویس شما برای جستجو در نظر می گیرد و از دید شما مخفی است . به این ساختار نامگذاری که در دایرکتوری سرویس ها وجود دارد Distinguished Name یا DN گفته می شود که مسیر کامل دسترسی به یک Object  را تعریف می کند .

تفاوت استاندارد ، پروتکل و سرویس دایرکتوری در چیست ؟

ببینید یکی از مهمترین اشتباهاتی که در بحث دایرکتوری سرویس وجود دارد برداشت اشتباه از تاریخچه این سرویس است . دانشگاه MIT وظیفه طراحی برترین استانداردها در حوزه IT را بر عهده دارد . این دانشگاه در جاییکه همین درس های تئوری بی ارزش دانشگاهی اکادمیک در آن هم تدریس می شود آنها را به کار برده و الگوریتم های جدید طراحی می کند و آنها را تبدیل به استاندارد می کند . برای دایرکتوری سرویس ها نیز استانداردی به نام X.500 توسط این دانشگاه طراحی شد که به صورت بسیار جامع و کامل و البته کمی پیچیده مکانیزم طراحی دایرکتوری سرویس ها را در آن طراحی کرد .

بعد از طراحی استاندارد ، توسط برنامه نویس ها یا سایر متخصصان این حوزه ؛ استاندارد تبدیل به پروتکل می شود . استاندارد X.500 تبدیل به یک پروتکل دایرکتوری سرویس به نام LDAP شد . LDAP مخفف کلمه های Lightweight Directory Access Protocol یا پروتکل دسترسی به دایرکتوری سرویس است. دقت کنید که پروتکل های دیگری هم وجود دارند اما نکته اصلی اینجاست که همه این پروتکل ها برای دسترسی به یک دیتابیس به نام دایرکتوری سرویس طراحی شده اند و بنابراین هسته اصلی آنها یکپارچه است .

بعد از طراحی پروتکل ها ، این شرکت ها بودند که هر کدام سرویسی مبتی بر این پروتکل نوشتند و آن را به دنیا ارائه دادند ، برای مثال مایکروسافت سرویس Active Directory ، ناول سرویس Novell Directory Services و البته لینوکس سرویس OpenLDAP را برای دسترسی به این پایگاه داده ارائه دادند . به همین دلیل است که شما می توانید با زبانی تقریبا مشترک به شکل همان ساختار DN این سرویس ها را با هم ارتباط بدهید .


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات