بررسی اجمالی مدیریت هویت (Identity Management)

یکشنبه 27 فروردین 1396

به طور خلاصه مدیریت هویت فرآیندی است که به بررسی و مدیریت هویت افراد و گروه هایی که در زمینه های کاری مختلفی هستند می پردازد.

بررسی اجمالی مدیریت هویت (Identity Management)

مدیرت هویت چیست؟

به طور خلاصه مدیریت هویت فرآیندی است که به بررسی و مدیریت هویت افراد و گروه هایی که در زمینه های کاری مختلفی هستند می پردازد.

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

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

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

به عنوان مثال نفس کشیدن باعث تمایز بین انسان های زنده و غیر زنده است.

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

آموزش تصویری نصب و استفاده از Asp.Net Identity 2

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

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

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

گوگل مکانیزم مدیریت هویت اختصاصی خودش را دارد.

مایکروسافت نیز، تعدادی مکانیزم مدیریت هویت دارد.

هر سازمان از چند مورد کلیدی تعریف می کند که به کمک آنها بتواند مدیریت هویت افراد را انجام دهد.

مثلا اگر به فیسبوک اشاره کنیم، خواهیم دید که فیسبوک از OAuth+ signed Request برای مدیریت هویت افراد استفاده می کند.

روش های پیاده سازی مدیریت هویت

تفاوت های احراز هویت و تعیین سطح دسترسی

به کمک یک مثال ساده تفاوت های بین احراز هویت و سطح دسترسی را بررسی می کنیم.

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

وارد کردن یوزرنیم و پسورد به معنای احراز هویت است، و تعیین سطح دسترسی به معنای بررسی این است که این کاربر اجازه استفاده از کدام عملیات های سیستم را دارد.

احراز هویت

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

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

دو عاملی / چند عاملی

در دنیای دیجیتال گاهی یوزرنیم و پسورد برای احراز هویت یک فرد کافی نیست، پس به چه چیز های دیگری نیاز داریم؟

برای احراز هویت یک فرد از مکانیزمی که از دو عامل یا بعضی اوقات بیشتر از دو عامل (چند عامل) دارد استفاده می شود.

گاهی از دستگاه های سخت افزاری و گاهی هم یک مکانیزم کد بندی استفاده می شود.

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


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

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

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

کنترل سطح دسترسی

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

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

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

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

احراز هویت و تعیین سطح دسترسی مبتنی بر نقش

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

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


در کل، سیستم بر اساس نقش افراد به آنها اجازه دسترسی می دهد.

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

Directories

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

به بررسی یک سناریو می پردازیم، به عنوان مثال برنامه سازمان ما دارای سه بخش است

برنامه 1 – دارای دیتابیس داخلی است و کاربر باید با وارد کردن یوزرنیم و پسورد خود ابتدا احراز هویت شود و سپس سطح دسترسی فرد مشخص شود تا بتواند به انجام وظایف خود بپردازد.

(شبیه برنامه 1) برنامه 2 – دارای دیتابیس داخلی است و کاربر باید با وارد کردن یوزرنیم و پسورد خود ابتدا احراز هویت شود و سپس سطح دسترسی فرد مشخص شود تا بتواند به انجام وظایف خود بپردازد.

(شبیه برنامه 1) برنامه 3 – دارای دیتابیس داخلی است و کاربر باید با وارد کردن یوزرنیم و پسورد خود ابتدا احراز هویت شود و سپس سطح دسترسی فرد مشخص شود تا بتواند به انجام وظایف خود بپردازد.

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

پس باید چه کار کرد؟ می توان با ساخت یک دایرکتوری که شامل همه دیتابیس های حافظه های داخلی باشد و در کل شرکت اجرا  می شود کار را راحت کرد به طوری که به کمک یک یوزرنیم و پسورد بتوان کاربر را احراز هویت و تعیین سطح دسترسی نمود.

Microsoft Azure Active Directory یک نمونه از دایرکتوری ها است که یک پسورد برای استفاده از تمامی سرویس ها و برنامه ها کافی است.

یکبار ورود به سیستم / مبتنی بر نشانه

ما در دنیای موبایلی زندگی می کنیم و اکثر خدمات خود را از طریق موبایل دریافت می کنیم.

روش یکبار ورود به سیستم مبتنی بر نشانه به طور فراگیری در برنامه های موبایلی استفاده می شود.

برای مثال برنامه های موسیقی که در cloud هستند از روش احراز مبتنی بر نشانه برای احراز هویت کاربر استفاده می کنند.  Web API نقش خیلی مهمی در پیاده سازی روش احراز هویت مبتنی بر نشانه دارد.

وقتی یک فرد برای اولین بار در سیستم لاگین می کند، درخواست او به وب سرور فرستاده می شود. Web API این درخواست را می گیرد و یوزرنیم و پسورد را احراز هویت می کند، وقتی احراز هویت موفق بود سیستم یک بلیت یا همان نشانه (token) می سازد که این نشانه شامل یک مقدار منحصر به فرد و تاریخ انقضا و سطح دسترسی کاربر است که به برنامه موبایل ارسال می شود. مثلا در گوشی های اندرویدی این نشانه در یک منبع اشتراکی داخل گوشی ذخیره می شود.

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

یوزرنیم و پسورد فقط یک بار برای احراز هویت فرد به کار می رود. وقتی که نشانه تولید شد، تا موقعی که نشانه منقضی نشود، مسئول احراز هویت برای دریافت سرویس است.

تامین/لغو مجوز

اگر یک کارمند جدید استخدام کنیم در نتیجه بخش مدیریت هویت باید به این کارمند یک یوزرنیم و پسورد بدهد و برای او یک نقش در نظر بگیرد. مثلا ورود به یک اکانت جدید گوگل، جایی که نقش ما یک کاربر ساده است پس ما به تمامی بخش های مربوط به کاربرها دسترسی داریم نه بیشتر که به این مفهوم تامین (Provisioning) است.

به طور مشابه اگر یک کارمند از سازمان خارج شود، بخش مدیریت هویت باید هویت آن کارمند را حذف یا غیر فعال کند و آن کارمند دیگر توانایی دسترسی به برنامه و خدمات را نداشته باشد. این مفهوم با عنوان لغو مجوز (Deprovisioning) شناخته می شود.

 چرخه حیات هویت

تمامی مواردی که در بالا بحث کردیم، شکل دهنده چرخه حیات هویت هستند که مراحل زیر را شامل می شوند.

تدارک

مدیریت

لغو مجوز

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید