بررسی عملی امنیت زیرساخت های کلان داده - مقدمه و بخش اول

به روزرسانی: بخش دوم این مستند منتشر شد. پس از مطالعه این بخش، به سراغ قسمت بعدی در این لینک بروید.

در انتهای سال 1398 درگیر پروژه ای در ایران بودم که نیاز به امن‌سازی زیرساخت های کلان داده مبتنی بر هدوپ و اسپارک داشتند. به همین جهت در کنار اقدامات عملی انجام گرفته، مستندی تقریبا 100 صفحه‌ای از نیازمندی ها و شرح مراحل تولید کردم و در اختیار تیم مربوطه قرار دادم. پس از گذشت سال‌ها درخواست‌ها و سوالات زیادی در این باره از من شد که منابع موردنیاز را در اختیارشان قرار دهم. خب بخشی از این منابع برای کاربر فارسی زبان نامفهوم بود و بخشی دیگر نیز با توجه به تخصصی بودن ابزارها، کمبود منابع حتی انگلیسی حس می‌شد.

در ابتدا فایل PDF این کتابچه را در لینکدین خودم برای فروش قراردادم ولی پس از مدتی تصمیم گرفتم این کتابچه را در بخش های مختلف به صورت رایگان منتشر کنم تا همه استفاده کنند و باقیات الصالحات بشود. :)

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

به دلیل طولانی بودن برخی از تنظیمات، فایل های موردنیاز در مخزن گیت هاب در این لینک قابل دسترس می باشند.

نکته مهم اول: این مستند خالی از اشکال و اشتباه نیست.

نکته مهم دوم: ابزارهای مورد بحث قرارگرفته در این نوشتارها به این دلیل انتخاب شده اند که در اکثر معماری های معمول و استاندارد زیرساخت های کلان داده در ایران و جهان وجود دارند.

این بخش از این نوشتار بیشتر مربوط به مقدمات و توضیحات اولیه می باشد و بخش های دیگر را به مرور منتشر خواهم کرد.

به دلیل مرتبط بودن این پروژه با صنعت مالی و بانکی، تمرکز مسائل برروی این صنعت می باشد.

عناوین کلی و مباحثی که بحث خواهم کرد به قرار زیر خواهد بود:

1. مقدمه

2. بررسی ماهیت امنیت در صنعت بانکداری

3. امنیت زیرساخت های کلان داده

4. معرفی فریم ورک مدیریت و پردازش کلان داده هدوپ (Hadoop)

5. امنیت در هدوپ

6. نصب و راه اندازی Kerberos

7. شروع کار با Kerberos

8. پیکربندی هدوپ و فعال سازی Kerberos در آن

9. پیکربندی هدوپ با قابلیت دسترس‌پذیری یا High Availability

10. معرفی ابزار Apache Ranger

11. نصب و پیکربندی Ranger Admin

12. نصب و پیکربندی Ranger UserSync

13. نصب و راه اندازی افزونه هدوپ(سرویس HDFS و YARN) در Ranger Admin

14. اتصال سرویس های هدوپ به Ranger Admin

15. تعریف سیاست های دسترسی در Ranger Admin

16. نصب و راه اندازی افزونه Spark SQL

17. نصب و راه اندازی Livy و اجرای مثال مرتبط

  1. مقدمه

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

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

در این سند قصد داریم به بررسی و ارائه راهکارهای عملی ایجاد امنیت در زیرساخت کلان داده بپردازیم.

  1. بررسی ماهیت امنیت در صنعت بانکداری

