آشنایی و معرفی Lightweight Directory Access Protocol (LDAP):
فهرست محتوا
LDAP یک نسخه سبک (Lightweight) از پروتکل Directory Access Protocol یا DAP هست که بخشی از استاندارد X.500 که استانداردی برای Directory Service ها در شبکه است می باشد. LDAP به این خاطر سبک هست که در نسخه اولیه آن قابلیت های امنیتی وجود نداشت. این پروتکل توسط دانشگاه میشیگان آمریکا ابداع شد و محصولات Netscape و دایرکتوری سرویس Novel NetWare نیز از LDAP پشتیبانی می کند.
محبوب ترین Directory Service دنیا یعنی Active Directory که محصول شرکت مایکروسافت می باشد نیز از این پروتکل در انواع محصولات و زیرساختش استفاده می کند. شرکت سیسکو و سایر محصولات شرکت های دیگر نیز از پروتکل LDAP در محصولاتشان استفاده می کند بدین معنی که بسیاری از محصولات این شرکت ها به اصطلاح LDAP-Aware هستند.
پروتکلی که صحبت آن را می کنیم اساس کار Directory Service هایی مثل Active Directory است و می توان گفت ستون فقرات شبکه دامین اکتیو دایرکتوری به شمار می رود. LDAP پروتکلی است که به هر کسی این اجازه را میدهد که سازمان ها ، اشخاص و سایر منابع از قبیل فایل ، دستگاه های موجود در شبکه را چه در محیط اینترنت و چه در شبکه داخلی پیدا کند.
LDAP را در سادهترین حالت میتوان یک دفترچه تلفن خیلی بزرگ و کامل دانست که در آن نام و مشخصات همه مشترکین موجود و قابل جستجو است. به عنوان مثال پروتکل DNS به عنوان یک دفترچه تلفن حاوی اطلاعات آدرس IP و Domain Name است.
کاربران زمانی که بخواهند وارد وب سایتی شوند درصورتی که آدرس آن را در مرورگر خود وارد میکنند در پشت این آدرس، آدرس IP وب سرور آن سایت قرار گرفته است و لود می شود تا آن ها را حفظ نکنیم. به زبان ساده LDAP پروتکلی است که به ما در پیدا کردن اطلاعات و پرونده های مربوطه و مورد نیازمان چه درون یک سازمان چه درون اینترنت کمک میکند و این فرایند را راحت تر میسازد.
استاندارد LDAP توسط شرکتها و گروههای زیادی مورد پیادهسازی شده است. یکی از این شرکتها مایکروسافت است که نام پیادهسازی خود را Active Directory قرار داده است.
یکی از اصلیترین کاربردهای Active Directory پیادهسازی SSO و یکپارچه کردن امکانات مدیریتی در شبکههای مبتنی بر ویندوز است. Active Directory در شبکههای بزرگ استفاده میشود اما یک نسخه خیلی سبکتر هم به نام AD LDS وجود دارد که حتی روی ویندوز ۷ هم قابل نصب است.
ساختار LDAP directory:
در یک شبکه، یک Directory به شما می گوید که چه چیزی در کجا قرار گرفته است. در شبکه های مبتنی بر TCP/IP که شامل شبکه اینترنت هم می شود، سرویس DNS یا Domain Name System سرویسی است که می تواند Domain name را به یک آدرس خاص و منحصر بفرد در شبکه که آنرا به نام آدرس IP می شناسیم مرتبط کند. در هر حال شما ممکن است نام دامین را ندانید. از این رو LDAP به شما این امکان را می دهد که اشخاص و یا سایر Object های شبکه را بدون آنکه بدانید در کجای شبکه قرار گرفته اند مکان یابی کنید.
ساختار LDAP directory بصورت سلسله مراتبی می باشد مثل یک درخت یا Tree که این ساختار شامل موارد زیر هست :
- Root Directory: ریشه یا Source درخت دایرکتوری است.
- Countries: شامل کشور ها می شود که و هر یک از کشور ها نیز به شاخه های مختلفی تقسیم بندی می شود.
- Organizations یا سازمان ها: که خود زیرشاخه های خود را میتواند داشته باشد.
- Organizational Units یا OU ها ( واحد های سازمانی ): شامل بخش ها ، دپارتمان ها و … می شود. که هر کدام نیز میتواند زیر شاخه داشته باشد.
- Individuals یا Object ها : شامل کاربران ، گروه ها ، فایل ها ، منابع اشتراکی مثل Printer ها و … می شود.
LDAP directory بین سرور های زیادی می تواند توزیع شود. هر سرور یک نسخه Replicate شده از کل دایرکتوری را در خود دارد که در وهله های زمانی مشخص بین سرور ها Synchronize می شود. به LDAP Server در اصطلاح فنی Directory System Agent یا DSA نیز گفته می شود. LDAP Server زمانی که یک درخواست از یک کاربر را دریافت می کند مسئولیت پاسخ به درخواست را بر عهده دارد و در صورت نیز می تواند به سایر DSA Server ها این درخواست را ارسال کند.
Heavyweight یا Lightweight :
همانطور که پیشتر نیز گفتیم ریشه و ماهیت اصلی LDAP به دایرکتوری سرویس X.500 گره خورده است LDAP به عنوان پروتکلی سبک و تحت سیستم های Desktop و نیز دروازه ای برای ورود درخواست های مبتنی بر سرویس دایرکتوری به سرور های X.500 طراحی شده بود. X.500 در واقع مجموعه ای از استاندارد ها است.
X.500 عنوان Heavyweight را کسب کرد زیرا برای کار با این پروتکل کلاینت و سرور باید بوسیله OSI Protocol Stack با همدیگر ارتباط برقرار می کردند . این هفت لایه OSI یک مدل آکادمیکی از طراحی شبکه است هست. LDAP به این خاطر سبک هست که پکت های آن Overhead کمتری روی لایه های TCP//IP و پروتکل هایش دارد. از آنجا که X.500 پروتکل لایه Application است ( در مدل OSI ) در هر لایه از این مدل پکت هایش باید بصورت مرتب Encapsulate و Decapsulate شود تا در نهایت به مقصد برسد.
پروتکل LDAP بر خلاف X.500 بسیاری از کار هایی که این پروتکل انجام می داد را انجام نمی داد در حالیکه این کار ها در عمل به ندرت مورد استفاده قرار می گرفت. پروتکل LDAP نسخه 3 شامل 9 عملیات اصلی است که مدلی ساده را برای برنامه نویسان و مدیران شبکه فراهم می کند.
ساده بودن پروتکل LDAP به برنامه نویس ها بدین صورت کمک می کند که به جای اینکه درگیر پیچیدگی های این پروتکل در نوشتن برنامه هایشان شوند بتوانند روی عملکرد دقیق برنامه خود و سایر جنبه های برنامه شان متمرکز شوند.
شما یک دفترچه تلفن را در نظر بگیرید. شما وقتی کاری را می خواهید انجام دهید که نیاز به Write/Update ( نوشتن) یا Read/Query (خواندن) زیاد دارد شما ممکن است از پروتکل LDAP استفاده کنید. LDAP ذاتاً برای این طراحی شده است که کارایی یا عملکرد را در خواندن (Read) مجموعه ای بزرگ از Dataset ها را افزایش دهد و به آن سرعت ببخشد.
طبیعتاً انجام کار هایی مثل Add/Delete/Update کندتر از انجام Read/Query از یک دیتابیس صورت می گیرد زیرا فرض بر این است که در اغلب موارد شما دیتابیس (LDAP Database) را نمی خواهید Update کنید.
فرض کنید که وب سایتی دارید که میلیون ها نفر در آن عضو هستند و هزاران Page در هر ثانیه برای بازدید به وب سرورتان درخواست می شود. بدون LDAP ، هر زمان که کاربر روی یک Page کلیک کند، حتی برای بازدید یک Static Page شما نیاز خواهید داشت تا با دیتابیس مدام ارتباط برقرار کنید و User ID و Digital signature مربوط به Login session کاربر را Validate کنید. طبیعتا این کار باعث خواهد شد تا هنگام انجام User Validation از طریق دیتابیس Bottleneck داشته باشید.
بوسیله پروتکل LDAP شما می توانید از انجام User Validation صرف نظر کنید و Performance بسیار خوبی را در زمان پاسخگویی به کاربر تجربه کنید. البته LDAP تنها برای انجام فرآیند User Validation کاربرد ندارد بلکه انجام هر کاری که مشخصات زیر را داشته باشد مورد استفاده خوبی برای LDAP است :
- شما یک بخش از اطلاعات را نیاز دارید تا مکان یابی کنید و میتوانید آنرا سریع پیدا کنید.
- شما نیازی به Update یا بروز رسانی کردن ، Add یا اضافه کردن ، Delete یا حذف کردن اطلاعات بصورت مکرر ندارید.
- سایز هر Entry از اطلاعات کوچک است.
- شما لازم نیست که همه این اطلاعات کوچک را در یک مکان متمرکز داشته باشید.
کاربرد LDAP در پایگاه داده:
قالب اطلاعاتی که در پایگاه داده پروتکل LDAP ذخیره می شود بر اساس Entry است. Entry مجموعه ای از Attribute ها است که دارای Globally-Unique Distinguished Name یا به اختصار DN می باشند. هر یک از Attribute های Entry ها دارای نوع یا Type هستند و شامل یک یا بیش از یک مقدار یا Value می باشند.
هدف اصلی LDAP متمرکز سازی تمامی اطلاعات مربوط به Object های شبکه است. این Object ها همانطور که پیشتر نیز گفتیم شامل کاربران ، گروه ها و … می باشد. برای مثال میتوانید پسورد های کاربران ، اطلاعات تماس آنها ، Permission های آنها و … را در یک جا بصورت متمرکز نگهداری کنید.
با استفاده از LDAP همچنین می توانید مجوز های دسترسی خاصی را به گروه های خاصی بدهید، برای مثال یک گروه خاص فقط بتواند به Shared Folder ها دسترسی داشته باشد. یا اینکه برای مثال می توانید تمامی اطلاعات تماس کاربران در سازمانتان را که در Outlook است بدست بیاورید. و بسیاری از مزایای دیگر LDAP که در حوصله این مقاله نمیگنجد. امیدوارم مورد توجه شما قرار گرفته باشد.
برای چه از LDAP استفاده کنیم؟!
بیشترین استفاده هایی که از پروتکل LDAP میشود احراز هویت میباشد. زیرا اکثر تجهیزات همچون فایروال های سخت افزاری، روترها و سرورها به راحتی از LDAP پشتیبانی میکنند و میتوانیم با قرار دادن UserName و Password فرایند احراز هویت خودمان را با استفاده از پروتکل LDAP به راحتی فراهم سازیم.
از جمله تجهیزات و نرم افزارهایی که از این پروتکل برای احراز هویت خود استفاده و یا پشتیبانی میکنند عبارتند از Docker, Jenkins, Kubernetes, Open VPN و پروتکل اشتراک گذاری فایل لینوکسی (Samba) علاوه بر این مدیران سیستم و متخصصین از LDAP برای مدیریت و دسترسی بهتر به پایگاه های داده نیز استفاده میکنند.
دو روش برای پیاده سازی احراز هویت در LDAPv3 وجود دارد:
ـ احراز هویت Simple:
اینگونه احراز هویت در LDAP به سه شکل ارائه میشود که به شرح زیر هستند:
- Anonymous Authentication: در این روش به شکل ناشناس کاربران در LDAP احراز هویت میکنند و وضعیت آنها را ارائه میدهند.
- Unauthenticated authentication: از این روش فقط برای اهداف خاص استفاده میشود و کاربر اجازه دسترسی به منابع و فایل ها را ندارد.
- UserName/Password Authentication: این روش همانطور که از اسم آن هم پیداست از احراز هویت بر اساس UserName و Password استفاده میکنند اما استفاده از این روش در صورتی که از پروتکل ایمنی برای رمزنگاری استفاده نشود کار معقولی نمیباشد.
ـ احراز هویت SASL:
روش احراز هویت برپایه SASL در واقع LDAP را به یک مکانیزم احراز هویت دیگر مانند Kerberos متصل میسازد. سرور LDAP ما از طریق پروتکل LDAP پیغام های LDAP را به سمت یک سرویس دیگر به منظور انجام احراز هویت انتقال میدهد.
سرویس دایرکتوری:
دایرکتوری یا فهرست راهنما، یک سرویس ویژه در شبکههای کامپیوتری یا اینترنت است که برای بهبود کار با بانکهای اطلاعاتی برای خواندن، جستوجو و مرور اطلاعات به کار میرود. با استفاده از سرویس دایرکتوری میتوان محتویات بانک اطلاعاتی را دستهبندی نمود، برای آنها ویژگیها و ایندکسهایی تعریف کرد و بر این اساس فایلها و اطلاعات شبکه را برای دسترسی سریع و آسان طبقهبندی نمود.
برای مثال، در شبکه ممکن است یک بانک اطلاعاتی از فایلها وجود داشته باشد. با استفاده از سرویس دایرکتوری میتوان این فایلها را طبقهبندی نمود، ویژگیهای مختلفی به آنها افزود و عملیات بروزرسانی و آپلود آنها را انجام داد؛ به طوری که دسترسی به آنها از روی شبکه برای کاربران ساده و راحت باشد.
ویژگی های اساسی یک سرویس دایرکتوری:
- قابلیت بهینهسازی خواندن و دسترسی به فایلها
- مدلی توزیع شده برای مدیریت و ذخیره اطلاعات
- افزایش و توسعه ویژگیها و انواع اطلاعات ذخیره شده
- ایجاد یک ابزار جستوجوی پیشرفته روی شبکه
روشهای مختلفی برای راهاندازی یک سرویس دایرکتوری وجود دارد. علاوه بر این، متدهای مختلفی برای مدیریت اطلاعات و ذخیرهسازی آنها براساس آپلودکردن آنها روی بانک اطلاعاتی، نحوه دسترسی، چگونگی مرجعدهی آنها برای یک سرویس دایرکتوری قابل استفاده است. برخی از سرویسهای دایرکتوری محلی (Local) هستند و فقط روی یک شبکه محلی یا یک ماشین سرویسدهنده اجرا میشوند.
برخی دیگر از دایرکتوریها عمومی (Global) هستند و روی چندین شبکه محلی یا سرویسدهنده توزیع میشوند، و امکان مدیریت و دسترسی به اطلاعات روی شبکه را از این طریق فراهم میکنند. Domain Name System) DNS) یک مثال از سرویس دایرکتوری عمومی است.
اکتیو دایرکتوری چیست؟
اکتیو دایرکتوری مجموعهای از چند سرویس است که به صورت متمرکز ارایه میشود و به آسانی میتوان آنها را ساماندهی و مدیریت کرد. مایکروسافت سرویس Active Directory را در اختیار ادمینها قرار داده تا مدیریت مجوزهای دسترسی به منابع شبکه را به راحتی و از طریق لاگین به آن انجام دهند. اکتیودایرکتوری همراه با رشد سازمانی شما میتواند رشد کند.
اکتیودایرکتوری دیتابیسی برای ذخیره اطلاعات دارد و همانند هر دیتابیس دیگری دارای برنامهها و رولهای ویندوزی تا properties و permission و موارد دیگر را بخواند.
اکتیو دایرکتوری (Active Directory)، سرویسی است مشتمل بر چند سرویس دیگر یعنی چندین سرویس تحت لوای سرویس اکتیو دایرکتوری کار میکنند: مثل یوزرهای تعریف شده در شبکه، دسترسی هایی که به این یوزرها داده میشود، فایل ها و پرینترهای به اشتراک گذاشته شده در شبکه. اکتیو دایرکتوری این سرویس ها را به صورت متمرکز ارایه میدهد که نتیجه آن ساماندهی و مدیریت آسان و دقیق این سرویس ها است.
اکتیو دایرکتوری، سرویس دایرکتوری مایکروسافت است که روی ویندوز سرور اجرا میشود و به ادمین ها امکان مدیریت مجوزها و دسترسی به منابع شبکه را میدهد. وظیفه اکتیو دایرکتوری، مدیریت و سازماندهی تعداد زیاد کاربران در قالب زیرگروه ها و گروه های منطقی است. همچنین کنترل دسترسی به هر سطح را هم به عهده دارد.
ادمین ها با یک لاگین ساده میتوانند از طریق شبکه، دیتا دایرکتوری را مدیریت و سازماندهی کنند، کاربران مجاز در شبکه از هر جایی به منابع شبکه دسترسی خواهند داشت. حتی مدیریت شبکه های پیچیده هم به راحتی با AD انجام میشود و امکان توسعه اکتیو دایرکتوری به همراه رشد سازمانی ممکن است.
دامین ها شامل کنترلرهایی است که یکی از آنها ویندوز سرور را اجرا میکند. هرگاه ادمین شبکه در این کنترلرها تغییری ایجاد کند توسط اکتیودایرکتوری همه کنترلرها آپدیت میشوند. ادمین شبکه میتواند مدیریت تک تک منابع شبکه را با اکتیو دایرکتوری انجام دهد و حتی وارد کامپیوتر کاربر شود.
ساختار Active Directory:
اکتیو دایرکتوری با ارائه یک ساختار سلسله مراتبى، سازماندهى آسان Domain ها و منابع را فراهم مىکند. بدین ترتیب کاربران به راحتی میتوانند منابع شبکه نظیر فایل ها و چاپگرها را پیدا کنند.
سرویس های دایرکتوری مثل ADDS یا Active Directory Domain Services شیوه ذخیره اطلاعات دایرکتوری و چگونگی دسترسی ادمین و کاربران شبکه به این اطلاعات را فراهم میکند. مثلا ADDS اطلاعات اکانت کاربران مانند نام و پسورد و شماره تلفن و غیره را ذخیره میکند و به دیگر کاربران مجاز در همان شبکه، اجازه دسترسی به این اطلاعات را میدهد. به این اطلاعات ذخیره شده، دایرکتوری گفته میشود.
دیتا به صورت آبجکت ذخیره میشود. آبجکت همان کاربر، گروه، برنامه و دستگاه (مثل پرینتر) است. آبجکت دو نوع است: یا منابع است مثل پرینتر و کامپیوتر یا قوانین امنیتی است مثل کاربران و گروه ها.
ساختار active directory شامل سه سطح است که هر یک از این سطوح میتوانند ارتباطات و دسترسی های خاص داشته باشند:
- دامین ها: آبجکت هایی مانند کاربران و دستگاه ها که همگی از یک دیتابیس استفاده میکنند، در یک دامین گروه بندی میشوند. دامین گروهی از آبجکت هاست مانند کاربر و دستگاه که در یک دیتابیس اکتیو دایرکتوری قرار دارند. دامین ها دارای ساختار DNS – Domain Name System هستند.
- درخت ها: یک یا چند دامین میتوانند در یک گروه قرار گیرند که درخت – Tree نامیده میشود. در درخت ارتباط امن بین دو دامین وجود دارد. ساختار درخت سلسله مراتبی است یعنی اگر دامین ۱ با دامین ۲ دارای ارتباط امن باشد، و دامین ۲ با دامین ۳ ارتباط امن داشته باشد، دامین ۱ هم با دامین ۳ ارتباط امن دارد.
- جنگل ها: چندین درخت در مجموعه ای به نام جنگل گروه بندی میشوند. جنگل شامل پیکربندی دامین، اطلاعات برنامه ها، طرح دایرکتوری و لیست تمام آبجکت ها است. طرح دایرکتوری یعنی کلاس و ویژگی هایی که آبجکت در جنگل دارد.
- واحدهای OU یا Organizational Units، کاربران و گروه ها و دستگاه ها را سازماندهی میکنند: مثلا هر آبجکت یا کاربر در دامین باید یکتا باشد و امکان تعریف مجدد یوزرنیمی که موجود است وجود ندارد. برای مدیریت اکتیودایرکتوری میتوان از نرم افزارهای مدیریت اکتیو دایرکتوری استفاده کرد. ولی توجه کنید که با کنترل دسترسی و احراز هویت هنگام لاگین شدن، امنیت اکتیو دایرکتوری تامین میشود.
پروتکل LDAP و تفاوت آن با اکتیو دایرکتوری ؟
زمانیکه شبکه سازمانی شما بزرگ می شود و تبدیل به یک شبکه Enterprise می شود طبیعتاً مدیریت و احراز هویت متمرکز یکی از اساسی ترین نیازمندی های این شبکه خواهد بود. در اینجاست که وجود یک سیستم احراز هویت کاربری کاربردی می تواند پیچیدگی ها و دشواری های سیستم های احراز هویت کاربری توزیع شده را کاهش داده و تقریبا همه چیز را یکپارچه کند.
برای ایجاد کردن این سیستم یکپارچه متمرکز ما معمولا در شبکه های مایکروسافتی از سرویسی به نام Active Directory استفاده می کنیم که توسط شرکت مایکروسافت معرفی و پیاده سازی شد .
ما در سیستم عامل لینوکس نیز محصولی مشابه داریم که همین کار را انجام می دهد اما بیشترین استفاده از Directory Service در دنیا از همین Active Directory مایکروسافت است. برخی اوقات واژه ای ممکن است با Active Directory شنیده باشید که LDAP نام دارد.
توجه کنید که پروتکل LDAP یک سرویس نیست بلکه یک پروتکل لایه هفت است که می توان از آن در تمامی سرویس های دایرکتوری یا Directory Service های ویندوزی و لینوکسی استفاده کرد. در واقع اکتیودایرکتوری نیز خود بر اساس و پایه پروتکل LDAP طراحی و پیاده سازی شده است.
تفاوت اصلی Active Directory و LDAP در چیست ؟
علاوه بر اطلاعات مربوط به لیست تماس یا Contact List ، پروتکل LDAP می تواند برای جستجو کردن اطلاعاتی از قبیل Certificate های رمزنگاری ، جستجوی پرینترها ، گروه ها ، کاربرها ، پوشه های به اشتراک گذاشته شده و بسیاری دیگر از موارد نیز در شبکه مورد استفاده قرار بگیرد. مهمترین کاربرد پروتکل LDAP پیاده سازی ساختار SSO یا Single Sign On در شبکه است.
شما می توانید سرویس های نرم افزاری متنوعی داشته باشید و همه این سرویس ها دارای نام کاربری واحدی باشند که از یکجا برای احراز هویت استفاده می کند و فقط و فقط یکبار نیاز به تعریف کردن کاربران دارید. از LDAP سرورها در اکثر سازمان ها و ارگان ها و شبکه های بزرگ استفاده می شود.
LDAP سرورهای عمومی به دلیل مشکل بروز اسپم امروزه کمتر مورد استفاده قرار می گیرند. شما به عنوان یک مدیر LDAP سرور می توانید برای پایگاه داده های آن سطوح دسترسی تعریف کنید. Active Directory Lightweight Directory Service یا ADLDS یک نوع LDAP سرور مایکروسافتی است که برای شبکه های Workgroup و طراحی های DMZ استفاده می شود.
برخی از تفاوت های LDAP و Active Directory:
- اکتیودایرکتوری یک Directory Service Provider است ولی LDAP یک Application Protocol است که توسط Directory Service Provider ها استفاده می شود.
- اکتیودایرکتوری و Open-LDAP دو محصولی هستند که از LDAP برای سرویس دهی استفاده می کنند.
- اکتیودایرکتوری احراز هویت توسط پروتکل Kerberos را پشتیبانی می کند.
- اکتیودایرکتوری مالک اختصاصی به نام مایکروسافت دارد. LDAP یک پروتکل است و توسط دانشگاه MIT طراحی شده است.
- اکتیودایرکتوری فقط روی سیستم عامل های سرور مایکروسافت قابل اجرا است. پروتکل LDAP فارق از هر نوع سیستم عامل قابل استفاده است ITPRO باشید.
بیشتر بخوانید: بهترین ابزارهای مدیریت اکتیو دایرکتوری