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

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

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

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

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

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

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

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

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

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

المعيار ضابط DevSecOps الأداة/التنفيذ
CC6.1 التحكم في الوصول RBAC، MFA GitHub 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

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

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

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

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