امن بودن یا امنیت داشتن یک گزاره نسبی است. به این معنی که نمی توان همواره امنیت کامل و صددرصدی را ایجاد نمود. اما می توان بالاترین سطح را برای آن برشمرد. مدیریت امنیت تمام فرایندها را از پایین‌ترین سطح که فناوری است تا بالاترین سطح که تدوین راهبردهای کلان امنیتی است دربر می‌گیرد. اصولا دست‌یابی به امنیت بدون برنامه‌ریزی و داشتن راهبردهای مشخص امکان‌پذیر نیست، این در حالی است که معمولا وقتی صحبت از امنیت می‌شود در بیشتر موارد فقط سطح پایین (فناوری) مد نظر قرار می‌گیرد. از مهمترین راهبردهایی که انتظار می‌رود مدیریت امنیت ایجاد کند مدیریت مخاطرات(ریسک) است. در همین رابطه یک اشتباه رایجی وجود دارد. معمولا سازمان‌ها تمایل دارند بگویند ما امن هستیم. این در حالی است که وجود امنیت در دنیا مفهوم خاصی ندارد، آنچه می‌توان گفت این است که سازمان مخاطرات و امنیت خود را مدیریت می‌کند. طبق یک پژوهش که در سال 2010 انجام شده است، در صدر عواملی که بانک‌ها مشتاق به سرمایه‌گذاری در امر امنیت هستند، اعتماد مشتریان به چشم می‌خورد. بحث اعتماد شاید در هیچ صنعت دیگری اینقدر اهمیت نداشته باشد. ممکن است هک یک کارت ضرر مالی چندانی به بار نیاورد اما جنبه اعتماد عمومی آن خیلی ارزش دارد. سایر عوامل با اهمیت در این زمینه به ترتیب مباحث مالی، الزامات قانونی و تقاضای مشتریان است. در دنیای مدیریت سنتی داده ها مفهومی به نام Three As وجود دارد که در شکل 1 نمایش داده شده است.

شکل 1
شکل 1

در شکل 1 سه مفهوم اصلی امنیت معرفی شده است که در زیر آنها را به اختصار شرح می دهیم:

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

2. مفهوم Authorization یا اعطای مجوز: فرآیندی است که مشخص می کند کاربر 'X' اجازه دارد به کدام داده، کدام نوع داده و کدام سرویس دسترسی یابد.

توجه داشته باشید که دو مفهوم شرح داده شده در بالا یکسان نیستند و وجه افتراق مهمی دارند. احراز هویت در واقع اثبات هویت واقعی کاربر است. به این معنی که آیا کاربری که درخواست دسترسی خاصی را دارد، خود واقعی است یا جعل هویت کرده است. اما در اعطای مجوز بررسی می شود آیا کاربری که هویت خود را احراز کرده است به داده، نرم افزار یا سرویس موردنظر اجازه دسترسی دارد یا خیر.

3. مفهوم Auditing یا بازرسی: فرآیندی است که به پایش و نظارت کاربرانی می پردازد که به آنها اجازه دسترسی داده شده است. در واقع سوالی که در این فرآیند مطرح می شود این است که چه داده هایی توسط کدام کاربر دسترسی تغییر و ویرایش یافته است.

  1. امنیت زیرساخت های کلان داده

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

بنابراین بحث امنیت در زیرساخت کلان داده را مترادف امنیت در فریم ورک مدیریت و پردازش کلان داده هدوپ قرار می دهیم. به این دلیل که فریم ورک هدوپ، در واقع سیستم عامل زیرساخت کلان داده ما می باشد که به پیاده سازی و اجرای توزیع شده امکان مدیریت فایل ها و زمان بندی برنامه ها می پردازد. فریم ورک هدوپ را به صورت اختصار شرح خواهیم داد.

  1. معرفی فریم ورک مدیریت و پردازش کلان داده هدوپ (Hadoop)

به طور خلاصه ، هدوپ یک فریم ورک یا مجموعه ای از نرم افزارها و کتابخانه هایی است که ساز و کار پردازش حجم عظیمی از داده های توزیع شده را فراهم میکند. در واقع هدوپ را می توان به یک سیستم عامل تشبیه کرد که طراحی شده تا بتواند حجم زیادی از داده ها را بر روی ماشین های مختلف پردازش و مدیریت کند. هدوپ از دو جزء اصلی یعنی سیستم فایل توزیع شده هدوپ یا HDFS و زمان بند توزیع شده منابع یا YARN تشکیل می شود. سیستم فایل توزیع شده هدوپ نیازمند کامپیوترهای گران قیمت نیست و می توان با استفاده از کامپیوترهای ارزان و معمول مورد استفاده قرار گیرد. این سیستم فایل از کارایی بالایی برخوردار است. برای بالابردن کارایی دسترسی این سیستم فایل، فایل ها را در نزدیک ترین شبکه به سرویس گیرنده در شبکه ای مشابه تکثیر می کند. اگرچه، اشکال کل شبکه باعث از بین رفتن تمامی فایل هایی می شود که در این شبکه ذخیره شده اند.

این سیستم فایل توزیع شده تحت هدوپ کار می کند و یک چارچوبی برای تحلیل و تغییرشکل مجموعه داده های بسیار بزرگ با استفاده از Map/Reduce می باشد. یکی از مهم ترین ویژگی های هدوپ،پارتیشن بندی داده ها و محاسبات میان هزاران میزبان و اجرای برنامه های محاسباتی موازی بر روی داده هایشان است. یک خوشه هدوپ می تواند از نظر ظرفیت محاسباتی،ظرفیت ذخیره سازی و پهنای باند ورودی و خروجی از طریق اضافه کردن سرورهای معمولی توسعه یابد. کلاسترهای هدوپ در شرکت یاهو به 25000 سرور می رسند و 25 پتابایت از داده های برنامه های مختلف را ذخیره می کنند و بزرگ ترین کلاستر یاهو حاوی 3500 سرور است. تا به حال 100 سازمان جهانی اعلام کرده اند که از هدوپ استفاده می کنند.

HDFS جزئی از سیستم فایل هدوپ می باشد و فراداده و داده های برنامه ها را به صورت جداگانه ذخیره می کند. همانند سیستم فایل های دیگر مثل PVFS ، Lustre و GFS ، HDFS فراداده را بر روی یک سرور اختصاصی به نام NameNode ذخیره می کند. داده های برنامه ها نیز بر روی سرور های دیگر به نام DataNodes ذخیره می شوند. تمامی این سروری با هم از طریق پروتکل های مبتنی بر TCP با هم در ارتباط هستند. زمان بند توزیع شده منابع YARN که سرنام Yet Another Resource Negotiator است در واقع نسل بعدی MapReduce است که به نام MRv2 هم شناخته می شود. MapReduce در هدوپ نسخه ۰.۲۳ تغییرات کلی یافت و آن‌چه که اکنون در دسترس ماست MRv2 یا MapReduce 2.0 یا YARN نامیده می‌شود که در آن بین مدیریت منابع و مولفه‌های پردازشی، جداسازی صورت گرفته است. در حقیقت مفهوم YARN در اثر نیاز به طیف وسیع‌تری از الگوهای تعاملی برای ذخیره داده‌ها، در HDFS مبتنی بر MapReduce متولد شده است. معماری مبتنی بر YARN از هدوپ نسخه ۲.۰ یک بستر پردازشی عمومی‌تر ساخته است که محدود به MapReduce نیست.

  1. امنیت در هدوپ

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

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

مکانیزم های اصلی امنیت در هدوپ عبارتند از:

1. لیست کنترل دسترسی استاندارد POSIX یا POSIX Access Control List(ACL)

2. اعطای مجوز سطح سرویس یا Service Level Authorization(SLA)

3. مجوز امنیتی Kerberos

4. کلاس سفارشی یا Custom

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

مکانیزم لیست کنترل دسترسی یا Access Control List (ACL)

به صورت پیش فرض در هدوپ این امکان غیرفعال می باشد و برای استفاده از این امکان می باشد تنظیمات مربوطه را فعال نمایید. به این معنی که هر کاربری اجازه انجام هرکاری را دارد. اما اگر این امکان را فعال کنید، در هنگام نصب و راه اندازی هدوپ، کاربر سیستمی که هدوپ را اجرا می کند به صورت پیش فرض به عنوان کاربر مدیر تعیین می شود و اجازه انجام هر عملیاتی را دارا می باشد.

به طور مثال هدوپ را در پوشه Home کاربر hduser قرار داده اید و آنرا اجرا می کنید. در هنگام کار با سیستم فایل توزیع شده هدوپ، سطح دسترسی و مالک فایل ها و پوشه ها به صورت پیش فرض hduser انتخاب می شود و اگر بخواهید با کاربر سیستمی دیگری با این سیستم فایل کار کنید اجازه نخواهید داشت. البته اگر کاربری که دسترسی لازم را دارد به شما یک پوشه با سطح دسترسی مشخص تخصیص دهد شما می می توانید بدون مشکل فایل ها و پوشه های خود را در آن مسیر مخصوص قرار دهید. استاندارد سطح دسترسی در اینجا همان POSIX است. در سیستم عامل لینوکس سه سطح دسترسی برای فایل و فولدرها وجود دارد:

