دوسکاپس

DevSecOps که مخفف ترکیبی از "Development" (توسعه)، "Security" (امنیت) و "Operations" (عملیات) است. این رویکردی به فرهنگ، اتوماسیون و طراحی پلتفرم است که امنیت را به عنوان یک مسئولیت مشترک در کل چرخه حیات فناوری اطلاعات یکپارچه می‌کند.

به صورت خلاصه DevSecOps زمانی است که شما ابزارهای امنیتی را در لایف سایکل DevOps وارد می‌نمایید.

امنیت به عنوان بخشی از روند DevOps تنها راه برای کاهش خطرات است. این نقش یک نقش حیاتی حول محور تغییر و تحول فرهنگ، شیوه و ابزار امنیتی مورد استفاده تیم‌ها در فرایند‌های تولید و توسعه نرم‌افزار است که باعث از بین بردن سیلوهای میان توسعه، امنیت و تیم اجرایی می‌شود. این عملیات مجموعه ای از اصول و شیوه هایی است که به سازمان‌ها کمک می‌کند نرم افزار، زیرساخت، برنامه‌ها و داده های خود را ایمن کنند و سطح امنیتی آن ها را افزایش دهد.

تاریخچه 
در کنفرانس چابک سال ۲۰۰۸، اندرو شفر و پاتریک Debois «زیرساخت چابک» را توصیف کردند. اصطلاح DevOps از طریق یک 

سری رویداد به‌نام «DevOpsDays» در سال ۲۰۰۹ در بلژیک رایج شد. پس از آن کنفرانس‌هایی با نام DevOpsDays در بسیاری از کشورها در سراسر جهان برگزار شده‌است.

در سال‌های اخیر محبوبیت DevOps رشد کرده‌است و الهام‌بخش بسیاری از دیگر جنبش‌های موازی، از جمله OpsDev و WinOps شده‌است.

 WinOps هم مظهر همان مجموعه شیوه‌ها و تأکید بر فرهنگ DevOps است؛ اما به‌طور خاص مایکروسافت‌محور شده‌است.

همچنین در سال‌های اخیر DevSecOps، به یکی از نقش‌های مهم بسیاری از سازمان‌ها تبدیل شده و هر روزه سازمان‌های زیاد اقدام به استخدام نیروهای DevOps می‌نمایند.

چرا به DevSecOps نیاز داریم؟ 
تحقیقات سایت Forrester نشان می‌دهد که ۵۸ درصد از شرکت‌های فعال دارای نشت اطلاعات می‌باشند که عدد بسیار بزرگی است، در این میان ۴۱ درصد نیز دارای آسیب پذیری نرم افزاری می‌باشند. اشتباهاتی امنیتی که ممکن است، صدماتی غیرقابل جبران و صدها میلیون دلار به شرکت‌ها آسیب برساند.

 در طی دوسال ۸۸% آسیب پذیری نرم‌افزارها رشد داشته
 ۷۸% درصد آسیب پذیری‌ها در dependency ها یافت شده است.
 ۳۷% از توسعه‌دهندگان اوپن سورس در هنگام ادغام نرم افزارها هیچ اقدام امنیتی انجام نمی‌دهند.
 ۵۴% از توسعه‌دهندگان docker image security testing را انجام نمی‌دهند.

در شیوه قدیمی توسعه نرم‌افزار که به واترفال (آبشار) هم معروف بود، برای توسعه، تام نیازها جمع آوری می‌شدند و بر روی تک تک آن‌ها کارهای توسعه انجام می‌شد و بعد از ماه‌ها یا سال‌ها محصول مورد نظر ما عرضه می‌گشت. اما در عصر جدید و دوران DevOps اینگونه نیست، ما یک محصول را در طول یک روز صدها بار عرضه می‌نماییم و در این روند آیا تست نفوذ می‌تواند نقص امنیتی را در یک برنامه به صورت روزانه صدها بار پیدا کند؟

جواب مشخصا خیر است!

توسعه دهندگان، ادمین‌ها و معماران سیستم فکر می‌کنند زمانی که از تکنولوژی کلود(ابری) استفاده می‌کنند ارائه دهنده خدمات ابری حواسش به بحث امنیتت هست و دیگر نیازی به اقداماتی برای امنیت بیشتر نیست! اما این تفکر یک اشتباه رایج است زمانی که شما بر روی کلود کار می‌کنید بسیار بیشتر در معرض خطر هستید.

امروزه امنیت یکی از فاکتورهای اساسی در هر شرکتی است و امنیت به شیوه سنتی نیز گزینه‌ای نیست که بخواهید در کنار DevOps از آن استفاده کنید. و انی جایی است که DevSecOps وارد می‌شود تا نجاتتان دهد.

