نرم افزار متن باز یا اپن سورس (نرمافزاری با کد منبع Source Code که هر فردی میتواند آنرا بازرسی، اصلاح و تقویت کند)، برای کسب و کارها، برنامهنویسان و توسعه دهنگان مزایای بسیاری دارد. اگرچه از معایب و ایرادهای آن نمیتوان چشمپوشی کرد. این معایب از آنجایی مهم است که اگر سورس یا کد منبع سیستم در اختیار بقیه افراد قرار میگیرد و هر شرکتی میتواند درون آن تغییرات دلخواه خود را ایجاد کند و یک نسخه از آن را بیرون بدهد.
معایب نرم افزار متن باز
نرم افزار منبع باز با وجود تمام مزایایی که دارد، برای مثال قابلیت تغییر کاربرد نرم افزار برای تطبیق بهتر با نیازهای منحصر به فرد خود با هزینه کم، بدون ضعف و ایراد نیست. چالشهایی همچون حفظ امنیت و حریم شخصی، مدیریت، سازگاری و رعایت قوانین و لایسنسها وجود دارد که باید لحاظ شود. زمانی که دارید نرم افزار اپن سورس را با انواع کد منبع Source Code درونی ترکیب میکنید یا درحال راهاندازی ابزارهای نرم افزار متن باز هستید، مهم است که به شش مشکل و چالش زمان استفاده از نرم افزار متن باز در نظر داشته باشید.
در این مقاله به شش ریسک نرم افزار اپن سورس که تیمهای توسعهدهنده در طول مسیر با آن مواجه میشوند میپردازیم:
نقاط ضعف و ریسک نرم افزار متن باز و تفاوت آن با نرم افزار انحصاری (مالکیتی)
از لحاظ امنیت، نرم افزار اوپن سورس (OSS) میتواند ضعفهایی داشته باشند. احتمال خرابی و مشاهده نقص در این کد به دلیل اینکه هرکسی میتواند آنرا خراب را اصلاح کند، ارتقا دهد و یا آزمایش کند بیشتر است. از همه مهمتر این است که این کد در دسترس عموم است و قابلیت عمومی شدن آن بیشتر است. زمانی که تقصی در نرم افزار متن باز پیدا میشود، مجرمان سایبری و کسانی که به دنبال فرصتی برای سوء استفاده از این شرکتها و کسانی که از آن استفاده میکنند هستند.
این آسیبپذیریها و نقاط ضعف معمولا با نرمافزار مالکیتی یا نرمافزار انحصاری (Proprietary software) کمتر دیده میشود، این کد که برای عموم آزاد است و فرق آن با نرم افزار متن باز این است که معمولا تا وقتی که مشکلات حل نشوند، هیچ اطلاعاتی درباره ضعفهای درون نرم افزار به اشتراک نمیگذارد.
با ابزاری مانند Software Composition Analysis (SCA)، میتوان به طور اتوماتیک کدها را اسکن، اجزای مختلف منبع باز پروژه را برسی، آسیبپذیریها و نقاط ضعف احتمالی در اجزای نرم افزار متن باز را مشخص و کد منبع Source Code را اصلاح کرد. این ابزار میتواند مشکلات مربوط به امنیت، مجوزها و کیفیت کد را مشخص کند. حتی اگر مشکلات برطرف نشدند، SCA مانع استفاده حداکثری شما از نرمافزار اپن سورس بشوند.
کیفیت پشتیبانی و به روز رسانی نرم افزار متن باز
در نرم افزار کلوز سورس (کد منبع آن برای کاربران عادی قابل مشاهده نیست) ، مسئولیت مدیریت، به روز رسانی و درست کردن و حل مسائل تنها بر دوش شرکتهای توسعه دهنده آن میافتد. این میتواند برای تیمهای توسعه دهنده که زمان، منابع یا تخصصی راجب چگونه انجام این عمل ندارند سودبخش باشد. اگر چه بعضی پلتفرمها و ابزار نرم افزار منبع باز هم چنین پشتیبانیای از این انجمنها دریافت میکنند مانند کوبرنتیز Kubernetes.
معمولا پشتیبانی نرم افزار متن باز توسط انجمنهایی که آنرا راهاندازی میکنند انجام میشود و کار آن به روز رسانی و به روز نگه داشتن آن است. اگر در این کار ناکام بمانند، ممکن است از کد قدیمی و منقضی شده استفاده کنند که احتمالا شامل باگها و آسیبهای امنیتی است. اگر هیچ سیستم متمرکز Centralized System (سیستمی که یک نقطه مرکزی قدرت تصمیمات را تصویب و اجرا میکند) یا پروسه به روز رسانی اتوماسیون شده وجود نداشته باشد، این چالش بسیار سختتر میشود. زیرا این دو به مدیریت و به روز رسانی اجزای نرم افزار متن باز کمک میکنند؛ به این معنی است که این مسئولیت آن بر عهده شرکت یا فردی است که از آن دارد استفاده میکند.
از طرف دیگر با استفاده از نرم افزار انحصاری، این به روز رسانیها و مدیریت کردن به دست شرکت تولید کننده نرم افزار میافتد. ابزار اس سی ای (SCA) برای شرکتهایی که از نرم افزار متن باز استفاده میکنند بسیار مهم است. از آنجایی که این ابزار قابلیت به روز رسانی اتوماتیک را ندارد، اما کمک میکند تا نسخه حال حاضر و اجزای نرم افزار متن باز را رهگیری کند. آنجا است که تیمهای توسعه دهنده نرم افزاری میتوانند آن اجرا، نظارت و آپدیتشان کنند.
باگ و مشکلات امنیتی در نرم افزار متن باز
کدهای اپن سورس برخی اوقات میتوانند شامل باگ یا ایرادات امنیتی باشند، اما اینها معمولا مشکلاتی هستند که ناخواسته توسط برنامه نویسان بوجود آمدهاند. با این وجود، همیشه ریسکی وجود دارد که مجرمان سایبری و افراد سود جو از آن سوء استفاده و تخریب یا خسارتهایی ایجاد کنند. برای مثال، آنها ممکن است کدی بنویسند که دادهها و اطلاعات حساس را بدزدند و از طریق پلتفورمهای اپن سورس آن را به اشتراک بگذارد. برای مقابله با آن، مهم است که به کد اپن سورس سریع اعتماد نکنیم.
همچنین بهتر است که از نویسندگان اصلی برنامه و برنامه نویسان ناشناس کد اپن سورس نگیریم. کد گرفته شده از مخازن معروفی مانند گیت هاب GitHub معمولا امن است، اما از دانلود کد از انوع سایتها یا مخازنی که به جای معتبری مربوط نمیشوند باید تا حد امکان خودداری کرد.
بخوانید: گیتآپس GitOps چیست و چگونه کار میکند؟
اشتراک گذاری، تغییر و اصلاح کد اپن سورس
زمانی که برنامه نویسان از نرم افزار متن باز استفاده میکنند، شاید از کدهایی که خودشان نیز نوشتهاند را به کد اپن سورس اضافه کنند. برای مثال آنها میخواهند به نحوی که آن کد بیشتر به کارشان میآید، کد منبع باز را تغییر و ارتقا دهند. آنها همچنین میتوانند کد خود را با برنامه نویسان و سازندههای کد اصلی به اشتراک بگذارند.
گرچه ریسکیهایی در این کار وجود دارد، بعضی اوقات ممکن است تیمهای نرم افزار و برنامهنویسان، به طور تصادفی کدهای حیاتی خود را برای مخازن عمومی به اشتراک میگذارند و آپلود میکنند. این موضوع زمانی رخ میدهد که آنها بخش زیادی از کد خود یا حتی چیزهایی به سادگی کامنتهای داخل کد که شامل اطلاعات شخصی و انحصاری درباره کارشان است را به به اشتراک میگذارند.
برای جلوگیری و کاهش احتمال رخداد چنین مشکلاتی، ایجاد کردن قوانین کنترل کننده که زمان و چگونگی اشتراک کد متن باز را به برنامه نویسان مطلع کند بسیار کارآمد است. این قوانین باید شامل اسکن کردن نرم افزار متن باز جهت چک کردن امنیت قبل عمومی کردن آن میشود. به طوری که هیچ کد و اطلاعات حساسی به طور تصادفی به اشتراک گذاشته نشود.
رعایت لایسنسها (مجوزها)، ریسک و چالشی بزرگ
لایسنسهای زیادی وجود دارند، که هر کدام مفهوم، قوانین و نیازهای متفاوتی دارند. بعضی نیاز به اجازه و اعطای پول یا بهای کد به نویسنده و برنامه نویسان اصلی دارند. مهم این است که قوانین و لایسنس در رابطه با کدی که از آن استفاده میکنیم را متوجه شویم و به آن عمل کنیم.اگرچه این کار میتواند سخت و چالش برانگیز باشد، زیرا تعداد بیشماری مجوز استفاده از کد اپن سورس وجود دارد و هرکدام برای رعایت نیازهای متفاوتی دارند.
علاوه بر آن، برنامه نویسان شاید در فهم آنها تخصص کافی نداشته باشند. شاید با این تفکر که درحال رعایت کردن قوانین و استفاده درست از کدهای اپن سورس هستند، این مجوزها را نقض کنند. برای حل این مشکل، برنامه نویسان باید انواع لایسنسها، پیچیدگی و مفهوم آنها را یاد بگیرند و متوجه شوند.
همچنین راه دیگر این است که یک ارتباط قوی میان تیم توسعه دهنده و افرادی که اطلاعات کافی از قوانین و مقررات آگاهاند وجود داشته باشد. تخصص این افراد برای شفافسازی مجوزها و قوانین بسیار مهم است.
برقراری قوانین نرم افزار منبع باز و شرایط آن
بسیاری از موسسات برای برقراری و رعایت قوانین موجود جهت استفاده از کد اپن سورس دست و پا میزنند. اگر به اختیار خود رها شوند، بدون اجرای این قوانین، برنامه نویسان از روشهای مختلفی استفاده میکنند که شاید روشهای قابل قبولی نباشند و مطابق استانداردها عمل نکنند.
یک راهی که این مشکل را حل کند این است که قوانین نرم افزار متن باز را جزو قوانین ثابت در نظر بگیریم. یعنی شرایطی برای استفاده از اپن سورس بگذاریم. برای مثال:
- هر چند وقت یکبار میتوانند کدشان را برای شناسایی اجزای نرم افزار متن باز اسکن کنند و اطمینان حاصل کنند که به روز رسانی شدهاند.
- آیا برنامه نویسان میتوانند هر کد متن بازی را که میخواهند استفاده کنند. یا تنها باید از کدهایی استفاده کنند که توسط لایسنسها یا مجوزهای خاص کنترل شده است.
هر قانونی که گذاشته میشود، مهمترین نکنه این است که این قوانین در سراسر یک موسسه اجرا شود. این موجب این میشود که کد اپن سورس مدیریت شده باشند تا امنیت و حریم شخصی حفظ شود.