اجازه خواندن فایل را میدهد   :read

اجازه نوشتن و ویرایش در فایل را میدهد   :write

اجازه اجرای فایل را میدهد  :execute

این سه سطح دسترسی به صورت r - w - x مشخص میشوند که برای هر کدام از آنها یک عدد در نظر گرفته شده است:

r → 4

w → 2

x → 1

 

در لینوکس سه کلاس برای کاربران وجود دارد: owner - group - other که میتوان برای هر کدام سطح دسترسی تعیین نمود.

مثال:

rw-rw-r → 644

سطح دسترسی در مثال بالا 644 است که در آن rw برابر با 6 در نظر گرفته میشود.

برای تغییر سطح دسترسی ها در لینوکس از فرمان chmod استفاده میشود. نحوه استفاده به صورت زیر است:

 

chmod [permissions] [path]

مثال:

chmod 755 test

در این مثال دسترسی به فایل test برای owner برابر با 7 یا rwx ، برای group برابر با 5 یا rx و برای other برابر با 5 یا rx خواهد بود.

755 → rwx-rx-rx

 

به طور کلی در لینوکس ۲ کاربر داریم که یکی root یا کاربر ریشه است و تمامی تنظیمات و تغییرات را میتواند انجام دهد و مشابه administrator در هاست ویندوز است و یک کاربر دیگر هم وجود دارد که خود شما هستید و یا شخصی که از سیستم استفاده میکند.

به طور مثال میخواهیم به کاربر hduser دسترسی خواندن و نوشتن به فایلی به نام myfile در مسیر /user/hdfs برروی فایل سیستم توزیع شده هدوپ را بدهیم. به صورت زیر عمل می کنیم:

ابتدا در فایل hdfs-site.xml تنظیمات زیر را اعمال می کنیم:

<property>

<name>dfs.namenode.acls.enabled</name>

<value>true</value>

</property>

حالا با دستور زیر دسترسی موردنظر را اعمال می کنیم:

hdfs dfs -setfacl -m user:hduser:rw- /user/hdfs/myfile

نکته قابل توجه در این مکانیزم این است که ACL در واقع فقط وظیفه Authorization یا اعطای مجوز را بر عهده دارد و عملیات احراز هویت یا Authentication بر عهده سیستم عامل میزبان است. شاید این یک نقص باشد ولی با اینکار مسئولیت احراز هویت را از خود سلب می کند تا محدودیتی در انتخاب شیوه احراز هویت برای کاربر ایجاد نکند. با این حال شاید بهتر باشد ما از مکانیزمی استفاده کنیم که هردو وظیفه اعطای مجوز و احراز هویت را انجام دهد.

مکانیزم اعطای مجوز سطح سرویس یا Service Level Authorization (SLA)

این مکانیزم در واقع راهکار ابتدایی هدوپ برای اعطای مجوز می باشد که از لیست کنترل دسترسی یا ACL است با این تفاوت که از لیست از پیش تعریف شده کاربران و گروه کاربری استفاده می کند تا دسترسی یا عدم دسترسی به سرویس خاصی را مدیریت کند.

به طور مثال می خواهیم به کاربر hduser اجازه اجرای برنامه را برروی YARN بدهیم. در مسیر تنظیمات هدوپ که به صورت پیش فرض مسیر $HADOOP_HOME/etc/Hadoop است فایلی به نام Hadoop-policy.xml وجود دارد که وظیفه نگهداری تنظیمات اعطای مجوز سطح سرویس را دارا می باشد. برای فعال سازی و اعطای مجوز به کاربر hduser در ابتدا می بایست تنظیمات زیر را در فایل تنظیمات core-site.xml اعمال کنیم:

<property>

<name>hadoop.security.authentication</name>

<value>kerberos</value>

</property>

<property>

<name>hadoop.security.authorization</name>