زمینه استفاده 

DevOps و DevSecOps اغلب به‌گونه‌ای مورد بحث قرار می‌گیرند که گویی دو مورد کاملاً متضاد هم هستند. با این حال، بحث کمی پیچیده‌تر از این است. در واقع، این دو اصطلاح را نمی‌توان به جای هم استفاده کرد. با این حال، برخی از کارشناسان

استدلال می‌کنند که DevSecOps در برخی موارد نه تنها با DevOps سازگار است، بلکه برای بهینه تر کار کردن آن نیز ضروری است.

هدف DevSecOps یافتن راه‌حل‌های خلاقانه از طریق برداشتن موانع بین تیم‌های توسعه (که عمدتاً بر روی نرم‌افزار تمرکز می‌کنند) و

مهندسان فناوری اطلاعات (که عمدتاً بر زیرساخت‌های شبکه متمرکز هستند)، که با از بین بردن محدودیت ها کمک می‌کنند

این دو تیم به‌خوبی و با مشکل کم در بستری ایمن با هم کار کنند.

اهداف و مزایا 

هدف اصلی DevSecOps ارائه راهکارهایی برای امنیت بیشتر و در عین حال اعمال سرعت سریعتر فرآیند، دسترسی و مقیاس پذیری است و در واقع هدف ارائه راهی ایمن و مطمئن برای به اشتراک گذاشتن تصمیمات امنیتی می‌باشد که حفظ بالاترین سطح امنیت به سرعت و کیفیت نیز توجه خواهد کرد.

مزایای DevSecOps عبارتند از:

 کمک به تشخیص سریع مشکلات قبل وقوع
 کاهش ریسک و مسئولیت قانونی

 کاهش هزینه های مدیریت منابع

DevSecOps در مقابل DevOps 
DevOps فقط مربوط به تیم‌های توسعه و عملیات نیست. اگر می‌خواهید از چابکی و پاسخ‌دهی رویکرد DevOps نهایت استفاده را ببرید، امنیت فناوری اطلاعات نیز باید نقش یکپارچه را در چرخه عمر کامل برنامه‌های شما ایفا کند.

چرا؟ در گذشته، نقش امنیت به یک تیم خاص در مرحله نهایی توسعه منزوی بود. زمانی که چرخه‌های توسعه ماه‌ها یا حتی سال‌ها طول می‌کشید، این مسئله چندان مشکل‌ساز نبود، اما آن روزها به پایان رسیده‌اند. DevOps موثر چرخه‌های توسعه سریع و مکرر را تضمین می‌کند (گاهی اوقات هفته‌ها یا روزها)، اما شیوه‌های امنیتی قدیمی می‌توانند حتی کارآمدترین طرح‌های DevOps را خنثی کنند.
DevSecOps یعنی از همان ابتدا به امنیت برنامه و زیرساخت فکر کنید. همچنین به معنای خودکار کردن برخی از گیت‌های امنیتی برای جلوگیری از کند شدن جریان کاری DevOps است. انتخاب ابزارهای مناسب برای ادغام مداوم امنیت، مانند توافق بر روی یک محیط توسعه یکپارچه (IDE) با ویژگی‌های امنیتی، می تواند به تحقق این اهداف کمک کند. با این حال، امنیت DevOps مؤثر به چیزی بیش از ابزارهای جدید نیاز دارد – این امنیت مبتنی بر تغییرات فرهنگی DevOps است تا کار تیم‌های امنیتی را زودتر و زودتر یکپارچه کند.
امنیت DevOps داخلی است.

چه آن را «DevOps» یا «DevSecOps» بنامید، گنجاندن امنیت به عنوان بخشی جدایی ناپذیر از کل چرخه عمر برنامه همیشه ایده آل بوده است. DevSecOps در مورد امنیت داخلی است، نه امنیتی که به عنوان محیط اطراف برنامه‌ها و داده‌ها عمل می‌کند.
اگر امنیت در انتهای خط لوله توسعه باقی بماند، سازمان‌هایی که DevOps را اتخاذ می‌کنند می‌توانند خود را به چرخه‌های توسعه طولانی که در وهله اول سعی داشتند از آن اجتناب کنند، بازگردند.

تا حدی، DevSecOps نیاز به دعوت از تیم‌ها و شرکای امنیتی را در ابتدای طرح‌های DevOps برای ایجاد امنیت اطلاعات و تنظیم برنامه‌ای برای اتوماسیون امنیتی برجسته می‌کند. همچنین بر نیاز به کمک به توسعه‌دهندگان برای کدنویسی با در نظر گرفتن امنیت تأکید می‌کند، فرآیندی که شامل تیم‌های امنیتی به اشتراک‌گذاری قابلیت مشاهده، بازخورد و بینش در مورد تهدیدات شناخته شده است. این ممکن است شامل آموزش‌های امنیتی جدید برای توسعه‌دهندگان نیز باشد، زیرا همیشه در توسعه برنامه‌های کاربردی سنتی متمرکز نبوده است.

