Mohammad Mahdi Behnasr
Mohammad Mahdi Behnasr
خواندن ۱۷ دقیقه·۱ سال پیش

آشنایی با DevSecOps

سلام در این قسمت میخواهیم شما را با مفهوم devSecOps آشنا کنیم در ابتدا به سراغ‌ آشنایی با devOps و
نقاط مشترک آن با devSecOps میپردازیم به وطور مثال

۱.مفاهیم مشترک

۲. اصول مشترک

۳.ابزار های مشترک

۴. در اخر نیز نمونه هایی از استفاده از devops در کمپانی های بزرگ

میپردازیم .

سپس نیازمندی هایی که باعث ایجاد devSecOps شد میپردازیم و در ادامه نیز مباحثی که در devSecOps وجود دارد را معرفی میکنیم


آشنایی با devOps :‌

دواپس DevOps (توسعه و عملیات) یک روش و فرهنگ سازمانی در حوزه فناوری اطلاعات است که هدف اصلی آند ادغام فرآیندهای توسعه نرم‌افزار (Dev) و فرآیندهای عملیاتی (Ops) است. DevOps با هماهنگی و همکاری مستمر بین تیم‌های توسعه و عملیات، روند توسعه، ارتقا و ارائه نرم‌افزار را بهبود می‌بخشد.


مفاهیم اصلی DevOps شامل موارد زیر می‌شود:

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

2. اتوماسیون: استفاده از ابزارها و روش‌های اتوماسیون برای اجرای فرآیندها و وظایف توسعه و عملیات نرم‌افزار. این شامل استقرار اتوماتیک نرم‌افزار، تست‌های اتوماتیک، مانیتورینگ و متریکس‌های خودکار و سایر فعالیت‌هایی است که می‌توانند با استفاده از ابزارها و روش‌های اتوماسیون انجام شوند.

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

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

5. زیرساخت به عنوان کد قابل اجرا: استفاده از ماشین‌های مجازی و زیرساخت به عنوان کد قابل اجرا (Infrastructure as Code) برای تسهیل و اتوماسیون عملیات مربوط به محیط‌های نرم‌افزاری. با استفاده از این روش، می‌توان زیرساخت‌ها و محیط‌های توسعه و عملیات را به صورت خودکار و قابل تکرار مدیریت کرد.

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

اصول DevOps

اصول DevOps مجموعه اصول و مفاهیمی است که در فرآیندهای توسعه و عملیات نرم‌افزار، بهبود، هماهنگی و همکاری بین تیم‌های مختلف را ترویج می‌دهد. در زیر، به توضیح اصول اساسی DevOps می‌پردازیم:

1. اتوماسیون فرآیندها (Process Automation)

2. مدیریت کد منبع (Source Code Management)

3. مانیتورینگ و متریکس (Monitoring and Metrics)

4. مدیریت تغییرات (Change Management)

5. استفاده از ماشین‌های مجازی و زیرساخت به عنوان کد قابل اجرا (Infrastructure as Code)

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

ابزارها و فناوری‌های مرتبط با DevOps

ابزارها و فناوری‌های مرتبط با DevOps به سازمان‌ها کمک می‌کنند تا فرآیندهای توسعه و عملیات نرم‌افزار را بهبود بخشند و اهداف DevOps را در دستیابی به بهره‌وری، اتوماسیون و کیفیت بالا محقق کنند. در زیر، به توضیح ابزارها و فناوری‌های مرتبط با DevOps می‌پردازیم:

1. ابزارهای مانیتورینگ و لاگ‌گیری: ابزارهای مانیتورینگ و لاگ‌گیری به سازمان‌ها کمک می‌کنند تا عملکرد سیستم‌ها و نرم‌افزارها را نظارت کنند و اطلاعات لازم را دریافت کنند. برخی از ابزارهای معروف در این حوزه شامل Prometheus، Nagios، ELK Stack (Elasticsearch, Logstash, Kibana) و Splunk می‌شوند.