<value>true</value>

</property>

و سپس در فایل تنظیمات Hadoop-policy.xml مقدار زیر را اضافه می کنیم:

<property>

<name>security.job.client.protocol.acl</name>

<value>hduser</value>

</property>

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

دانشمندان علوم کامپیوتر دانشگاه MIT، اولین پژوهشگرانی بودند که از واژه Kerberos (یکی از قهرمان اساطیر یونانی) برای نام‌گذاری یک پروتکل احراز هویتی استفاده کردند که درون شبکه‌های کامپیوتری استفاده می‌شود. کربروس (Kerberos) یک پروتکل تحت شبکه است که در سطحی گسترده برای حل مشکل احراز هویت استفاده می‌شود. کربروس از رمزنگاری کلید متقارن و یک مرکز توزیع کلید KDC  سرنام Key Distribution Center استفاده می‌کند و برای تایید هویت کاربر به مجوز ثالث مورد اعتماد نیاز دارد. کربروس به 3 عنصر مجزا برای احراز هویت نیاز دارد و از یک سیستم رهگیری و نظارتی قدرتمند برای امن‌تر نگه داشتن محاسبات استفاده می‌کند. احراز هویت کربروس در حال حاضر فناوری احراز هویت پیش‌فرض ویندوز مایکروسافت است، اما پیاده‌سازی کربروس در یونیکس، لینوکس Apple OS و FreeBSD امکان‌پذیر است. مایکروسافت نسخه کربروس خود را همراه با ویندوز 2000 معرفی کرد. همچنین این فناوری به یک استاندارد برای وبسایت‌ها و احراز هویت شناسایی یگانه (Single Sign-On) در پلتفرم‌های مختلف تبدیل شده است. لازم به توضیح است که کنسرسیوم کربروس این فناوری را به عنوان یک پروژه منبع‌باز نگه‌داری می‌کند. کربروس به نسبت فناوری‌های احراز هویت قبل از خود پیشرفت چشم‌گيری داشته است. رمزنگاری قدرتمند و توکن احراز هویت ثالث باعث می‌شوند تا نفوذ به شبکه توسط مجرمان سایبری با دشواری زیادی همراه باشد. این فناوری همانند سایر نمونه‌های مشابه در بخش‌هایی آسیب‌پذیر است که اگر درباره این آسیب‌پذیرها اطلاع کافی داشته باشید، دفاع در برابر هکرها امکان‌پذیر می‌شود. کربروس اینترنت را به محیطی امن‌تر تبدیل کرد و این امکان را برای کاربران فراهم کرد تا فارغ از نگران‌های امنیتی و بدون نگرانی از بابت مشکلات امنیتی در دفتر کار خود با اینترنت کار کنند.

قبل از کربروس مایکروسافت از یک فناوری احراز هویت به‌نام  NT Lan Manager(NTLM) استفاده می‌کرد که یک پروتکل احراز هویت چالش-پاسخ بود. کامپیوتر یا کنترل‌کننده دامنه گذرواژه‌ها را بررسی و هش گذرواژه را برای استفاده مداوم ذخیره می‌کرد. بزرگ‌ترین تفاوت این دو سیستم در احراز هویت ثالث و توانایی رمزنگاری قدرتمندتر کربروس است. کربروس در مقایسه با NTLM از یک لایه امنیتی اضافی در فرآیند احراز هویت استفاده می‌کند. این روزها سیستم‌های مبتنی بر NTLM را می‌توان در عرض چند ساعت هک کرد. به بیان ساده NTLM یک فناوری قدیمی‌ و به تعبیری منسوخ شده است که نباید برای محافظت از داده‌های حساس از آن استفاده کرد.

هر هویت(کاربر یا سرویس) در 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 بر عهده دارند.

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

شکل 2
شکل 2

ادامه دارد ...

به روزرسانی: بخش دوم این مستند منتشر شد. پس از مطالعه این بخش، به سراغ قسمت بعدی در این لینک بروید.

با من در بخش های دیگر این مستند همراه باشید و در صورت وجود ابهام و سوال و ارتباط با من می توانید با ایمیل من mobinranjbar1 روی جیمیل و یا لینکدین من مکاتبه کنید.