امنیت داخلی واقعاً چگونه است؟ برای شروع، یک استراتژی DevSecOps خوب، تعیین میزان تحمل ریسک و انجام تجزیه و تحلیل ریسک/منفعت است. چه مقدار از کنترل‌های امنیتی در یک برنامه خاص لازم است؟ سرعت بازاریابی برای اپلیکیشن‌های مختلف چقدر اهمیت دارد؟ خودکارسازی وظایف تکراری کلید DevSecOps است، زیرا اجرای بررسی‌های امنیتی دستی در خط لوله می‌تواند زمان‌بر باشد.

همچنین شما می‌توانید برای یادگیری تخصصی DevSecOps از کتاب Learning DevSecOps نیز استفاده نمائید.

امنیت DevOps خودکار است.

برای انجام: چرخه‌های توسعه کوتاه و مکرر را حفظ کنید، اقدامات امنیتی را با کمترین اختلال در عملیات ادغام کنید، با فناوری‌های نوآورانه مانند کانتینرها و ریزسرویس‌ها همگام باشید، و در عین حال همکاری نزدیک‌تر بین تیم‌های معمولاً منزوی را تقویت کنید – این امری مهم برای هر سازمانی است. همه این ابتکارات در سطح انسانی شروع می‌شوند – با نکات و نکات همکاری در سازمان شما – اما تسهیل کننده این تغییرات انسانی در چارچوب DevSecOps اتوماسیون است.

اما چه چیزی را خودکار کنیم و چگونه؟ راهنمایی کتبی برای کمک به پاسخ به این سوال وجود دارد. سازمان‌ها باید به عقب برگردند و کل محیط توسعه و عملیات را در نظر بگیرند. این شامل مخازن کنترل منبع، رجیستری کانتینر، خط لوله یکپارچه‌سازی و استقرار مداوم (CI/CD)، مدیریت رابط برنامه‌نویسی برنامه (API)، هماهنگ‌سازی و اتوماسیون انتشار، و مدیریت و نظارت عملیاتی است.

فن‌آوری‌های جدید اتوماسیون به سازمان‌ها کمک کرده تا شیوه‌های توسعه چابک‌تری را اتخاذ کنند و همچنین در پیشبرد اقدامات امنیتی جدید نقش داشته‌اند. اما اتوماسیون تنها چیزی نیست که در مورد چشم‌انداز فناوری اطلاعات در سال‌های اخیر تغییر کرده است – فناوری‌های بومی ابری مانند کانتینرها و میکروسرویس‌ها اکنون بخش عمده‌ای از ابتکارات DevOps هستند و امنیت DevOps باید با آن‌ها سازگار شود.

امنیت DevOps برای کانتینرها و میکروسرویس‌ها ساخته شده است.

مقیاس بزرگتر و زیرساخت پویاتر که توسط کانتینرها فعال شده است، نحوه انجام تجارت بسیاری از سازمانها را تغییر داده است. به همین دلیل، شیوه‌های امنیتی DevOps باید با چشم‌انداز جدید سازگار شوند و با دستورالعمل‌های امنیتی خاص کانتینر هماهنگ شوند.

فناوری‌های بومی ابری خود را به سیاست‌ها و چک لیست‌های امنیتی ثابت نمی‌دهند. بلکه امنیت باید در هر مرحله از چرخه عمر برنامه و زیرساخت مستمر و یکپارچه باشد.

DevSecOps به معنای ایجاد امنیت در توسعه برنامه از انتهای به انتها است. این ادغام در خط لوله به همان اندازه که به ابزارهای جدید نیاز دارد، به یک ذهنیت سازمانی جدید نیز نیاز دارد. با در نظر گرفتن این موضوع، تیم‌های DevOps باید امنیت را برای محافظت از محیط کلی و داده‌ها، و همچنین فرآیند یکپارچه‌سازی/تحویل مستمر، خودکار کنند – هدفی که احتمالاً شامل امنیت میکروسرویس‌ها در کانتینرها می‌شود.

ابزارهای DevSecOps چیست؟ 

