أساسيات DevSecOps
بنية خط أنابيب DevSecOps
3 دقيقة للقراءة
خط أنابيب DevSecOps يدمج فحوصات الأمان في كل مرحلة—من إرسال الكود إلى مراقبة الإنتاج. هذا الدرس يرسم البنية الكاملة.
خط الأنابيب الكامل
┌─────────────────────────────────────────────────────────────────────┐
│ خط أنابيب DevSecOps │
├────────┬────────┬────────┬────────┬────────┬────────┬──────────────┤
│ تخطيط │ كود │ بناء │ اختبار │ إصدار │ نشر │ تشغيل │
├────────┼────────┼────────┼────────┼────────┼────────┼──────────────┤
│نمذجة │خطافات │SAST │DAST │توقيع │تدقيق │حماية وقت │
│التهديد │ما قبل │SCA │IAST │الصور │التكوين │التشغيل │
│ │الإرسال │الرخص │اختراق │ │التحقق │SIEM │
│ │أمان IDE│ │ │ │الأسرار │المراقبة │
└────────┴────────┴────────┴────────┴────────┴────────┴──────────────┘
الأمان مرحلة بمرحلة
1. مرحلة التخطيط
الأمان يبدأ قبل كتابة الكود:
- نمذجة التهديدات: تحديد أسطح الهجوم (أطر STRIDE، PASTA)
- متطلبات الأمان: تحديد معايير قبول الأمان
- مراجعة البنية: التحقق من قرارات التصميم
2. مرحلة الكود
الأمان أثناء كتابة المطورين للكود:
# تكوين خطافات ما قبل الإرسال
# .pre-commit-config.yaml
repos:
- repo: https://github.com/Yelp/detect-secrets
rev: v1.4.0
hooks:
- id: detect-secrets
- repo: https://github.com/hadolint/hadolint
rev: v2.12.0
hooks:
- id: hadolint
الأدوات: detect-secrets، git-secrets، Semgrep، SonarLint
3. مرحلة البناء
الأمان أثناء التجميع والتغليف:
# GitHub Actions - بناء مع الأمان
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# SAST - التحليل الثابت
- name: Run Semgrep
uses: returntocorp/semgrep-action@v1
with:
config: p/security-audit p/secrets
# SCA - فحص التبعيات
- name: Run Snyk
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
# بناء الأرتيفاكت
- name: Build
run: npm run build
الأدوات: Semgrep، CodeQL، Snyk، Trivy، OWASP Dependency-Check
4. مرحلة الاختبار
اختبار الأمان الديناميكي:
# DAST في بيئة الاختبار
dast:
runs-on: ubuntu-latest
needs: deploy-staging
steps:
- name: OWASP ZAP Scan
uses: zaproxy/action-baseline@v0.10.0
with:
target: 'https://staging.example.com'
rules_file_name: '.zap/rules.tsv'
الأدوات: OWASP ZAP، Nuclei، Burp Suite، OWASP Juice Shop (للتدريب)
5. مرحلة الإصدار
الأمان قبل الإنتاج:
# توقيع صور الحاويات
release:
steps:
- name: Sign Image with Cosign
run: |
cosign sign --key cosign.key \
${{ env.REGISTRY }}/${{ env.IMAGE }}:${{ env.TAG }}
- name: Verify Image
run: |
cosign verify --key cosign.pub \
${{ env.REGISTRY }}/${{ env.IMAGE }}:${{ env.TAG }}
الأدوات: Cosign، Notary، Harbor (سجل مع الفحص)
6. مرحلة النشر
الأمان أثناء النشر:
# التحكم في قبول Kubernetes
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: security-webhook
webhooks:
- name: validate.security.io
rules:
- operations: ["CREATE", "UPDATE"]
resources: ["pods", "deployments"]
الأدوات: OPA Gatekeeper، Kyverno، Vault (حقن الأسرار)
7. مرحلة التشغيل
مراقبة الأمان المستمرة:
# قواعد أمان Falco لوقت التشغيل
- rule: Detect Crypto Mining
condition: >
spawned_process and
proc.name in (crypto_mining_binaries)
output: "Crypto mining detected (user=%user.name command=%proc.cmdline)"
priority: CRITICAL
الأدوات: Falco، Sysdig، Datadog Security Monitoring
بوابات الأمان: معايير النجاح/الفشل
# مثال على تكوين بوابات الأمان
security-gates:
sast:
critical: 0 # صفر حرج = يجب النجاح
high: 5 # حد أقصى 5 عالية الخطورة
block_on_fail: true
sca:
critical: 0
high: 10
license_block: ["GPL-3.0", "AGPL"] # حظر copyleft
dast:
critical: 0
high: 3
block_on_fail: true
secrets:
detected: 0 # صفر أسرار مسموح بها
block_on_fail: true
حلقات التغذية الراجعة
أسرع تغذية راجعة تفوز:
| المرحلة | وقت التغذية الراجعة | إجراء المطور |
|---|---|---|
| بيئة التطوير | فوري | الإصلاح أثناء البرمجة |
| ما قبل الإرسال | ثوانٍ | الإصلاح قبل الإرسال |
| فحوصات PR | دقائق | الإصلاح قبل الدمج |
| فحص ليلي | ساعات | الإصلاح في اليوم التالي |
| اختبار الاختراق | أسابيع | الإصلاح في النهاية |
في الوحدة التالية، سنتعمق في SAST—خط الدفاع الآلي الأول. :::