یک مکانیزم احراز هویت یکپارچه
زبان نشانهگذاری ادعای امنیت (SAML) سرنام Security Assertion Markup Language، پروتکل احراز و تایید هویت در وبسایتها و نرمافزارهای وبمحور است که کاربران هنگام ورود به این سامانهها از آن استفاده میکنند. علاوه بر این، کارمندان سازمانها برای ورود به سامانهها از فناوری فوق بهشکل غیرمستقیم استفاده میکنند. این زبان، فرآیند احراز هویت کاربران را ساده میکند و به مدیران شبکه و امنیت اجازه میدهد با دردسر کمتری هویت افراد را تایید کنند. به بیان دقیقتر، SAML یک کانال ارتباط ایمن میان سامانهها برقرار میکند و به کاربران اجازه میدهد با یکبار استفاده از نام کاربری و گذرواژه، مجوز دسترسی به سامانههای مختلف را بهدست آورند.
SAML چیست؟
SAML استاندارد مبتنی بر زبان نشانهگذاری توسعهپذیر XML سرنامExtensible Markup Language است که با هدف برقراری یک کانال ارتباطاتی استاندارد و ایمن، بین ارائهدهنده هویت و ارائهدهندگان خدمات مورد استفاده قرار میگیرد. به بیان دقیقتر، یک فرآیند احراز هویت ساده و ایمن است که برنامههای وبمحور سازمانی بزرگ مثل مایکروسافت ۳۶۵، سیلزفورس (Salesforce)، جیمیل و نمونههای مشابه از آن استفاده میکنند. این پروتکل، کارهای مختلفی مثل یکپارچهسازی، مدیریت هویت و شناسایی یکپارچه را انجام میدهد. بهطوریکه کاربر تنها پس از یکبار احراز هویت و وارد کردن نام کاربری و گذرواژهای که در اختیار دارد، توانایی دسترسی به سامانههای دیگر بر مبنای استاندارد فوق را داشته باشد. در حقیقت، یکپارچهسازی هویت اجازه میدهد تا اطلاعات هویتی کاربران را که مرتبط با برنامهها و سرویسهای مختلف هستند، در یک مکان واحد ذخیرهسازی کنیم. با وجود SAML، کارشناسان امنیتی میتوانند بهشکل دقیقتری هویت کاربران را تایید کنند. قبل از اینکه وارد بحث فنی مرتبط با SAML شویم، اجازه دهید با ذکر مثالی نشان دهیم SAML چیست و چرا مفید است.
فرض کنید، بهتازگی در شرکتی مشغول بهکار شدهاید و آنها آدرس ایمیل کاری و دسترسی به داشبورد وبمحوری در اختیارتان قرار میدهند. هنگامی که وارد این داشبورد میشوید، آیکن تمام سرویسهای خارجی که شرکت از آنها استفاده میکند مثل Salesforce، Expensify، Jira، AWS و موارد دیگر را مشاهده میکنید.
شما روی نماد Salesforce کلیک میکنید، در این حالت کارهایی در پسزمینه انجام میشود. در ادامه، بدون اینکه کار خاصی یا اطلاعات هویتی وارد کنید به سرویسSalesforce که شرکت مشترک آن است، وارد میشوید. چه اتفاقی افتاده که شما تنها با یکبار وارد کردن اطلاعات هویتی قادر به استفاده از سرویسهای ثالثی هستید که شرکت از آنها استفاده میکند؟ پاسخ در فناوری SAML نهفته است. این فناوری با اتکا بر استاندارد XML فرآیند انتقال دادههای هویتی بین دو سرویس مختلف ارائهدهنده هویت (IdP) سرنام identity Provider و ارائهدهنده خدمات (SP) سرنام Service Provider را امکانپذیر میکند.
- Identity Provider: فرآیند احراز هویت را انجام میدهد و اطلاعات مربوط به هویت و مجوز کاربر را برای ارائهدهنده خدمات ارسال میکند.
- Service Provider: ارائهدهنده خدمات، اطلاعات هویتی را از ارائهدهنده هویت دریافت میکند و به کاربر اجازه دسترسی به منبع درخواستی را میدهد.
در سناریوی بالا، ارائهدهنده هویت، شرکت شما است و ارائهدهنده خدمات، Salesforce است. شما با اطلاعات هویتی وارد داشبورد شرکت میشوید، روی نماد Salesforce کلیک میکنید و Salesforce تشخیص میدهد که شما از طریق SAML قصد دسترسی به منابع را دارید. در اینحال، Salesforce یک درخواست SAML برای سرویسهای امنیتی شرکت ارسال میکند تا اطلاعات احراز هویت شما را دریافت کند. از آنجایی که اطلاعات شما قبلا در سامانه شرکت ثبت شده است، مکانیزمهای امنیتی شرکت، اطلاعات احراز هویت را از طریق یک نشست ایمن و رمزگذاریشده در قالب یک پاسخ SAML برای Salesforce ارسال میکنند. Salesforce این پاسخ را بررسی میکند و اگر فرآیند تطابق اطلاعات درست باشد، به شما اجازه دسترسی به منابع را میدهد. دقت کنید در تمامی این مراحل شما یکبار اطلاعات احراز هویت را وارد میکنید و با یک کلیک ساده به سرویسهای ثالثی که شرکت از ارائهدهندگان خدمات دریافت کرده متصل میشوید.
SAML قادر به حل چه مشکلاتی است؟
بهطور معمول، سامانهها بهمنظور حفظ دادهها و اعتبارنامههای حسابهای کاربری و ذخیرهسازی دادههای مورد نیاز برای اعتبارسنجی هویت کاربران، از یک پایگاه داده یا پروتکل دسترسی سبکوزن (LDAP) استفاده میکنند.
هر زمان، کاربری قصد ورود به سامانه را داشته باشد، اطلاعات این مخزن برای اعتبارسنجی او مورد استفاده قرار میگیرد. هنگامی که قرار است شخصی وارد چند سامانه شود که هر کدام نیازمند اطلاعات هویتی مختلف هستند، کاربران باید اطلاعات ورود به همه حسابهای کاربریشان را حفظ کنند و مدیران هم مسئولیت ثبت یا حذف این اطلاعات را بر عهده دارند. همانگونه که ممکن است حدس زده باشید، فرآیند فوق مشکلات مختلفی را ایجاد میکند. فناوری SAML با هدف غلبه بر این مشکلات، یک مکانیزم احراز هویت یکپارچه برای ورود به وبسایتها و برنامههایی که از فناوری مذکور پشتیبانی میکنند، ارائه کرده است. SAML پرکاربردترین پروتکل شناسایی یکپارچه وبمحور است که سازمانهای کوچک و بزرگ قادر به استفاده از آن هستند. بهطور معمول کاربران سازمانی، هنگامی که سامانه خود را روشن میکنند، با یک صفحه ورود روبهرو میشوند که امکان افزودن پروتکل SAML به این صفحه وجود دارد. در این حالت، کاربران برای ورود به تمام برنامههای کاربردی تحت وب تنها به یکبار احراز هویت نیاز خواهند داشتند.
مزایای احراز هویت SAML
از مزایای شاخص احراز هویت مبتنی بر SAML به موارد زیر باید اشاره کرد:
- تجربه کاربری بهبودیافته (Improved User Experience): کاربران برای دسترسی به خدمات ارائهدهندگان مختلف تنها یک مرتبه به داشبورد وبمحور سازمان وارد میشوند. مکانیزم فوق اجازه میدهد تا فرآیند احراز هویت سریعتر انجام شود و کاربر در زمان کوتاهتری به منابع موردنیاز دسترسی پیدا کند. علاوه بر این، کاربران مجبور نیستند اعتبارنامههای ورودی مختلفی را برای هر برنامه به خاطر بسپارند.
- امنیت افزایشیافته (Increased Security): SAML مکانیزم متمرکز و واحدی برای احراز هویت در قالب یک سرویس ارائهدهنده هویت امن تعریف میکند. سپس، اطلاعات هویتی را برای ارائهدهندگان خدمات ارسال میکند. این شکل از احراز هویت تضمین میکند که اعتبارنامهها بهطور مستقیم توسط IdP ارسال میشوند. علاوه بر این، SAML نیازی به نگهداری و همگامسازی اطلاعات کاربر بین دایرکتوریها ندارد.
- کاهش هزینه برای ارائهدهندگان خدمات (Reduced Costs for Service Providers): با استفاده از SAML، نیازی به نگهداری اطلاعات حسابهای سرویسهای مختلف ندارید. تمامی این فرآیندها توسط ارائهدهنده هویت انجام میشود.
SAML چگونه کار میکند؟
SAML به ارائهدهندگان خدمات یا برنامهها اجازه میدهد احراز هویت را به یک سرویس اختصاصی (IdP) واگذار کنند. در این حالت، مکانیزمهایی که ارائهدهندگان خدمات از آنها استفاده میکنند باید بهگونهای پیکربندی شوند که از طریق فرایندهای هماهنگ و یکپارچه به اطلاعات ارائهدهندگان هویت دسترسی پیدا کرده و به آنها اعتماد داشته باشند. برای یک ارائهدهنده خدمات، اهمیتی ندارد که ارائهدهنده هویت چگونه هویت و اعتبار کاربر را ارزیابی و تایید میکند، تنها اطلاعات احراز هویت تاییدشده کاربر برای آن اهمیت دارد. اصل مهم این است که کاربر از طریق یک نام کاربری و گذرواژه که توسط ارائهدهنده خدمات هویتی مدیریت شده و در اختیار او قرار میگیرد، به منابع موردنیاز دسترسی پیدا کند.
- جان مگوایر (John Maguire)، مهندس ارشد نرمافزار برای تشریح مکانیزم فوق به مثال جالب ورود به تماس کنفرانسی (Conference Call) اشاره میکند. او میگوید: «فرض کنید کارمندی برای ورود به یک جلسه مجازی مبتنی بر فناوری Webex و حضور در یک کنفرانس ویدیویی، روی لینکی کلیک میکند و پس از ورود به صفحه Webex مشخص میشود از چه IdPای برای احراز هویت او استفاده شده است. در ادامه، Webex کاربر را به IdP خودش هدایت میکند و پیامی شامل درخواست احراز هویت برای او ارسال میکند. IdP برای این منظور از روشهای مختلفی استفاده میکند. بهطوریکه، وضعیت حساب کاربری و اعتبارنامه کاربر، دستگاهی را که از آن برای دسترسی به برنامه استفاده شده و شبکهای را که کاربر در آن قرار دارد بررسی میکند. علاوه بر این، Webex میتواند از مکانیزم احراز هویت چندمرحلهای استفاده کند. در این حالت، کارشناسان امنیت، زیرساختهای فنی لازم برای احراز هویت کاربر را پیکربندی میکنند. همه این مراحل مشخص میکند چه سطحی از احراز هویت مثل احراز هویت تکعاملی، دوعاملی یا سهعاملی باید استفاده شود».
بهطور مثال، اگر IdP متوجه شود امکان شناسایی موقعیت جغرافیایی کاربر وجود ندارد، احراز هویت را متوقف میکند. IdP دادههای فوق را بررسی میکند و پیامی که ادعای SAML (SAML Assertion) نام دارد، تولید میکند که هویت کاربر و ویژگیهای او در آن تایید شده است. برای اثبات اعتبار از الگوریتمهای رمزنگاری استفاده میکند، سپس، این دادهها را از طریق فرآیند هدایت مجدد مرورگر به Webex که امضا را اعتبارسنجی و دادههای کاربر را بررسی میکند، ارسال کرده و در صورت تایید، مجوز دسترسی کاربر به برنامه را صادر میکند.
- جیمی پرینگل (Jamie Pringle)، مهندس ارشد نرمافزار میگوید: «همه این فرآیندها و ارتباطات با استفاده از مرورگر کاربر انجام میشود، در شرایطی که تمامی اتفاقات در پشت صحنه انجام میشوند. به همین دلیل است که چند ارائهدهنده خدمات برای یک IdP تنظیم میشوند».
بهطور معمول، مکانیزم احراز هویت مبتنی بر SAML، به دو روش پیادهسازی میشود. در فرآیندی که توسط ارائهدهنده خدمات آغاز میشود، کاربر سعی میکند به درگاه وب ارائهدهنده سرویس وارد شود. در این حالت، بهجای درخواست اطلاعات اعتبارنامه، مرورگر کاربر از طریق یک درخواست SAML برای احراز هویت، به سمت ارائهدهنده هویت هدایت میشود. در فرآیندی که IdP آغاز کرده، کاربر به IdP وارد و احراز هویت شده، سپس با ادعای SAML به سمت ارائهدهنده خدمات هدایت میشود. برخی از ارائهدهندگان خدمات از مکانیزم SP-Initiated Process (حالت اول) پشتیبانی نمیکنند. در این حالت، تنها میتوان از روش دوم استفاده کرد.
شرکتها و سازمانها چگونه میتوانند از SAML استفاده کنند؟
از زمانی که SAML برای اولین بار طراحی شد و توسعه پیدا کرد، به استانداردی برای احراز هویت یکپارچه وبمحور تبدیل شد و در زمان کوتاهی موفق شد نظر مساعد کسبوکارها را به خود جلب کند تا برای احراز هویت کارمندانشان از این مکانیزم استفاده کنند.
مایکل کلی، مدیر ارشد تحقیقات در گروه توانمندسازی کسبوکار امن گارتنر میگوید: «با توجه به اینکه شرکتها برای انجام کارهای روزمره خود مجبور به استفاده از برنامههایی هستند که خارج از محیط شبکه سازمانی قرار دارد، مدیریت دسترسی به یک ضرورت مهم تبدیل شده است. به همین دلیل، اهمیت SAML برای سازمانها و کاربرانی که نیاز به احراز هویت یکپارچه دارند، بیشتر شده است».
دستاوردهای این معماری برای کاربران و مدیران شبکهها مشخص است. کاربران دیگر نیازی به وارد کردن اطلاعات اعتبارنامههای دیجیتال در برنامههای مختلف ندارند. در مجموع همانگونه که ارن پارکی (Aaron Parecki)، مدیر ارشد راهبرد امنیت شرکت Okta میگوید: «احراز هویت به روشی امنتر انجام میشود. کاربران پس از احراز هویت میتوانند به سامانههای مختلف متصل شوند، بدون اینکه نیاز به چند مرتبه احراز هویت داشته باشند. این روش بهلحاظ امنیتی برای کاربران دستاوردهای خوبی دارد، زیرا کاربر اطلاعات اعتبارنامه دیجیتالی خودش را تنها در سروری که این اطلاعات را دارد و محلی است وارد میکند. اگر قرار باشد وارد یک برنامه شوید دیگر ضرورتی ندارد به آن برنامه اعتماد کنید تا اطلاعات اعتبارنامه شما را مدیریت کند. همهچیز از طریق یک سامانه هویتمحور متمرکز و ایمن انجام میشود».
مگوایر بر این باور است که SAML به مدیران اجازه میدهد از یک نقطه دسترسی واحد برای پیادهسازی کنترلهای امنیتی در برنامههای مختلف استفاده کنند. از اینرو، بهجای اینکه دغدغهای در ارتباط با ۲۰ برنامه مختلف و روشهای احراز هویت آنها وجود داشته باشد، میتوانند IdP را برای بررسی هویت همه کاربرانشان تنظیم کنند.
به این ترتیب، مدیران میتوانند خطمشیهایی مثل احراز هویت چندعاملی را به سرویسهایی که از آنها پشتیبانی میکنند، اضافه کنند. علاوه بر این، یک نقطه واحد برای بررسی حوادث امنیتی در اختیار خواهند داشت. با وجود سهولت در استفاده و پیادهسازی ساده SAML، روش فوق معایبی دارد که نباید بهسادگی از کنار آنها عبور کرد.
کلی میگوید: «این پروتکل معایب خاص خود را دارد. بهطور مثال، فاقد امکانات و قابلیتهای موجود در پروتکلهای جدیدتر است. با این حال اگر یک برنامه کاربردی وبمحور داشته باشید که بهشکل بومی از آن پشتیبانی کند، کار با این پروتکل آسان است».
فناوری جدید، استانداردهای جدید
SAML یکی از اولین استانداردهایی بود که برای حل مشکل احراز هویت وبمحور طراحی شد و در مقایسه با پروتکلهای دیگر بهشکل گستردهای مورد استفاده قرار میگیرد. بیشتر سرویسهای ابری که کسبوکارها از آنها استفاده میکنند، امکان یکپارچهسازی با SAML را دارند. بهطور معمول، ارائهدهندگان سرویسهای احراز هویت، اسنادی در مورد برنامههایی که فرآیند یکپارچهسازی در آنها صورت گرفته، در اختیار مصرفکنندگان قرار میدهند که در این زمینه مفید هستند.
SAML عضو خانوادهای بزرگ از پروتکلهای احراز هویت مدرن است که استانداردهایی مثل OAuth و OIDC سرنام Open ID Connect در آن قرار دارند. مدیران امنیت میتوانند از پروتکل OAuth برای احراز هویت کاربران استفاده کنند و به برنامهها اجازه دهند از طرف کاربر، اقدامات خاصی را انجام داده تا کاربر بتواند به منابع ویژهای دسترسی پیدا کند، بدون اینکه نیازی به اعتبارنامه ضروری باشد. پروتکل OIDC نیز روی OAuth ایجاد شده و یک استاندارد باز است که کسبوکارها میتوانند برای اعتبارسنجی هویت کاربران استفاده کنند. پارکی این استاندارد را نسخه مدرن SAML توصیف میکند.
او میگوید: «تغییرات زیادی در دنیای فناوری بهوجود آمده که SAML متناسب با آنها توسعه نیافته است. بهطور مثال، به OpenID Connect دقت کنید که برای کار با گوشیهای هوشمند ساخته شده و بهجای XML از JSON استفاده میکند. به نظرم هنگامی که قرار است از SAML برای فناوریهای مدرن استفاده کنید، خیلی سریع با محدودیت روبهرو میشوید».
به عقیده پارکی، شاید SAML به بحث یکپارچهسازی احراز هویت پرداخته باشد، اما برای دنیای مبتنی بر واسطهای برنامهنویسی کاربردی که امروزه یکی از ارکان مهم وب و فناوری اطلاعات را شکل میدهند، طراحی نشده است. برنامههای امروزی علاوه بر اطلاع درباره هویت کاربر، نیازمند دسترسی به واسطهای برنامهنویسی کاربردی هستند که OIDC و OAuth این کار را با کارایی بهتری انجام میدهند.
یکپارچهسازی احراز هویت
کلی میگوید: «امروزه، طیف گستردهای از کارها توسط واسطهای برنامهنویسی کاربردی انجام میشوند. توسعهدهندگان نیز به همین روش، فرآیند توسعه نرمافزارهای کاربردی را انجام میدهند. آنها تمایل دارند در مسیر توسعه برنامهها از واسطهای برنامهنویسی کاربردی برای احراز هویت استفاده کنند».
به این صورت، امکانات و عملکرد OAuth و OIDC بیشتر و پیچیدهتر هستند، در شرایطی که SAML الگوی سادهای دارد و فاقد قابلیتهای جانبی پردازشهای مبتنی بر واسطهای برنامهنویسی کاربردی است. در حالی که پذیرش و استفاده از OAuth و ODIC روزبهروز افزایش پیدا میکند، اما کلی پیشبینی میکند که فناوریهای مذکور دستکم به ۸ تا ۱۰ سال زمان نیاز دارند تا بتوانند SAML را از میدان خارج کنند.