2. ابزارهای مدیریت تغییرات: ابزارهای مدیریت تغییرات به سازمان‌ها کمک می‌کنند تا تغییرات در نرم‌افزار و زیرساخت‌ها را بهبود دهند و مدیریت کنند. برخی از ابزارهای معروف در این حوزه شامل Git (مانیتوریگ کد منبع)، Bitbucket، GitHub و GitLab می‌شوند.

3. ابزارهای اتوماسیون فرآیندها: ابزارهای اتوماسیون فرآیندها برای خودکارسازی و بهبود فرآیندهای توسعه و عملیات نرم‌افزار استفاده می‌شوند. این ابزارها شامل Jenkins، Travis CI، CircleCI (برای Continuous Integration/Continuous Deployment)، Ansible، Puppet، Chef (برای مدیریت کانفیگوری سرور) و Docker (برای محیط‌های اجرایی مستقل) می‌شوند.

4. ابزارهای زیرساخت به عنوان کد قابل اجرا (Infrastructure as Code): این ابزارها به سازمان‌ها کمک می‌کنند تا زیرساخت‌ها و محیط‌های توسعه و عملیات را به صورت کد قابل اجرا تعریف و مدیریت کنند. برخی از ابزارهای مشهور در این حوزه شامل Terraform، Ansible، Chef، Puppet و CloudFormation می‌شوند.

5. ابزارهای مدیریت کانفیگوری سرور: این ابزارها برای مدیریت کانفیگوری سرورها و محیط‌های توسعه و عملیات استفاده می‌شوند. این ابزارها به سازمان‌ها کمک می‌کنند تا سیستم‌های متعددی را به طور همزمان و همگام تنظیم و مدیریت کنند. برخی از ابزارهای معروف در این حوزه شامل Ansible، Puppet، Chef و SaltStack می‌شوند.

6. ابزارهای مانیتورینگ کد منبع (Source Code Management): این ابزارها به تیم‌های توسعه کمک می‌کنند تا کد منبع را به صورت مشترک مدیریت کنند و تغییرات را ردگیری کنند. این ابزارها شامل Git، Bitbucket، GitHub و GitLab می‌شوند.

7. ابزارهای تست اتوماتیک: این ابزارها به تیم‌های توسعه کمک می‌کنند تا فرآیند تست و اعتبارسنجی نرم‌افزار را به صورت اتوماتیک انجام دهند. برخی از ابزارهای معروف در این حوزه شامل Selenium، JUnit، NUnit و pytest می‌شوند.

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


آشنایی با داکر و Containerization :

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


آشنایی با ci/cd :

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

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

مراحل CI/CD عموماً شامل مراحل زیر هستند:

۱.ادغام مداوم (Continuous Integration):
ابزارها:

Git:

سیستم کنترل نسخه متن باز برای مدیریت و ردیابی تغییرات کد.


Jenkins:

یک ابزار متن باز برای اجرای خودکار فرآیند CI و ادغام تغییرات کد.
Travis CI, CircleCI: سرویس‌های CI ابری که اجرای CI را در یک زیرساخت ابری فراهم می‌کنند.

Continuous Testing (تست مداوم):


ابزارها:محیط‌های آزمون (Test Environments): شامل محیط‌های تست ایجاد شده برای اجرای خودکار آزمون و واحد، آزمون عملکرد و آزمون همگرایی.
ابزارهای تست خودکار (Automated Testing Tools): مانند Selenium، JUnit، PyTest و ...
محیط‌های شبیه‌سازی (Simulation Environments): برای آزمون و ارزیابی عملکرد در شرایط واقعی مانند بار و تحمل.

Continuous Deployment (استقرار مداوم):


ابزارها:Docker: برای ایجاد و مدیریت containerها جهت بسته‌بندی و استقرار نرم‌افزار.
Kubernetes: برای مدیریت اجرای نرم‌افز



چند مثال واقعی از استفاده از DevOps در سازمان‌ها:

1. اتوماسیون و استقرار مداوم: یکی از جوانترین مثال‌های استفاده از DevOps، شرکت فیسبوک است. فیسبوک از DevOps به منظور استقرار مداوم و اتوماسیون فرآیندهای توسعه و عملیات استفاده می‌کند. آن‌ها از ابزارهایی مانند Chef و Puppet برای مدیریت کانفیگوری سرورها، Jenkins برای استقرار مداوم و ابزارهای متریکس مانیتورینگ مانند Graphite استفاده می‌کنند.

2. سازمان‌های فناوری اطلاعاتی: سازمان‌هایی مانند Netflix، Amazon و Google نیز از DevOps برای توسعه و ارائه نرم‌افزار استفاده می‌کنند. آن‌ها از روش‌های استقرار مداوم، مانیتورینگ و متریکس، مدیریت تغییرات و مدیریت کد منبع استفاده می‌کنند. این شرکت‌ها با اتکا به DevOps توانسته‌اند نرم‌افزارهای پیچیده خود را با کیفیت و قابلیت اطمینان بالا توسعه و ارائه دهند.

3. شرکت‌های استارتاپ: استارتاپ‌های فناوری نیز از DevOps برای تسهیل فرآیندهای توسعه و عملیات استفاده می‌کنند. برای مثال، شرکت Spotify از رویکرد DevOps استفاده می‌کند تا بهبودهای مداوم در فرآیندهای توسعه و عملیات داشته باشد. آن‌ها از ابزارها و روش‌های اتوماسیون مانند Docker و Kubernetes برای مدیریت و استقرار برنامه‌ها و مدیریت تغییرات استفاده می‌کنند.

4. سازمان‌های بزرگ غیرفناوری DevOps : در سازمان‌های غیرفناوری نیز به خوبی قابل استفاده است. برای مثال، شرکت‌های خدمات مالی مانند Barclays و Capital One از DevOps برای بهبود سرعت توسعه نرم‌افزار، افزایش کیفیت و مدیریت تغییرات استفاده می‌کنند. آن‌ها از فرآیندهای استقرار مداوم، مدیریت کد منبع و روش‌های متریکس برای بهبود فرآیندهای توسعه و عملیات استفاده می‌کنند.

این تنها چند مثال از استفاده از DevOps در سازمان‌ها بودند. استفاده از DevOps در صنعت فناوری اطلاعات به صورت گسترده رایج شده است و بسیاری از سازمان‌ها در سراسر جهان از آن بهره می‌برند.

کاربردهای DevOps

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

1. تسریع فرآیند توسعه نرم‌افزارDevOps : با اتوماسیون و استقرار مداوم فرآیندهای توسعه و عملیات، بهبود قابل توجهی در سرعت توسعه نرم‌افزار و عرضه آن به مشتریان فراهم می‌کند. این کاربرد DevOps به سازمان‌ها کمک می‌کند تا بهبودهای مداوم در فرآیندهای توسعه نرم‌افزار خود ایجاد کرده و زمانی که نیاز به ارائه و به‌روزرسانی سریع نرم‌افزار دارند، تسریع و بهبود چشمگیری را تجربه کنند.

2. افزایش هماهنگی بین تیم‌های توسعه و عملیات: DevOps با ایجاد همکاری و انسجام بین تیم‌های توسعه و عملیات، بهبود هماهنگی و همکاری بین آن‌ها را بهبود می‌بخشد. این کاربرد به سازمان‌ها کمک می‌کند تا با کاهش فاصله و انشعاب بین این دو تیم، بهترین عملکرد را در فرآیندهای توسعه و عملیات نرم‌افزار داشته باشند.

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

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

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

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

مزایا

پیاده‌سازی DevOps در سازمان‌ها به مزایای و فواید بسیاری منجر می‌شود. در زیر، به توضیح این مزایا و فواید می‌پردازیم:

1. افزایش تسریع در زمان عرضه نرم‌افزار (Faster Time to Market): DevOps با استفاده از استقرار مداوم، اتوماسیون و همکاری بین تیم‌ها، سرعت توسعه و عرضه نرم‌افزار را به طور قابل توجهی افزایش می‌دهد. این به معنای کاهش زمان مورد نیاز برای ارائه و به‌روزرسانی نرم‌افزار به بازار است و سازمان را قادر می‌سازد تا به سرعت واکنش نشان دهد و نیازهای مشتریان را در زمان مناسب برآورده کند.