برای اجرا کردن DevSecOps شما نیاز به بسیاری از استک‌های تکنولوژی با تعدا زیادی راه حل دارید تا بتوانید به صورت موفق و بدون ایجاد ریسک امنیتی DevSecOps  را اجرا نمایید در زیر تعداد از ابزارهای DevSecOps  آورده شده است:

 SonarQube: برای بازرسی کیفیت کد استفاده می شود. بازخورد مداوم در مورد کیفیت نرم افزار را فراهم می‌کند.
 ThreatModeler: تهدیدات امنیتی را پیش بینی، شناسایی، تعریف می‌کند و به شما در صرفه جویی در وقت و هزینه کمک می‌کند.
 Aqua Security:  کل چرخه حیات برنامه را ایمن می‌کند.
 Fortify: امنیت برنامه را به عنوان یک سرویس فراهم می کند. به طور عمده در شرکت ها برای توسعه امن، آزمایش امنیت و نظارت و محافظت مداوم استفاده می‌شود.
 HashiCorp Vault: رمزهای عبور، کلیدهای API، گواهینامه‌ها را مدیریت کرده و همچنین از چنین اطلاعات حساس محافظت می‌کند.

محیط زیست و امنیت داده‌ها 
استانداردسازی و خودکارسازی محیط: هر سرویس باید کمترین امتیاز ممکن را برای به حداقل رساندن اتصالات و دسترسی‌های غیرمجاز داشته باشد.

متمرکز کردن هویت کاربر و قابلیت‌های کنترل دسترسی: کنترل دسترسی دقیق و مکانیسم‌های احراز هویت متمرکز برای ایمن‌سازی ریزسرویس‌ها ضروری هستند، زیرا احراز هویت در چندین نقطه آغاز می‌شود.

جداسازی کانتینرهایی که ریزسرویس‌ها را از یکدیگر و شبکه اجرا می‌کنند: این شامل داده‌های در حال انتقال و در حالت استراحت است، زیرا هر دو می‌توانند اهداف با ارزشی را برای مهاجمان نشان دهند.

رمزگذاری داده‌ها بین برنامه‌ها و سرویس‌ها: یک پلتفرم هماهنگ‌سازی کانتینر با ویژگی‌های امنیتی یکپارچه کمک می‌کند تا احتمال دسترسی غیرمجاز را به حداقل برسانید.

درگاه‌های API ایمن را معرفی کنید: API های امن مجوز و دید مسیریابی را افزایش می‌دهند. با کاهش API های در معرض خطر، سازمان‌ها می‌توانند سطوح حملات را کاهش دهند.

ci/cd و امنیت آن 
پایپ لاین CI/CD یکی از بهترین شیوه های پیاده سازی در تیم های DevOps به منظور دریافت تغییرات ایجاد شده در کد، بصورت مداوم و مطمئن و سریع است.

در CI/CD (Continuous Integration/Continuous Deployment) یک مجموعه از فرآیندها و ابزارها است که در فرآیند توسعه نرم‌افزار استفاده می‌شود تا از تکرارپذیری، اتوماسیون و سرعت بالا برخوردار شود. CI/CD با هدف ادغام و تست مستمر کدها، ایجاد و توزیع خودکار نسخه‌های نرم‌افزار و انتقال به محیط تولید به صورت مداوم، اطمینان حاصل می‌کند که تغییرات جدید به طور صحیح و بدون مشکلات با کدهای موجود ترکیب می‌شوند و به محیط تولیدی منتقل می‌شوند.

یکپارچه‌سازی اسکنرهای امنیتی برای کانتینرها: این باید بخشی از فرآیند افزودن کانتینرها به رجیستری باشد.

تست امنیتی خودکار در فرآیند CI: این شامل اجرای ابزارهای تجزیه و تحلیل استاتیک امنیتی به عنوان بخشی از ساخت‌ها، و همچنین اسکن تصاویر کانتینر از پیش ساخته شده برای آسیب‌پذیری‌های امنیتی شناخته‌شده در حین کشیدن آن‌ها به خط لوله ساخت است.

آزمایش‌های خودکار برای قابلیت‌های امنیتی را به فرآیند آزمون پذیرش اضافه کنید: تست‌های اعتبارسنجی ورودی و همچنین ویژگی‌های تأیید اعتبار و مجوز را به‌طور خودکار انجام دهید.

خودکارسازی به‌روزرسانی‌های امنیتی، مانند وصله‌های آسیب‌پذیری شناخته شده: این کار را از طریق خط لوله DevOps انجام دهید. این باید نیاز ادمین‌ها را برای ورود به سیستم‌های تولید حذف کند، در حالی که یک گزارش تغییرات مستند و قابل ردیابی ایجاد می‌کند.

قابلیت‌های مدیریت پیکربندی سیستم و سرویس را خودکار کنید: این امر امکان انطباق با سیاست‌های امنیتی و حذف خطاهای دستی را فراهم می‌کند. حسابرسی و اصلاح نیز باید خودکار باشد.

منابع