الامتثال والحوكمة ونضج DevSecOps

أتمتة الامتثال (SOC2, HIPAA, PCI-DSS)

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

الامتثال ليس مربع تأشير—إنه عملية مستمرة. DevSecOps يمكّن الامتثال المستمر من خلال أتمتة جمع الأدلة والتحقق من الضوابط ومسارات التدقيق عبر دورة حياة تطوير البرمجيات.

نظرة عامة على أطر الامتثال

الإطارالتركيزالمتطلبات الرئيسية
SOC 2منظمات الخدمةالأمان، التوفر، سلامة المعالجة، السرية، الخصوصية
HIPAAبيانات الرعاية الصحيةحماية PHI، ضوابط الوصول، سجلات التدقيق
PCI-DSSبيانات بطاقات الدفعالتشفير، التحكم في الوصول، إدارة الثغرات
ISO 27001أمان المعلوماتإدارة المخاطر، ضوابط الأمان
GDPRحماية بيانات الاتحاد الأوروبيخصوصية البيانات، الموافقة، حق المحو

هندسة الامتثال المستمر

┌─────────────────────────────────────────────────────────┐
│               خط أنابيب الامتثال المستمر                 │
├─────────────────────────────────────────────────────────┤
│                                                          │
│  الكود ──▶ البناء ──▶ الاختبار ──▶ النشر ──▶ المراقبة   │
│    │        │         │          │          │           │
│    ▼        ▼         ▼          ▼          ▼           │
│  فحص     توقيع     فحوصات    تدقيق     مراقبة          │
│  SAST    القطع     الامتثال   التكوين   وقت التشغيل    │
│    │        │         │          │          │           │
│    └────────┴─────────┴──────────┴──────────┘           │
│                       │                                  │
│                       ▼                                  │
│             جمع الأدلة                                   │
│             ومسار التدقيق                                │
│                                                          │
└─────────────────────────────────────────────────────────┘

أتمتة امتثال SOC 2

تعيين معايير خدمة الثقة

المعيارضابط DevSecOpsالأداة/التنفيذ
CC6.1 التحكم في الوصولRBAC، MFAGitHub Teams، Vault
CC6.6 التسجيلسجلات التدقيقCloudWatch، ELK
CC7.1 إدارة الثغراتالفحصSnyk، Trivy
CC7.2 إدارة التغييرمراجعة الكودGitHub PRs
CC8.1 الاستجابة للحوادثالتنبيهPagerDuty، SIEM

التحقق الآلي من الضوابط

# .github/workflows/soc2-controls.yml
name: SOC 2 Control Validation

on:
  schedule:
    - cron: '0 0 * * *'  # يومياً
  workflow_dispatch:

jobs:
  access-control-audit:
    runs-on: ubuntu-latest
    steps:
      - name: Audit GitHub Permissions
        uses: actions/github-script@v7
        with:
          script: |
            const collaborators = await github.rest.repos.listCollaborators({
              owner: context.repo.owner,
              repo: context.repo.repo
            });

            const admins = collaborators.data.filter(c =>
              c.permissions.admin
            );

            console.log(`Admin users: ${admins.length}`);

            // تنبيه إذا كان هناك مسؤولون كثر
            if (admins.length > 3) {
              core.setFailed('Too many admin users - review access');
            }

      - name: Verify Branch Protection
        uses: actions/github-script@v7
        with:
          script: |
            const protection = await github.rest.repos.getBranchProtection({
              owner: context.repo.owner,
              repo: context.repo.repo,
              branch: 'main'
            });

            const required = protection.data.required_pull_request_reviews;
            if (!required || required.required_approving_review_count < 1) {
              core.setFailed('Branch protection requires at least 1 reviewer');
            }

  vulnerability-management:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Run Security Scan
        uses: snyk/actions/node@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
        with:
          args: --severity-threshold=high

      - name: Generate SBOM
        uses: anchore/sbom-action@v0
        with:
          format: spdx-json
          output-file: sbom.json

      - name: Upload Evidence
        uses: actions/upload-artifact@v4
        with:
          name: compliance-evidence-${{ github.run_id }}
          path: |
            sbom.json
            snyk-results.json

ضوابط امتثال HIPAA

قائمة فحص حماية PHI

# hipaa-controls.yaml
controls:
  access_control:
    - name: "تحديد المستخدم الفريد"
      requirement: "164.312(a)(2)(i)"
      implementation: "حسابات مستخدمين فردية مع SSO"
      evidence: "سجلات توفير المستخدمين"

    - name: "تسجيل الخروج التلقائي"
      requirement: "164.312(a)(2)(iii)"
      implementation: "انتهاء الجلسة بعد 15 دقيقة"
      evidence: "تكوين التطبيق"

  audit_controls:
    - name: "سجلات التدقيق"
      requirement: "164.312(b)"
      implementation: "تسجيل شامل للوصول إلى PHI"
      evidence: "لوحة تجميع السجلات"

  encryption:
    - name: "التشفير في الراحة"
      requirement: "164.312(a)(2)(iv)"
      implementation: "تشفير AES-256 لقواعد البيانات"
      evidence: "تدقيق تكوين قاعدة البيانات"

    - name: "التشفير في النقل"
      requirement: "164.312(e)(1)"
      implementation: "TLS 1.3 لجميع الاتصالات"
      evidence: "فحص شهادة SSL"

الكشف الآلي عن PHI

# فحص PHI في الكود/السجلات
- name: PHI Detection Scan
  run: |
    # أنماط PHI الشائعة
    patterns=(
      '[0-9]{3}-[0-9]{2}-[0-9]{4}'  # SSN
      '[0-9]{3}-[0-9]{3}-[0-9]{4}'  # هاتف
      '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}'  # بريد إلكتروني
    )

    for pattern in "${patterns[@]}"; do
      if grep -rE "$pattern" --include="*.log" --include="*.txt" .; then
        echo "::error::Potential PHI detected in logs"
        exit 1
      fi
    done

أتمتة PCI-DSS

تعيين المتطلبات

المتطلبالوصفالأتمتة
1.xتكوين جدار الحمايةفحص IaC (tfsec)
2.xالتكوينات الآمنةمعايير CIS
3.xحماية البيانات المخزنةالتحقق من التشفير
6.xالتطوير الآمنفحص SAST/DAST
10.xتتبع الوصولتسجيل التدقيق
11.xاختبار الأمانفحص الثغرات

ضوابط PCI الآلية

# .github/workflows/pci-compliance.yml
name: PCI-DSS Compliance

on:
  push:
    branches: [main]
  schedule:
    - cron: '0 0 * * 0'  # أسبوعياً

jobs:
  pci-requirement-6:
    name: "التطوير الآمن (المتطلب 6)"
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # المتطلب 6.3.2 - مراجعة الكود
      - name: Verify Code Review
        uses: actions/github-script@v7
        with:
          script: |
            const prs = await github.rest.pulls.list({
              owner: context.repo.owner,
              repo: context.repo.repo,
              state: 'closed',
              base: 'main',
              per_page: 50
            });

            const unreviewed = prs.data.filter(pr =>
              pr.merged_at && !pr.requested_reviewers?.length
            );

            if (unreviewed.length > 0) {
              console.log(`Unreviewed PRs: ${unreviewed.length}`);
            }

      # المتطلب 6.5 - فحص الثغرات
      - name: SAST Scan
        uses: github/codeql-action/analyze@v3

      # المتطلب 6.6 - أمان تطبيقات الويب
      - name: DAST Scan
        uses: zaproxy/action-baseline@v0.12.0
        with:
          target: 'https://staging.example.com'

  pci-requirement-11:
    name: "إدارة الثغرات (المتطلب 11)"
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Container Vulnerability Scan
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'myapp:latest'
          format: 'sarif'
          output: 'trivy-results.sarif'
          severity: 'CRITICAL,HIGH'

      - name: Infrastructure Scan
        run: |
          checkov -d . --framework terraform \
            --output-file-path checkov-report.json \
            --output json

جمع الأدلة والتقارير

مستودع الأدلة المركزي

# evidence-collector.yml
name: Collect Compliance Evidence

on:
  schedule:
    - cron: '0 0 1 * *'  # شهرياً

jobs:
  collect-evidence:
    runs-on: ubuntu-latest
    steps:
      - name: Collect Access Logs
        run: |
          aws cloudtrail lookup-events \
            --start-time $(date -d '30 days ago' --iso-8601) \
            --end-time $(date --iso-8601) \
            > access-logs.json

      - name: Collect Vulnerability Reports
        run: |
          snyk monitor --json > snyk-report.json
          trivy image --format json myapp:latest > trivy-report.json

      - name: Generate Compliance Report
        run: |
          python scripts/generate_compliance_report.py \
            --framework soc2 \
            --output compliance-report.pdf

      - name: Upload to Evidence Store
        uses: actions/upload-artifact@v4
        with:
          name: monthly-compliance-${{ github.run_id }}
          path: |
            access-logs.json
            snyk-report.json
            trivy-report.json
            compliance-report.pdf
          retention-days: 365  # الاحتفاظ للتدقيق

تكامل لوحة الامتثال

# إرسال المقاييس إلى لوحة الامتثال
- name: Report Compliance Status
  run: |
    curl -X POST https://compliance-dashboard.example.com/api/v1/report \
      -H "Authorization: Bearer ${{ secrets.DASHBOARD_TOKEN }}" \
      -H "Content-Type: application/json" \
      -d '{
        "framework": "SOC2",
        "date": "'$(date --iso-8601)'",
        "controls": {
          "CC6.1": {"status": "compliant", "evidence": "access-audit.json"},
          "CC7.1": {"status": "compliant", "evidence": "vuln-scan.json"},
          "CC7.2": {"status": "compliant", "evidence": "pr-reviews.json"}
        }
      }'

النقاط الرئيسية

الممارسةالفائدة
أتمت جمع الأدلةيقلل وقت التحضير للتدقيق
التحقق المستمر من الضوابطالتقاط الانتهاكات مبكراً
السياسات المتحكم بها بالإصداراتمسار تدقيق للتغييرات
الفحص المتكاملالأمان + الامتثال في خط واحد

بعد ذلك، سنستكشف لوحات الأمان وإدارة الثغرات. :::

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

اختبار

الوحدة 6: الامتثال والحوكمة ونضج DevSecOps

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

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

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

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