2. بهبود کیفیت و پایداری سیستم (Improved Quality and Stability): DevOps با استفاده از فرآیندهای مدیریت تغییرات، تست‌های اتوماتیک، مانیتورینگ و بازخورد، بهبود قابل توجهی در کیفیت و پایداری سیستم‌ها و نرم‌افزارها ایجاد می‌کند. این به معنای کاهش خطاها، اشکالات و باگ‌های نرم‌افزاری، افزایش بهره‌وری و اطمینان در عملکرد سیستم است. سازمان‌ها قادر خواهند بود نسخه‌های با کیفیت و قابل اعتمادتری از نرم‌افزارهای خود را ارائه دهند.

3. کاهش خطاها (Reduced Errors): DevOps با اتوماسیون فرآیندها، استفاده از ابزارهای مانیتورینگ و تست‌های اتوماتیک، خطاها را به حداقل می‌رساند. این به معنای کاهش خطاها در فرآیندهای توسعه و عملیات، کاهش اشتباهات انسانی، اصلاح خطاها به صورت سریع و کاهش زمان و هزینه‌های مرتبط با اشتباهات است.

4. کاهش هزینه‌های عملیاتی (Reduced Operational Costs): DevOps با استفاده از اتوماسیون فرآیندها، بهبود بهره‌وری و استفاده بهینه از منابع، کاهش هزینه‌های عملیاتی را ایجاد می‌کند. با تسهیل فرآیندهای توسعه و عملیات، سازمان‌ها قادر خواهند بود هزینه‌های مرتبط با استقرار نرم‌افزار، تست و عیب‌یابی، مانیتورینگ و پشتیبانی را به حداقل برسانند.

5. افزایش هماهنگی و همکاری (Increased Collaboration and Collaboration): DevOps با بهبود هماهنگی و همکاری بین تیم‌های توسعه و عملیات، ارتباط و اطلاعات مشترک را ترویج می‌دهد. این به معنای بهبود ارتباط و هماهنگی بین تیم‌ها، اشتراک دانش و تجربه، و تسهیل فرآیند تصمیم‌گیری و اجرا است. این همکاری بهبودی قابل توجه در بهره‌وری و کارآیی سازمان ایجاد می‌کند.

6. افزایش اطمینان (Increased Reliability): DevOps با استفاده از فرآیندهای مدیریت تغییرات، مانیتورینگ و بازخورد، به سازمان‌ها کمک می‌کند تا فرآیندهای قابل پیش‌بینی و مدیریت شده را به اجرا درآورند. این به معنای افزایش اطمینان در عملکرد سیستم‌ها، کاهش خطرات ناشی از تغییرات و قابلیت اطمینان بالاتر از نرم‌افزارها و سیستم‌ها است.

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



آشنایی با ansible :‌

در Ansible یک ابزار متن باز برای مدیریت پیکربندی و پیاده‌سازی خودکار سیستم‌ها است. این ابزار به شما اجازه می‌دهد تا به صورت مرکزی و از طریق یک نماینده (agentless)، سیستم‌ها را کنترل و پیکربندی کنید. از طریق Ansible، می‌توانید فرایندهای پیکربندی، مدیریت کاربران، نصب برنامه‌ها و اجرای دستورات را به صورت خودکار و یکپارچه انجام دهید.

مزیت‌های اصلی Ansible عبارتند از:

  1. سادگی: Ansible دارای یک رویکرد ساده و خوانا است که برای شروع سریع و استفاده آسان مناسب است. شما می‌توانید از طریق یک زبان یادگیری و فهمیدن آسان (YAML) فایل‌های پیکربندی خود را تعریف کنید.
  2. نمایندگی بدون نیاز به نصب عامل: Ansible عملکرد خود را از طریق اتصال SSH به سرورها و سیستم‌ها انجام می‌دهد، بدون نیاز به نصب و پیکربندی عامل‌های مجزا روی دستگاه‌های مقصد.
  3. قابلیت مقیاس‌پذیری: Ansible به شما امکان می‌دهد تا با استفاده از تعداد زیادی سرور و سیستم‌های هدف، فرایندهای پیکربندی و مدیریت را همزمان اجرا کنید.
  4. قابلیت توسعه: Ansible از یک API مستقیم برای توسعه ابزارهای شخصی سازی و یکپارچه سازی با سیستم‌های موجود پشتیبانی می‌کند.
  5. پشتیبانی چند پلتفرم: Ansible به صورت پیش‌فرض با اکثر سیستم‌عامل‌ها و فراهم کنندگان ابری سازگاری دارد و امکان مدیریت محیط‌های








به وجود آمدن DevSecOps

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

در این اینجا دیگر علاوه بر مواردی که در مورد devops گفته شده است به فرهنگ و چرخه توسعه دائما امنیت هم مورد توجه و بررسی قرار گرفته است .

تمرکز بر تجزیه و تحلیل امنیتی خودکار در برابر مصنوع خروجی ساخت

زیرا در دنیای حال حاظر امنیت اطلاعات و ... حرف اول و اعتماد کاربران را به همراه دارد و یکی از شاخصه های اصلی شرکت های های تک میباشد

حال شاید سوال پیش بیاید که DevSecOps چه چیز هایی مورد بررسی میشود که در زیر به طور خلاصه با ابزار و مراحلی که معمولا در DevSecOps وجود دارد آشنا میشویم

هریک از عناوینی که در پایین شرح داده میشود میشود به عنوان یکی از pipline ها و مراحل موجود اضافه کرد :‌



بررسی dependency های موجود در اپلیکیشن ها :

در مراحل CI باید تمامی dependency های موجود در برنامه با ابزار های مناسب جهت بررسی مشکلات های امنیت به صورت اتومات مورد بررسی قرار بگیرند به طور مثال در سایتی
(Common Vulnerabilities and Exposures) CVE های مربوط به مشکلات پکیج هارا با سطح جدیت مشکل را تعریف میکند و با کمک ابزار میشود از بروز مشکلات منتشر شده و تطابق آن با اپلیکشن خودمان از وقوع رخداد های امنیتی جلوگیری کنیم

به طور مثال Dependency Check یک ابزار SCA یا همان Software Composition Analysis می‌باشد که تلاش می‌کند آسیب پذیری‌های افشا شده و عمومی موجود در dependency های یک پروژه را شناسایی نماید.

  • بررسی Dependency Check اپلیکیشن
  • ارائه گزارش مربوطه بر روی سرور تحت وب



ارائه گزارش Docker Image Scan , Docker OPA Confetst

همچنین باید باید به صورت مداوم در CI ابزار های زیرساختی نیز مورد بررسی و ارزیابی از نظر امنیتی قرار بگیرند

به طور مثال :‌

در فرآیند Pipeline یک step جهت انجام Docker Image Scan , Docker OPA Confetst توسط ابزارهای مربوطه انجام می شود که در نهایت با این کار امن سازی در لایه Docker Image ها و اعمال پالسی های امنیتی بر روی Docker File ها انجام خواهد شد.

  • بررسی آسیب پذیری های در سطح Docker Image
  • اعمال پالیسی های امنیتی بر روی Docker File ها
  • بررسی لایه های موجود در image ها و رخداد های امنیتی آن ها






امن سازی Kubernetes و هاردنینگ سیستم ها و ارائه گرازش و بررسی امنیتی آن ها :

علاوه بر امن سازی در سطح داکر و کانتیر باید در سطح kubernetes و حتی در سطح سیستم عامل چک های امنیتی را پاس کند

در فرآیند Pipeline یک step جهت انجام Kubernetes OPA Conftest , Kubernetes Manifest Scan توسط ابزارهای مربوطه انجام می شود که در نهایت با این کار امن سازی در سطح فایل های Manifest کوبر و اعمال پالیسی های امنیتی بر روی فایل های Manifest کوبر انجام خواهد شد.

  • بررسی آسیب پذیری ها در سطح Kubernetes Manifest
  • اعمال policies های امنیتی بر روی Kubernetes Manifest فایل ها

در فرآیند Pipeline یک step جهت انجام Kubernetes OPA Conftest , Kubernetes Manifest Scan توسط ابزارهای مربوطه انجام می شود که در نهایت با این کار امن سازی در سطح فایل های Manifest کوبر و اعمال پالیسی های امنیتی بر روی فایل های Manifest کوبر انجام خواهد شد.

  • بررسی آسیب پذیری ها در سطح Kubernetes Manifest
  • اعمال policies های امنیتی بر روی Kubernetes Manifest فایل ها



تست استاتیک و داینامیک امنیتی اپلیکیشن ها :‌

SAST :

تست استاتیک امنیت اپلیکیشن (SAST) روشی است که با توجه به الگو‌های آسیب‌پذیری در سطح سورس کد پویش و آسیب‌پذیری‌های موجود را پیدا می‌نماید.

DAST :

تست پویای امنیت نرم افزار (DAST) در حالت کلی برای تشخیص شرایط حاکی از وجود آسیب پذیری امنیتی در یک برنامه در حال اجرا، به طور خاصی طراحی شده است. یکی از رایج ترین روش های کلاسیک برای هک که توسط هکرها مورد استفاده قرار میگیرد، حمله مردی در میان (MiTM) است.





  • پیاده سازی vault جهت نگه داری secrets و certificates :

یکی از دیگر از وضایف موجود در DevSecOps امن سازی مداوم و نگه داری به صورت امن از certificate سایت و اپلیکیشن ها به صورت اتوماتیک و همچنین نگه داری خیلی امن از رمز ها و sshkey ها میباشد که برای این مرحله نیز باید مراحلی را جهت امن سازی ایجاد کنیم که ابزار های مختلفی در این قسمت وجود دارد که بهترین آن را توضیح خواهیم داد :‌

یکی از ابزار ها HashiCorp Vault است . ابزاری اپن‌سورس به منظور ذخیره‌سازی هر نوع به اصطلاح Secret است (Secret در اینجا هر چیزی من‌جمله پسورد، سِرتیفیکیت، توکن، کلید ای‌پی‌آی و ... است.)

  • پیاده سازی ابزار Vault
  • نگه داری Secret ها و Certificate ها در ابزار Vault
  • ایجاد مانیتور های امنیتی برای بخش های دیگر


محافظت از سامانه های تحت وب توسط تجهیز امنیتی WAF و مانیتورینگ و دادن الارم ها به صورت اتوماتیک :

فایروال وب WAF یا web application firewall با نظارت بر ترافیک HTTP بین یک برنامه وب و اینترنت از برنامه‌های کاربردی وب محافظت می کند. WAF معمولا از برنامه‌های وب در برابر حملاتی مانند جعل بین سایتی، اسکریپت بین سایتی XSS، file inclusion و SQL injection و… محافظت می‌کند.

  • بررسی لاگ های امنیتی و شناسایی حملات به صورت روزانه
  • تهیه گزارش هفتگی از حملات سایبری تحت وب به صورت هفتگی
  • بررسی و تعریف Exception بعد از شناسایی لاگ های False Positive به صورت روزانه
  • تعریف Signature های سفارشی جهت جلوگیری از حملات سایبری تحت وب براساس آسیب پذیری های شناخته شده روز دنیا


البته این مورد آخر میتوان جز موارد کاری کاری DevSecOps نباشد و شرکت به شرکت میتواند متفاوت باشد




با تشکر از وقتی که گذاشتین امیدوارم مطالب مفیدی را خوانده باشید



منابع


  • https://github.com/hahwul/DevSecOps
  • https://www.sciencedirect.com/science/article/abs/pii/S0950584921001543
  • https://www.researchgate.net/publication/319633880_DevSecOps_A_Multivocal_Literature_Review
  • https://iopscience.iop.org/article/10.1088/1742-6596/1964/4/042045/meta






















devopsdevsecopssecurity
شاید از این پست‌ها خوشتان بیاید