DevSecOps چیست؟
DevSecOps مخفف توسعه(development)، امنیت(security) و عملیات(operations) است. در واقع رویکردی به فرهنگ، اتوماسیون و طراحی پلتفرم است که امنیت را به عنوان یک مسئولیت مشترک در کل چرخه عمر فناوری اطلاعات یکپارچه میکند.
DevSecOps چیست؟
DevSecOps گونهای از DevOps است که ارزیابیهای امنیتی را در تمام مراحل توسعه و عملیات نرمافزار تزریق میکند. این رویکرد برای ساختن و پشتیبانی از نرم افزار، همکاری میان تیم های مختلف که برنامه ها را ایجاد، ایمن و نگهداری می کنند، ارتقا می دهد. با DevSecOps، نگرانیهای امنیتی بهطور پیوسته با ایجاد، استقرار و بهروزرسانی برنامهها مورد ارزیابی و بررسی قرار میگیرند. این ایده در تصویر زیر نشان داده شده است.
DevSecOps چه مشکلاتی را حل می کند؟
ایده DevSecOps در پاسخ به مشکلاتی که برخی از سازمانها در اجرای اولیه رویههای DevOps مشاهده میکردند، به وجود آمد. سازمانها در ابتدا DevOps را که بر همکاری مستمر بین تیمهای توسعه و عملیات تاکید دارد، بهعنوان یک استراتژی برای سرعت بخشیدن به چرخههای توسعه نرمافزار و بهبود کیفیت محصول اتخاذ کردند.
اما یک محدودیت کلیدی در تلاشهای اولیه DevOps این بود که آنها اغلب امنیت را به عنوان یک نگرانی در اولویت قرار نمیدادند، ذهنیتی که ادامه رویکرد قبل از DevOps بود. در اولین روزهای توسعه DevOps، امنیت برنامهها معمولا در پایان فرآیند توسعه اولیه ارزیابی میشد. درست قبل از استقرار، یک متخصص امنیتی جداگانه یا تیمی متشکل از متخصصان برای ایمن سازی نرم افزار، وارد شدند.
تیمهای DevOps که امنیت برنامه را تنها پس از توسعه ارزیابی کردند، به زودی متوجه شدند که این طراحی فرآیند، دارای نقص است. اول، زمانی که تیمها نقاط ضعف امنیتی را کشف کردند که میخواستند آنها را برطرف کنند، انجام این کار معمولا نیاز به کار مجدد کد بیشتری از آنچه که اگر آسیبپذیریها قبلا کشف شده بود، داشت. اما بدتر از آن، در این چارچوب، فشارهای بودجه و ضرب الاجل به طور طبیعی تیمها را وادار کرد تا امنیت را به صورت سطحی یا فرمالیته در نظر بگیرند و تنها با یک بررسی امنیتی ساده قبل از استقرار، آسیب پذیریهای برنامه به احتمال زیاد ناشناخته میماند و مشتریان یا خود سازمان را در معرض تهدید قرار میداد.
این چالشهای داخلی برای رسیدگی به آسیبپذیریهای امنیتی در اواخر فرآیند نیز با تغییرات در چشمانداز امنیتی ترکیب شد. برای شروع، تهدیدات امنیتی رایجتر و پیچیدهتر شدند. اما محیطهای نرمافزاری نیز پیچیدهتر شدند و در نتیجه، سطح حمله بزرگتری برای این تهدیدات رو به رشد ایجاد کردند. به عنوان مثال، از دهه 2000، سازمانها شروع به انتقال اپلیکیشنهااز مراکز داده در محل به محیط های عمومی، هیبرید و چند ابری کردند. علاوه بر این مهاجرت ابری، تیمهای توسعه شروع به پذیرش تعداد فزایندهای از زبانهای کدنویسی و کتابخانههای متنباز برگرفته از منابع مختلف کردند. همه این تغییرات باعث افزایش تعداد بردارهای حمله بدافزار شد و رویکرد سنتی «امنیت به عنوان تفکر بعدی» را خطرناک تر از همیشه کرد.
مقایسه DevSecOps با DevOps
DevOps فقط مربوط به تیمهای توسعه و عملیات نیست. اگر میخواهید از چابکی و پاسخگویی رویکرد DevOps نهایت استفاده را ببرید، امنیت فناوری اطلاعات نیز باید نقش یکپارچه را در چرخه عمر کامل برنامههای شما ایفا کند.
در گذشته، نقش امنیت به یک تیم خاص در مرحله نهایی توسعه، واگذار میشد. زمانی که چرخههای توسعه ماهها یا حتی سالها طول میکشید، این مسئله چندان مشکلساز نبود، اما آن روزها به پایان رسیدهاند. DevOps موثر چرخههای توسعه سریع و مکرر را تضمین میکند (گاهی اوقات هفته ها یا روزها)، اما شیوههای امنیتی قدیمی میتوانند حتی کارآمدترین طرحهای DevOps را خنثی کنند.
اکنون، در چارچوب DevOps، امنیت یک مسئولیت مشترک است که به صورت end to end یکپارچه شده است. این یک طرز فکر بسیار مهم است که باعث شد برخی اصطلاح DevSecOps را برای تاکید بر نیاز به ایجاد یک پایه امنیتی در ابتکارات DevOps ایجاد کنند.
DevSecOps یعنی از همان ابتدا به امنیت برنامه و زیرساخت فکر کنید. همچنین به معنای خودکار کردن برخی از گیتهای امنیتی برای جلوگیری از کند شدن گردش کار DevOps است. انتخاب ابزار مناسب برای ادغام مداوم امنیت، مانند توافق بر روی یک محیط توسعه یکپارچه (IDE) با ویژگیهای امنیتی، میتواند به تحقق این اهداف کمک کند. با این حال، امنیت موثر DevOps به چیزی بیش از ابزارهای جدید نیاز دارد، این امنیت بر اساس تغییرات فرهنگی DevOps است تا کار تیمهای امنیتی را زودتر ادغام کند.
امنیت DevOps داخلی (built-in) است
چه آن را DevOps یا DevSecOps بنامید، همیشه ایدهآل بوده است که امنیت را به عنوان بخشی جدایی ناپذیر از کل چرخه عمر برنامه در نظر بگیرید. DevSecOps در مورد امنیت داخلی است، نه امنیتی که به عنوان محیط اطراف برنامهها و دادهپها عمل میکند. اگر امنیت در انتهای خط لوله توسعه باقی بماند، سازمانهایی که DevOps را اتخاذ میکنند میتوانند خود را به چرخههای توسعه طولانی که در وهله اول سعی داشتند از آن اجتناب کنند، بازگردند.
تا حدی، DevSecOps نیاز به دعوت از تیمها و شرکای امنیتی را در ابتدای طرحهای DevOps برای ایجاد امنیت اطلاعات و تنظیم برنامهای برای اتوماسیون امنیتی برجسته میکند. این امر بر نیاز به کمک به توسعهدهندگان برای کدنویسی با در نظر گرفتن امنیت تاکید میکند، فرآیندی که شامل تیمهای امنیتی به اشتراکگذاری قابلیت مشاهده، بازخورد و بینش در مورد تهدیدات شناخته شده - مانند تهدیدات داخلی یا بدافزارهای بالقوه - است. DevSecOps همچنین بر شناسایی خطرات زنجیره تامین نرم افزار تمرکز دارد و بر امنیت اجزای نرم افزار متنباز و وابستگیها در اوایل چرخه عمر توسعه نرم افزار تاکید دارد. برای موفقیت، یک رویکرد DevSecOps موثر میتواند شامل آموزشهای امنیتی جدید برای توسعهدهندگان هم باشد، زیرا همیشه در توسعه اپلیکیشنهای سنتی متمرکز نبوده است.
امنیت داخلی واقعا چگونه است؟ برای شروع، یک استراتژی DevSecOps خوب، تعیین میزان تحمل ریسک و انجام تجزیه و تحلیل risk/benefit است. چه مقدار از کنترلهای امنیتی در یک برنامه معین لازم است؟ سرعت بازاریابی برای اپلیکیشنهای مختلف چقدر اهمیت دارد؟ خودکارسازی وظایف تکراری کلید DevSecOps است، زیرا اجرای بررسیهای امنیتی دستی در خط لوله میتواند زمان بر باشد.
امنیت DevOps خودکار است
برای انجام چرخههای توسعه کوتاه و مکرر را حفظ کنید، اقدامات امنیتی را با کمترین اختلال در عملیات ادغام کنید، با فناوریهای نوآورانه مانند کانتینرها و میکروسرویسها همگام باشید و در عین حال همکاری نزدیکتر بین تیمهای معمولا منزوی را تقویت کنید که این امری مهم برای هر سازمانی است. همه این ابتکارات در سطح انسانی آغاز میشود اما تسهیل کننده این تغییرات انسانی در چارچوب DevSecOps اتوماسیون است.
اما چه چیزی را خودکار کنیم و چگونه؟ سازمان ها باید به عقب برگردند و کل محیط توسعه و عملیات را در نظر بگیرند. شامل مخازن کنترل سورس، رجیستری کانتینر، خط لوله یکپارچه سازی و استقرار پیوسته (CI/CD)، مدیریت رابط برنامه نویسی برنامه (API)، هماهنگ سازی و اتوماسیون انتشار، و مدیریت و نظارت عملیاتی است.
فناوریهای جدید اتوماسیون به سازمانها کمک کرده تا شیوههای توسعه چابکتری را اتخاذ کنند و همچنین در پیشبرد اقدامات امنیتی جدید نقش داشتهاند. اما اتوماسیون تنها چیزی نیست که در مورد چشمانداز فناوری اطلاعات در سالهای اخیر تغییر کرده است، تکنولوژی cloud-native مانند کانتینرها و میکروسرویسها اکنون بخش عمدهای از ابتکارات DevOps هستند و امنیت DevOps باید با آنها سازگار شود.
امنیت DevOps برای کانتینرها و میکروسرویسها ساخته شده است
مقیاس بزرگتر و توسعه و استقرار پویاتر که توسط کانتینرها فعال شده است، نحوه نوآوری بسیاری از سازمانها را تغییر داده است. به همین دلیل، شیوههای امنیتی DevOps باید با چشمانداز جدید سازگار شوند و با دستورالعملهای امنیتی خاص کانتینر هماهنگ شوند.
فناوریهای cloud-native خود را به دست سیاستها و چکلیستهای امنیتی ثابت نمیدهند. در عوض، امنیت باید در هر مرحله از چرخه عمر برنامه و زیرساخت مستمر و یکپارچه باشد.
DevSecOps به معنای ایجاد امنیت در توسعه برنامه از انتهای تا انتها است. این ادغام در خط لوله به همان اندازه که به ابزارهای جدید نیاز دارد، به یک ذهنیت سازمانی جدید نیز نیاز دارد. با در نظر گرفتن این موضوع، تیمهای DevOps باید امنیت را برای محافظت از محیط کلی و دادهها و همچنین فرآیند یکپارچهسازی/تحویل مستمر، خودکار کنند، هدفی که احتمالا شامل امنیت میکروسرویسها در کانتینرها میشود.
خرید سرور مجازی در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
امنیت محیط (environment) و داده (data)
- استانداردسازی و خودکارسازی محیط: هر سرویس باید کمترین امتیاز ممکن را برای به حداقل رساندن کانکشنها و دسترسیهای غیرمجاز داشته باشد.
- متمرکز کردن هویت کاربر و قابلیتهای کنترل دسترسی: کنترل دسترسی دقیق و مکانیسمهای احراز هویت متمرکز برای ایمنسازی میکروسرویسها ضروری هستند، زیرا احراز هویت در چندین نقطه آغاز میشود.
- جدا کردن کانتینرهایی که میکروسرویسها را از یکدیگر و از شبکه اجرا میکنند: شامل دادههای در حال انتقال و در حالت استراحت(rest data) است، زیرا هر دو میتوانند اهداف با ارزشی را برای مهاجمان نشان دهند.
- رمزگذاری دادهها بین برنامهها و سرویسها: یک پلتفرم ارکستراسیون کانتینر با ویژگیهای امنیتی یکپارچه به حداقل رساندن احتمال دسترسی غیرمجاز کمک میکند.
- درگاه های API امن را معرفی کنید: API های امن مجوز و دید مسیریابی را افزایش میدهند. با کاهش APIهای در معرض دید، سازمانها میتوانند سطوح حملات را کاهش دهند.
امنیت فرآیند CI/CD
- یکپارچه سازی اسکنرهای امنیتی برای کانتینرها: این باید بخشی از فرآیند افزودن کانتینرها به رجیستری باشد.
- تست امنیتی خودکار در فرآیند CI: شامل اجرای ابزارهای تجزیه و تحلیل استاتیک امنیتی به عنوان بخشی از ساختها، و همچنین اسکن ایمیج کانتینر از پیش ساخته شده برای آسیبپذیریهای امنیتی شناختهشده در حین pull آنها به خط لوله ساخت است.
- آزمایشهای خودکار برای قابلیتهای امنیتی را به فرآیند تست پذیرش اضافه کنید: تستهای اعتبارسنجی ورودی و همچنین ویژگیهای تایید اعتبار و مجوز را بهطور خودکار انجام دهید.
- خودکارسازی بهروزرسانیهای امنیتی، مانند وصلههای آسیبپذیری شناخته شده: این کار را از طریق خط لوله DevOps انجام دهید. این باید نیاز ادمینها را برای ورود به سیستمهای تولید حذف نماید، در حالی که یک لاگ تغییرات مستند و قابل ردیابی ایجاد میکند.
- قابلیتهای مدیریت پیکربندی سیستم و سرویس را خودکار کنید: این امر امکان انطباق با سیاستهای امنیتی و حذف خطاهای دستی را فراهم میکند. حسابرسی و اصلاح نیز باید خودکار باشد.