احراز هویت
یکی از مهمترین نیازمندیهای یک نرمافزار، توانایی احراز هویت و کنترل دسترسی در آن است. این اهمیت در یک نرمافزار که با دادههای خاص و جمعآوری شده سر و کار دارد دوچندان میشود چرا که اگر یک شخص خرابکار به این دادهها دسترسی پیدا کند میتواند از آنها برای رسیدن به اهداف مخرب استفاده کند.
Application
اولین نیازمندی این پروژه، پیادهسازی قابلیت مدیریت کاربران شامل ایجاد حساب کاربری، احراز هویت و کنترل دسترسی است.
دادههای کاربران باید بهصورت امن ذخیره شوند و هویت آنها در هنگام ورود تأیید گردد. علاوهبراین، کاربران باید دارای سطوح دسترسی مختلف باشند تا در مراحل بعدی و با توسعه سایر بخشهای سیستم، دسترسی آنها به هر ماژول کنترل شود.
در مرحله فعلی، سه سطح دسترسی زیر پیشنهاد میشود: مدیر سیستم، مدیر داده و تحلیلگر. کاربران باید توسط مدیر سیستم ایجاد شوند و سطح دسترسی آنها در زمان ایجاد تعیین گردد. این سطوح دسترسی باید بهطور پویا و در هر زمان قابل تغییر باشند. همچنین هر کاربر باید امکان تغییر رمز عبور خود را داشته باشد.
با توجه به وجود راهحلهای OpenSource برای این نیازمندیها، بهجای پیادهسازی داخلی، از طریق اتصال به سامانه Keycloak این نیازها برآورده خواهند شد.
خروجی
خروجی این مرحله، دو کانتینر (یکی برای بکاند و دیگری برای فرانتاند) خواهد بود.
پس از استقرار و راهاندازی، با مراجعه به وبسایت، کاربر با صفحهی خوشآمدگویی (Welcome) مواجه میشود. این صفحه باید امکان ورود را فراهم کند، بهطوریکه با کلیک کاربر، به صفحهی احراز هویت Keycloak هدایت شده و پس از احراز هویت موفق، به وبسایت وارد شود.
پس از ورود، نام کاربری در منوی بالای صفحه نمایش داده میشود و کاربر باید بتواند به صفحهی پروفایل خود دسترسی داشته باشد. در صفحهی پروفایل، متناسب با نقش کاربر، امکاناتی مانند افزودن کاربران جدید و تغییر رمز عبور فراهم گردد.
Platform
هدف این مرحله، فراهمسازی محیطهای توسعه، Test و عملیاتی (Production) با استفاده از ابزارهایی مانند Docker، Kubernetes و پایپلاینهای CI/CD است. علاوه بر این، با مشارکت در طراحی معماری سیستم و ارائه مشاوره به توسعهدهندگان، باید اطمینان حاصل شود که نرمافزار مطابق با استانداردهای Cloud Native توسعه مییابد.
همچنین، یک نمونه (Instance) از ابزار Keycloak بهصورت کانتینر Docker با رعایت دقیق استانداردهای امنیتی (شامل پشتیبانی از HTTPS/SSL) استقرار یابد و اطلاعات لازم برای اتصال به آن در اختیار تیمهای توسعه قرار گیرد.
خروجی
در این بخش، پایپلاینهای CI/CD باید با همکاری تیمهای توسعه طراحی و پیادهسازی شوند تا بهصورت خودکار کدها را build و تست کرده سپس ایمیجهای Docker ساختهشده را در رجیستری منتشر کنند.
همچنین منیفستهای Kubernetes مورد نیاز برای استقرار ایمیجهای هر تیم توسعه داده شوند.
یک نمونه از ابزار Keycloak نیز مستقر گردد و دسترسیهای آن بهگونهای پیکربندی شود که تیمهای توسعه بتوانند در محیط Test بدون ایجاد اختلال در محیط عملیاتی (Production) خود یا سایر تیمها، به توسعه و تست بپردازند.