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