در این پست با 2 بحث جذاب احراز هویت یکپارچه (SSO) و مدیریت هویت(Identity Management) بیشتر آشنا خوهیم شد؛
کاربران روزانه از تعداد زیادی برنامه استفاده میکنند. استفاده از رمزهای عبور پیچیده برای هر کدام از این سیستمها چالشی است که کاربران با آن روبه رو هستند. Single Sign-On راه حل مناسبی برای این مسئله است. در این حالت، ورود به سیستمهای مختلف با یک هویت واحد امکان پذیر خواهد بود. همچنین فرایند افزودن و حذف دسترسی کاربران آسان تر میشود. به زبان ساده (Single Sign On (SSO یک سرویس متمرکز تایید هویت است که در آن کاربر تنها با استفاده از یک حساب کاربری (نام کاربری و رمز عبور) میتواند به چندین برنامه یا سایت دسترسی داشته باشد.
این قابلیت را میتوان هم برای کارمندان و هم برای مشتریان به کار برد تا تجربه ورود آنها ساده شود. به طور معمول، کارمندان برای انجام کارهای خود به چندین برنامه تجاری مانند حسابهای پیام رسانی و ایمیل، سایتهای اینترانت، سوابق مالی و غیره وارد میشوند که اگر از این قابلیت استفاده شود برای کارمندان یک تجربه خوبی خواهد بود.
به طور مشابه، مشتریان اغلب از طریق یک حساب تجاری یا پورتال به چندین سرویس یا برنامه دسترسی دارند. بانکداری مثال خوبی است. همانطور که در نمودار زیر نشان داده شده است، SSO این امکان را برای مشتریان بانک فراهم میکند که با یک مجموعه از اعتبارنامهها وارد شوند و بتوانند اقدامات مختلفی مانند بررسی موجودی حساب خود و انتقال پول را انجام دهند. حتی اگر این خدمات در واقع برنامههای جداگانهای هستند که توسط بانک در پشت صحنه مدیریت میشوند، SSO تجربه یکپارچه را برای مشتریان شما فراهم می کند.
با کاهش تعداد گذرواژههای کاربران، امنیت شرکت را تقویت میشود. از آنجایی که حمله برای دریافت گذرواژهها، حملههای محبوبی هستند، کاهش تعداد آنها، احتمال نقض را نیز کاهش میدهد.
سختیهای ناشی از استفاده از چندین رمز عبور و چندین بار ثبت نام را از بین میبرد. مشتریان میتوانند یک بار وارد سیستم شوند و به راحتی به تمام محصولات و خدمات مورد نیاز خود دسترسی داشته باشند. با توجه به اینکه تقریباً 3 تا از هر 4 مشتری گزارش میدهند که تجربه این قابلیت، عامل مهمی در تصمیم گیریها است، ورود به سیستم یک مکان عالی برای شروع تحت تاثیر قرار دادن آنها است.
این قابلیت به کارمندان شما دسترسی آسانتری به منابعی که برای انجام کارهایشان نیاز دارند، میدهد. با سریعتر کردن دسترسی بدون به خطر انداختن امنیت، تجربه آنها را سادهتر میکنید و به آنها زمان بیشتری برای تمرکز روی کارهای مهم میدهید.
کاهش تعداد رمزهای عبور، به دلیل مشکلات موجود مربوط به رمز عبور، موجب کاهش هزینه میشود. بازگردانی رمز عبور ممکن است کار بزرگی به نظر نرسد، اما برخی از سازمان ها سالانه هزینههای قابل توجهای بودجه صرف هزینههای پشتیبانی مربوط به رمز عبور میکنند. با به حداقل رساندن تعداد رمزهای عبور استفاده شده، میتوانید در هزینههای زیادی صرفه جویی کنید.
تایید هویت با SSO به اعتماد بین دامنهها متکی است. هنگام ورود به سامانه یا برنامه در سیستم SSO مراحل زیر اجرا می شود:
درک تفاوت میان ورود با رمزعبور و ورود از طریق SSO اهمیت دارد. تصور اینکه با ورود رمز عبور یکسان در تمامی سامانهها وارد شوید و نتیجه یکسانی با ورود از طریق SSO به دست می آورید، تصوری اشتباه است. چراکه در صورتی که هر یک از این سامانهها به علت ضعف در پیاده سازی لایه امنیتی مورد حمله قرار گرفته و اطلاعات هویتی شما افشا شود، حمله کننده میتواند به تمامی سامانههای شما دسترسی یابد. به علاوه با استفاده از SSO دیگر نیازی به ورود رمز عبور به ازای ورود به هر سامانه وجود ندارد و صرفا کافی است یک بار نام کاربری و رمز عبور خود را فقط در درگاه سامانه SSO وارد نمایید. احراز هویت یکپارچه را بهعنوان واسطهای در نظر بگیرید که میتواند تأیید کند که آیا اعتبار ورود کاربر با هویت او در پایگاه داده مطابقت دارد، بدون اینکه خود پایگاه داده را مدیریت کند؛
مدیریت هویت به مجموعه سیاستها و ابزارهای استفاده شده توسط سازمانها اشاره دارد تا اطمینان حاصل شود که افراد و موجودیتها سطح دسترسی مناسب را به منابع فنی سازمان دارند یا خیر. سامانه مدیریت هویت، راهکاری جامع برای مدیریت امن هویت دیجیتال و دسترسی به سامانهها و برنامههای کاربردی مختلف است. در واقع هر شی دارای برخی هویتها است که این ویژگیها، آن را از دیگر شیها متمایز میکند. پس دقیقا ما هم نسبت به همین هویت سعی میکنیم کاربران خود را مدیریت کنیم.منظور از مدیریت در این بحث، یعنی فرآیند کنترل اشیا یا افراد در سازمان و برنامه خود است. که این هویت میتواند یک شخص ویا گروهی از افراد باشد.
دنیای دیجیتال روز به روز در حال گسترش است به نحوی که امروزه تامین امنیت هویت فردی به یک کار بسیار دشوار تبدیل شده است. هر فردی دارای هویت متفاوتی در زمینه متفاوتی است. مدیریت هویت یک بخش کلیدی از هر سازمانی است، به دلیل اینکه هر سازمانی نیازمند مراقبت از اطلاعاتش در برابر افراد بدون سطح دسترسی است و همچنین برای هر کارمند نیز باید محدودیتهایی تعیین گردد، که ممکن است به مدیر اصلی اجازه دسترسی به کل برنامه و به مدیران میانی اجازه دسترسی به بخشهای خاصی از برنامه، داده شود. امروزه هر سازمانی نیازمند مدیریت هویت است، مدیریت هویت یک اصطلاح انتزاعی است و هر سازمانی متد و روش خاصی برای مدیریت هویت افراد طراحی کرده است.
ابتدا به کمک یک مثال ساده تفاوتهای بین احراز هویت (identity) و سطح دسترسی (access) را بررسی میکنیم. وقتی ما وارد سازمانی میشویم، کارت ورود خود را روی دستگاه ورود میگذاریم، سیستم تعیین میکند که این شخص آیا جز کارمندهای این سازمان است یا خیر، اما اگر یک کارمند عضو بخش منابع انسانی باشد در نتیجه بخش مالی، به آن کارمند اجازه مداخله در مسائل بخش مالی را نمی دهد و به آن کارمند اعلام می شود که شما سطح دسترسی کافی برای تغییرات در این بخش را ندارید. پس به زبان ساده، وارد کردن یوزرنیم و پسورد به معنای احراز هویت است، و تعیین سطح دسترسی به معنای بررسی این است که این کاربر اجازه استفاده از کدام عملیاتهای سیستم را دارد.
در دنیای دیجیتال گاهی یوزرنیم و پسورد برای احراز هویت یک فرد کافی نیست، پس به چه چیز های دیگری نیاز داریم؟ برای احراز هویت یک فرد از مکانیزمی که از دو عامل یا بعضی اوقات بیشتر از دو عامل (چند عامل) دارد استفاده می شود. گاهی از دستگاههای سخت افزاری و گاهی هم یک مکانیزم کد بندی استفاده می شود. امروزه اکثرا سازمانها از روش دو عاملی برای احراز هویت افراد استفاده می کنند.
گوگل از روشهایی با بیش از یک عامل به احراز هویت افراد می پردازد، مثلا با وارد کردن یوزرنیم و پسورد و گوگل یک کد به گوشی موبایل ارسال می کند که به کمک آن، احراز هویت کاربر با دقت خوبی انجام می شود.
به طور خلاصه می توان گفت هر گونه روش دیگری که در کنار استفاده از یوزرنیم و پسورد برای احراز هویت استفاده می شود را دو عاملی یا چند عاملی مینامیم.
تعیین و کنترل سطح دسترسی در واقع همان مشخص کردن حق و حقوق کاربر در استفاده از بخشهای مختلف برنامه است. برای مثال ما به یک سینما میرویم و برای تماشای برخی از فیلمها، باید سن بالاتر از 12 سال داشت، اگر سن کافی نباشد، مامور به آن فرد بلیط فیلم را نمیفروشد، در واقع آن فرد سطح دسترسی کافی برای تماشای آن فیلم را ندارد. کنترل سطح دسترسی در واقع بررسی اجازه استفاده از بخش های مختلف سیستم می باشد.
هر فردی در سازمان دارای نقشهایی است که توسط چارت سازمانی مشخص شده است. برای مثال یک فرد مدیر است و یک فرد ادمین و فردی دیگر دارای نقش برنامه نویس است. پس ما برای افراد نقش تعریف میکنیم. در روشهای مبتنی بر نقش، هر فرد باید متناسب با نقش خود ابتدا احراز هویت و سپس با توجه به نقش تعیین سطح دسترسی برایش انجام شود. برای مثال، در سیستم مدیریت یک بانک، یک کارمند میخواهد به بخشهای مربوطه به ارتباط با مشتری برود و یک مدیر میخواهد به بخشهای مربوط به مدیرها دسترسی داشته باشد، پس ابتدا نقشها تعریف میشوند و سپس با توجه به نقشها، افراد ابتدا احراز هویت و تعیین سطح دسترسی برای آنها انجام میشود و نقش آنها معلوم میشود و معلوم میشود که یک فرد دارای نقش کارمند است، پس اجازه دسترسی به بخشهای مربوط به ارتباط با مشتری را دارد و اجازه دسترسی به بخشهای مدیر را ندارد.
دایرکتوریها، تلفیق همه حافظههای داخلی یک برنامه دیتابیس محور است که احراز هویت و تعیین سطح دسترسی کاربرها را انجام میدهد. به بررسی یک سناریو می پردازیم، به عنوان مثال برنامه سازمان ما دارای سه برنامه است؛ هر 3 برنامه دارای دیتابیس داخلی است و کاربر باید با وارد کردن یوزرنیم و پسورد خود ابتدا احراز هویت شود و سپس سطح دسترسی فرد مشخص شود تا بتواند به انجام وظایف خود بپردازد. پس می توان گفت کار بسیار دشواری است که یک فرد برای کار با هر بخش، یک یوزرنیم و پسورد جداگانه داشته باشد. پس باید چه کار کرد؟
میتوان با ساخت یک دایرکتوری که شامل همه دیتابیسهای حافظههای داخلی میباشد و همچنین در کل شرکت اجرا میشود کار را راحت کرد به طوری که به کمک یک یوزرنیم و پسورد بتوان کاربر را احراز هویت و تعیین سطح دسترسی نمود. ابزار Microsoft Azure Active Directory یک نمونه از دایرکتوریها است که یک پسورد برای استفاده از تمامی سرویسها و برنامه ها کافی است.
ما در دنیای موبایلی زندگی میکنیم و اکثر خدمات خود را از طریق موبایل دریافت می کنیم. روش یکبار ورود به سیستم مبتنی بر نشانه به طور فراگیری در برنامههای موبایلی استفاده میشود. برای مثال برنامه instagram از روش احراز مبتنی بر نشانه برای احراز هویت کاربر استفاده میکنند. Web API نقش خیلی مهمی در پیاده سازی روش احراز هویت مبتنی بر نشانه دارد.
وقتی یک فرد برای اولین بار در سیستم لاگین میکند، درخواست او به وب سرور فرستاده میشود. Web API این درخواست را میگیرد و یوزرنیم و پسورد را احراز هویت میکند، وقتی احراز هویت موفق بود سیستم یک بلیت یا همان نشانه (token) میسازد که این نشانه شامل یک مقدار منحصر به فرد، تاریخ انقضا و سطح دسترسی کاربر است که به برنامه موبایل ارسال میشود. از دفعات بعدی، اگر کاربر بخواهد به سیستم دسترسی پیدا کند، برنامه موبایلی token را به سرور ارسال میکند و سرور ابتدا token را اعتبار سنجی میکند و در صورت معتبر بودن آن، شروع به سرویس دهی به کاربر می کند.
در دنیای امروزی مدیریت هویت و دسترسی (IAM) و احراز هویت یکپارچه (SSO) همچنان یکی از محبوبترین ابزارهای مورد استفاده سازمانها در سراسر جهان است. با این حال، تمایز بین SSO و IAM مهم است. SSO یکی از زیرمجموعه های مهم IAM است، اما به تنهایی یک استراتژی کامل IAM را ایجاد نمیکند. با این حال، بسیاری از سازمانها تنها از یک ورود به سیستم برای اتصال کاربران نهایی به برنامههای کاربردی وب در محیط فناوری اطلاعات خود استفاده میکنند و آن را استراتژی مدیریت هویت مینامند که نادرست است.
با مدرنسازی محیط فناوری اطلاعات، مفهوم سنتی برنامه وب SSO برای بسیاری از سازمانها کافی نیست، و همچنین راهحلهای مدیریت دسترسی و هویت پاسخگوی نیاز سازمان نیست. به همین دلیل، پلت فرم دایرکتوری JumpCloud به عنوان یک ارائه دهنده مدیریت هویت که از طریق فضای ابری عمل میکند که دارای قابلیت های True Single Sign-On داخلی است که به کاربران امکان میدهد تقریباً هر منبع فناوری اطلاعات را به طور یکپارچه احراز هویت کنند. در حالی که این یک تجربه عالی برای کاربران نهایی فراهم میکند، اما به مدیران فناوری اطلاعات نیز اجازه میدهد تا دید بیشتری نسبت به محیط IT داشته باشند و هویتها را به روشی ایمن و کارآمد کنترل کنند.
این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است
مراجع: