أمان التطبيقات

DevSecOps وأمان CI/CD

4 دقيقة للقراءة

يدمج DevSecOps الأمان في كل مرحلة من مراحل تطوير البرمجيات. يغطي هذا الدرس ممارسات وأدوات أمان خط الأنابيب التي ستناقشها في المقابلات.

نهج التحول لليسار

الأمان التقليدي:                         أمان التحول لليسار:

التصميم → التطوير → الاختبار → النشر → الأمان    الأمان → التصميم → التطوير → الاختبار → النشر
              ↑                           |              ↓           ↓        ↓          ↓
              └──── إصلاحات مكلفة ────────┘       اكتشاف مبكر عبر خط الأنابيب

تكلفة إصلاح الأخطاء حسب المرحلة

المرحلةالتكلفة النسبيةمثال
التصميم1xنمذجة التهديدات تحدد الخلل
التطوير5xمراجعة الكود تلتقط المشكلة
الاختبار10xDAST يجد الثغرة
الإنتاج100xالاستجابة للاختراق والمعالجة

⚠ Prices change frequently. The values above are for illustration only and may be out of date. Always verify current pricing directly with the provider before making cost decisions: Anthropic · OpenAI · Google Gemini · Google Vertex AI · AWS Bedrock · Azure OpenAI · Mistral · Cohere · Together AI · DeepSeek · Groq · Fireworks AI · Perplexity · xAI · Cursor · GitHub Copilot · Windsurf.

خط أنابيب CI/CD آمن

# .github/workflows/security.yaml
name: Security Pipeline

on: [push, pull_request]

jobs:
  security-scan:
    runs-on: ubuntu-latest
    steps:
      # 1. فحص الأسرار
      - name: Secret Detection
        uses: trufflesecurity/trufflehog@main
        with:
          path: ./
          base: ${{ github.event.repository.default_branch }}

      # 2. SAST - التحليل الثابت
      - name: Run Semgrep
        uses: returntocorp/semgrep-action@v1
        with:
          config: >-
            p/security-audit
            p/owasp-top-ten

      # 3. SCA - فحص التبعيات
      - name: Dependency Check
        uses: snyk/actions/node@master
        with:
          args: --severity-threshold=high

      # 4. فحص الحاويات
      - name: Scan Docker Image
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: '${{ github.repository }}:${{ github.sha }}'
          severity: 'CRITICAL,HIGH'

      # 5. البنية التحتية ككود
      - name: Terraform Security
        uses: aquasecurity/tfsec-action@v1.0.0

بوابات الأمان

إيقاف البناء

# security_gate.py - تطبيق أمان CI/CD

class SecurityGate:
    def __init__(self, config):
        self.severity_threshold = config.get('severity_threshold', 'HIGH')
        self.max_vulnerabilities = config.get('max_vulnerabilities', 0)

    def evaluate(self, scan_results):
        critical = scan_results.get('critical', 0)
        high = scan_results.get('high', 0)

        # دائماً افشل عند النتائج الحرجة
        if critical > 0:
            return {
                'pass': False,
                'reason': f'{critical} critical vulnerabilities found'
            }

        # عتبة قابلة للتكوين للشدة العالية
        if self.severity_threshold == 'HIGH' and high > self.max_vulnerabilities:
            return {
                'pass': False,
                'reason': f'{high} high severity issues exceed threshold'
            }

        return {'pass': True, 'reason': 'Security checks passed'}

إدارة الأسرار

ما لا يجب فعله

# لا تفعل هذا أبداً
env:
  DATABASE_URL: "postgres://admin:password123@db.example.com/prod"
  API_KEY: "sk-live-abc123xyz789"

التعامل الآمن مع الأسرار

# GitHub Actions مع الأسرار
jobs:
  deploy:
    steps:
      - name: Configure AWS
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}

      - name: Get Secrets
        uses: aws-actions/aws-secretsmanager-get-secrets@v2
        with:
          secret-ids: |
            DB_CREDENTIALS,prod/database
            API_KEYS,prod/api-keys

سؤال المقابلة

س: "كيف ستتعامل مع الأسرار في خط أنابيب CI/CD؟"

الإجابة:

  1. لا تلتزم الأسرار أبداً - استخدم .gitignore، خطافات pre-commit
  2. استخدم مديري الأسرار - AWS Secrets Manager، HashiCorp Vault، GitHub Secrets
  3. قم بالتدوير بانتظام - تدوير آلي مع الإصدارات
  4. راقب الوصول - سجل من يصل للأسرار، متى
  5. أقل الصلاحيات - احقن فقط الأسرار المطلوبة لكل وظيفة
  6. افحص التسريبات - TruffleHog، GitLeaks في pre-commit

أمان الحاويات

أفضل ممارسات Dockerfile

# سيء: استخدام root، صورة كبيرة، لا فحص
FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/main.py"]

# جيد: غير root، صورة صغيرة، إصدارات مثبتة
FROM python:3.12-slim-bookworm AS builder

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

FROM gcr.io/distroless/python3-debian12
COPY --from=builder /app /app
COPY --chown=nonroot:nonroot . /app

USER nonroot
ENTRYPOINT ["python", "/app/main.py"]

خط أنابيب فحص الحاويات

- name: Build and Scan
  run: |
    docker build -t myapp:${{ github.sha }} .

    # فحص الثغرات
    trivy image --exit-code 1 --severity HIGH,CRITICAL myapp:${{ github.sha }}

    # فحص الأسرار
    docker run --rm -v $(pwd):/path trufflehog filesystem /path

    # التحقق من الصورة الأساسية
    docker run --rm aquasec/trivy image python:3.12-slim

أمان البنية التحتية ككود

فحص أمان Terraform

# سيء: دلو S3 متساهل جداً
resource "aws_s3_bucket" "data" {
  bucket = "company-data"
  acl    = "public-read"  # tfsec سيعلم هذا
}

# جيد: دلو خاص مع تشفير
resource "aws_s3_bucket" "data" {
  bucket = "company-data"
}

resource "aws_s3_bucket_public_access_block" "data" {
  bucket = aws_s3_bucket.data.id

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

resource "aws_s3_bucket_server_side_encryption_configuration" "data" {
  bucket = aws_s3_bucket.data.id

  rule {
    apply_server_side_encryption_by_default {
      sse_algorithm = "aws:kms"
    }
  }
}

مقاييس الأمان

تتبع هذه في لوحة معلومات الأمان:

المقياسالهدفلماذا يهم
متوسط وقت المعالجة (MTTR)< 7 أيام (حرج)سرعة الاستجابة
كثافة الثغرات< 1 لكل 1000 سطرجودة الكود
معدل الإيجابيات الكاذبة< 10%فعالية الأداة
معدل حظر خط الأنابيبتتبع الاتجاهثقافة الأمان
الأسرار المكتشفة0 في الإنتاجحماية البيانات

نصيحة المقابلة: أكد أن DevSecOps يتعلق بالثقافة، وليس الأدوات فقط. ناقش كيف ستبني برامج أبطال الأمان وتمكين المطورين من إصلاح المشاكل بشكل مستقل.

في الوحدة التالية، سنغطي أمان السحابة والبنية التحتية. :::

مراجعة سريعة: كيف تجد هذا الدرس؟

اختبار

الوحدة 3: أمان التطبيقات

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.