امنیت در هدوپ – بخش اول

در این مقاله قصد داریم به بررسی امنیت در هدوپ بپردازیم و روش ها و راه کارهای آنرا بررسی کنیم. در ابتدا می بایست به نحوه نگاه هدوپ به مسئله امنیت بپردازیم.

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

در اینجا یک مشکل داریم. اگر کاربر موردنظر خودش را به جای کاربر دیگری معرفی کند چه اتفاقی می افتد؟ مسلما هدوپ به او اجازه فعالیت می دهد چرا که خودش را کاربر x معرفی کرده است. به عنوان مثال فرض کنید در یک میهمانی اگر کسی به شما بگوید "من علی هستم" شما بدون هیچ سوالی باور می کنید که او علی است چرا که خودش گفته است. مشکل اینجاست که نه تنها هدوپ باور میکند او علی است بلکه به تمامی افراد دیگر هم می گوید "او علی است".

تا اینجا مشکل را درک کردیم. حالا نوبت به معرفی راهکار می رسد.

مکانیزم امنیتی Kerberos

مثال بالا را در نظر بگیرید. اگر از شخصی که خودش را علی معرفی کرده بخواهیم کارت شناسایی ارائه دهد تا حد زیادی از این مشکل جلوگیری می کنیم(البته بحث امنیت هیچ وقت راه حل ۱۰۰٪ درصدی ندارد. در این مثال امکان دارد کارت شناسایی جعل شود). در این موقعیت نقش کارت شناسایی را مکانیزم Kerberos بازی می کند.

Kerberos یک سرویس اعتبارسنجی امن است. نام Kerberos از شخصیتی افسانه ای به نام Cerberus در یونان باستان گرفته شده است. این مکانیزم توسط دانشگاه MIT ارائه شد تا لایه امنیتی سیستم های توزیع شده در شبکه را ایجاد کند. هر هویت(کاربر یا سرویس) در Kerberos به عنوان یک Principal شناخته می شود. هویت های کاربری را UPN یا User Principal Names و هویت های مبتنی بر سرویس را SPN یا Service Principal Names می نامند. UPN ها در واقع همان کاربر عادی در دنیای واقعی است ولی SPN ها سرویس هایی را معرفی می کند که کاربر میخواهد به آن دسترسی یابد. 

در Kerberos می توان محدوده قلمرو مشخص کرد که به آن realm گفته می شود. به طور مثال اگر یک شرکت بخواهد از سیستم اعتبارسنجی Kerberos استفاده کند می تواند برای هر بخش شرکت یک قلمرو ایجاد کند مثلا قلمرو تیم بازاریابی و تیم برنامه نویسی. ارتباط بین این قلمرو ها می تواند یک طرفه و یا دوطرفه باشد به اینصورت که تیم بازاریابی دسترسی کاربری به قلمرو برنامه نویسان ندارد ولی قلمرو برنامه نویسان دسترسی به قلمرو تیم بازاریابی دارد. این یک ارتباط یک طرفه است. تمامی این اطلاعات در KDC یا Key Distribution Center ذخیره می شود. هر KDC از سه بخش زیر تشکیل می شود:

  • Kerberos Database
  • Authentication Service(AS)
  • Ticket-granting Service(TGS)

در واقع پایگاه داده Kerberos اطلاعات مربوط به هویت ها و قلمروها را نگه داری می کند.

به طور مثال هویت کاربری ali در قلمرو EXAMPLE.COM به صورت زیر معرفی می شود(دقت کنید که هویت ها می بایست با حروف کوچک و قلمروها با حروف بزرگ نوشته شوند):

ali@EXAMPLE.COM

هویت مبتنی بر سرویس یا SPN نیز به صورت زیر تعریف می شود:

hdfs/node1.example.com@EXAMPLE.COM

در اعلان بالا hdfs نام سرویسی بر روی میزبان node1.example.om می باشد که در قلمرو EXAMPLE.COM قرار دارد.

اجزای دیگر KDC یعنی AS و TGS وظیفه اعطای مجوز را در لایه امنیتی Kerberos بر عهده دارند. 

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

Kerberos در واقع یکی از مهم ترین روش های ایجاد لایه امنیتی در هدوپ است. در بخش های بعدی به روش های دیگر ایجاد کلاستر امن در هدوپ و پیاده سازی عملی یکی از آنها می پردازیم.

نویسنده: مبین رنجبر

از سرورهای ما برای اجرای پروژه های داده های کلان خود بدون اینکه درگیر پیچیدگی نصب شوید استفاده کنید. برای سفارش اینجا را کلیک کنید.
ما حتی می توانیم کلاستر و سرورهای هدوپ را برای شما ایجاد کنیم. برای درخواست راه اندازی اینجا را کلیک کنید.
اگر نیاز به مشاوره و یا کلاس آموزشی داشتید به اینجا مراجعه کنید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *