دمج عمليات التحقق من تكوين البرامج في البنية الأساسية لبرنامج ربط العمليات التجارية
يتيح دمج تحليل تكوين البرامج في مسارات CI/CD التحقق الآلي والمستمر من أمان التبعية والامتثال طوال دورة حياة تطوير البرامج. بدلا من إجراء تقييمات الأمان مرة واحدة قبل الإصدار، تتحقق SCA المتكاملة في خط الأنابيب باستمرار من صحة التبعيات مع كل تغيير في التعليمات البرمجية، وتكتشف الثغرات الأمنية مبكرا عندما يكون إصلاحها أسهل وأقل تكلفة.
لماذا دمج SCA في خطوط الأنابيب؟
خلقت مناهج الأمان التقليدية أنماطا خطيرة حيث اكتشفت فرق الأمن نقاط ضعف في وقت متأخر من التطوير عندما كان الضغط للإفراج عن الأعلى. أدى هذا النمط إما إلى شحن البرامج الضعيفة أو جهود المعالجة باهظة الثمن في اللحظة الأخيرة التي تؤخر الإصدارات.
مزايا أمان التحول إلى اليسار
الكشف المبكر عن الثغرات الأمنية:
- ردود الفعل الفورية: يتلقى المطورون إشعارات الثغرات الأمنية في غضون دقائق من إدخال التبعيات الضعيفة.
- انخفاض تكاليف المعالجة: إصلاح الثغرات الأمنية أثناء التطوير يكلف أقل بكثير من إصلاحها في الإنتاج.
- الحفاظ على السياق: لدى المطورين سياق كامل حول خيارات التبعية عند اكتشاف الثغرات الأمنية على الفور.
- الإصلاحات التزايدية: تعد التحسينات الأمنية الصغيرة والمستمرة أسهل في التنفيذ من جهود المعالجة الكبيرة.
الامتثال المستمر:
- إنفاذ السياسات: تفرض عمليات التحقق من المسارات المؤتمتة سياسات الترخيص والأمان على كل التزام.
- مسارات التدقيق: توفر نتائج فحص المسارات أدلة الامتثال ومسارات التدقيق.
- معايير متسقة: تخضع جميع تغييرات التعليمات البرمجية لنفس المراجعة الأمنية بغض النظر عمن يرسلها.
- الوقاية من المخاطر: يمنع حظر التبعيات الضعيفة قبل الدمج تراكم الديون الأمنية.
سرعة التطوير:
- المراجعات الآلية: تقوم أدوات SCA بإجراء تحليل التبعية تلقائيا دون الحاجة إلى مراجعات يدوية لفريق الأمان.
- المعالجة المتوازية: يتم تشغيل عمليات فحص الأمان بالتوازي مع خطوات الإنشاء الأخرى، مما يقلل من التأثير على أوقات البناء.
- إصدارات أسرع: يتيح التحقق المستمر من الأمان خلال التطوير إصدارات أسرع وأكثر ثقة.
- تقليل إعادة العمل: يؤدي اكتشاف المشكلات مبكرا إلى التخلص من إعادة العمل باهظة الثمن أثناء التحضير للإصدار.
نقاط تكامل المسارات
يتضمن التنفيذ الفعال لهيئة الأوراق المالية والسلع نقاط تكامل متعددة عبر مسار CI/CD.
التحقق من صحة طلب السحب
فحوصات أمان ما قبل الدمج: يلتقط التحقق من صحة طلب السحب التبعيات الضعيفة قبل دمجها في الفروع الرئيسية، مما يمنع تراكم الديون الأمنية.
التحقق من صحة طلب سحب Azure Pipelines:
trigger: none
pr:
branches:
include:
- main
- develop
pool:
vmImage: "ubuntu-latest"
steps:
- task: UseNode@1
inputs:
version: "18.x"
displayName: "Install Node.js"
- script: npm ci
displayName: "Install dependencies"
- task: WhiteSource@21
inputs:
cwd: "$(System.DefaultWorkingDirectory)"
projectName: "$(Build.Repository.Name)"
displayName: "Run Mend SCA scan"
- task: PublishTestResults@2
inputs:
testResultsFormat: "JUnit"
testResultsFiles: "**/test-results.xml"
displayName: "Publish scan results"
التحقق من صحة طلب سحب GitHub Actions:
name: Security Scan
on:
pull_request:
branches: [main, develop]
jobs:
sca-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "18"
- name: Install dependencies
run: npm ci
- name: Run Snyk security scan
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=high
- name: Upload scan results
uses: github/codeql-action/upload-sarif@v2
if: always()
with:
sarif_file: snyk.sarif
فحوصات طلب السحب:
- تغييرات التبعية: اكتشف التبعيات التي تم تغييرها في طلب السحب.
- نقاط ضعف جديدة: تحديد الثغرات الأمنية الجديدة التي أدخلتها تغييرات التبعية.
- مخالفات الترخيص: الإبلاغ عن انتهاكات سياسة الترخيص قبل الدمج.
- بوابات الجودة: حظر طلبات السحب التي تنتهك سياسات الأمان أو الامتثال.
- تعليقات المراجعة: انشر نتائج الفحص كتعليقات طلب سحب لرؤية المراجع.
يبني التكامل المستمر
المسح الضوئي لوقت الإنشاء SCA: يجب أن يتضمن كل إصدار CI فحص SCA للتحقق من صحة التبعيات في سياق التطبيق الكامل.
تكامل Azure Pipelines CI:
trigger:
branches:
include:
- main
- develop
- feature/*
pool:
vmImage: "ubuntu-latest"
variables:
buildConfiguration: "Release"
steps:
- task: UseDotNet@2
inputs:
packageType: "sdk"
version: "7.x"
displayName: "Install .NET SDK"
- task: DotNetCoreCLI@2
inputs:
command: "restore"
projects: "**/*.csproj"
displayName: "Restore NuGet packages"
- task: WhiteSource@21
inputs:
cwd: "$(System.DefaultWorkingDirectory)"
projectName: "$(Build.Repository.Name)"
scanComment: "CI Build $(Build.BuildNumber)"
checkPolicies: true
failBuildOnPolicyViolation: true
displayName: "Mend SCA scan with policy enforcement"
- task: DotNetCoreCLI@2
inputs:
command: "build"
projects: "**/*.csproj"
arguments: "--configuration $(buildConfiguration)"
displayName: "Build application"
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: "$(Build.ArtifactStagingDirectory)"
artifactName: "drop"
displayName: "Publish build artifacts"
تكامل GitHub Actions CI:
name: CI Build
on:
push:
branches: [main, develop]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run OWASP Dependency-Check
uses: dependency-check/Dependency-Check_Action@main
with:
project: "my-application"
path: "."
format: "SARIF"
args: >
--failOnCVSS 7
--suppression suppression.xml
- name: Upload scan results to GitHub Security
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: dependency-check-report.sarif
- name: Build application
run: python setup.py build
- name: Generate SBOM
run: |
pip install cyclonedx-bom
cyclonedx-py -i requirements.txt -o sbom.json
- name: Upload SBOM artifact
uses: actions/upload-artifact@v3
with:
name: sbom
path: sbom.json
ميزات بناء CI:
- فحص التبعية الكاملة: فحص جميع التبعيات بما في ذلك التبعيات العابرة.
- إنفاذ السياسات: الإصدارات الفاشلة التي تنتهك نهج الأمان أو التوافق.
- جيل SBOM: إنشاء عناصر فاتورة المواد البرمجية للاستهلاك النهائي.
- مقارنة خط الأساس: قارن نتائج الفحص الحالية بالإصدارات السابقة لاكتشاف الانحدارات.
- مجموعة المقاييس: تتبع عدد الثغرات الأمنية ومعدلات المعالجة ودرجات الامتثال بمرور الوقت.
عمليات الفحص العميق المجدولة
التحليل الدوري الشامل: توفر عمليات الفحص المجدولة تحليلا شاملا دون حظر سير عمل المطور.
الفحص المجدول لمسارات Azure:
schedules:
- cron: "0 2 * * *"
displayName: "Nightly security scan"
branches:
include:
- main
always: true
trigger: none
pr: none
pool:
vmImage: "ubuntu-latest"
steps:
- task: NodeTool@0
inputs:
versionSpec: "18.x"
displayName: "Install Node.js"
- script: npm ci
displayName: "Install dependencies"
- task: Snyk@1
inputs:
serviceConnectionEndpoint: "SnykConnection"
testType: "app"
severityThreshold: "low"
monitorOnBuild: true
failOnIssues: false
projectName: "$(Build.Repository.Name)"
displayName: "Deep Snyk scan (all severities)"
- task: BlackDuck@1
inputs:
BlackDuckService: "BlackDuckConnection"
ScanMode: "intelligent"
DetectArguments: "--detect.policy.check.fail.on.severities ALL"
displayName: "Black Duck comprehensive scan"
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: "$(Build.ArtifactStagingDirectory)/SecurityReports"
artifactName: "SecurityReports"
displayName: "Publish detailed scan reports"
مزايا الفحص المجدول:
- تحليل شامل: مسح عميق بجميع مستويات الخطورة دون منع التطوير.
- اكتشاف الثغرات الأمنية الجديدة: اكتشف الثغرات الأمنية التي تم الكشف عنها حديثا في التبعيات التي لم تتغير.
- إعداد التقارير الشاملة: إنشاء تقارير مفصلة لفرق الأمان والإدارة.
- تحليل الاتجاه: تتبع تغييرات الوضع الأمني بمرور الوقت من خلال الفحص المتسق.
التحقق من صحة المسار للإصدار
بوابات أمان ما قبل النشر: يجب أن تتحقق مسارات الإصدار من صحة البيانات الاصطناعية قبل نشرها في بيئات الإنتاج.
بوابة إصدار Azure Pipelines:
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- task: DotNetCoreCLI@2
inputs:
command: "build"
- stage: SecurityValidation
dependsOn: Build
jobs:
- job: SCAValidation
steps:
- task: DownloadBuildArtifacts@0
inputs:
artifactName: "drop"
- task: WhiteSource@21
inputs:
cwd: "$(System.ArtifactsDirectory)/drop"
projectName: "$(Build.Repository.Name)"
checkPolicies: true
failBuildOnPolicyViolation: true
displayName: "Validate artifact dependencies"
- stage: DeployProduction
dependsOn: SecurityValidation
condition: succeeded()
jobs:
- deployment: DeployToProduction
environment: "production"
strategy:
runOnce:
deploy:
steps:
- task: AzureWebApp@1
inputs:
azureSubscription: "AzureConnection"
appName: "my-web-app"
package: "$(Pipeline.Workspace)/drop"
فحوصات التحقق من صحة الإصدار:
- مسح القطع الأثرية: مسح البيانات الاصطناعية المجمعة وصور الحاوية قبل النشر.
- السياسات الخاصة بالإنتاج: تطبيق نهج أمان أكثر صرامة لعمليات نشر الإنتاج.
- التحقق من الامتثال: تحقق من توافق الترخيص قبل إصدار الإنتاج.
- بوابات الموافقة: طلب الموافقة اليدوية لعمليات النشر ذات المخاطر المعروفة ولكن المقبولة.
بوابات الجودة وإنفاذ السياسات
تحديد سياسات الأمان: تفرض أدوات هيئة الأوراق المالية والسلع السياسات التي تحدد معايير الأمان والامتثال المقبولة.
السياسات المستندة إلى الخطورة
بناء الحظر بناء على خطورة الثغرات الأمنية:
مثال على سياسة الإصلاح:
{
"name": "Production Security Policy",
"enabled": true,
"rules": [
{
"type": "VULNERABILITY_SEVERITY",
"action": "FAIL_BUILD",
"minSeverity": "HIGH"
},
{
"type": "VULNERABILITY_AGE",
"action": "FAIL_BUILD",
"maxAge": 30,
"minSeverity": "MEDIUM"
}
]
}
يفشل هذا النهج في الإصدارات التي تحتوي على ثغرات أمنية عالية أو حرجة، وثغرات أمنية متوسطة أقدم من 30 يوما.
مثال على سياسة Snyk:
# .snyk policy file
version: v1.0.0
patch: {}
ignore: {}
policies:
- severity:
low: ignore
medium: warn
high: fail
critical: fail
السياسات المستندة إلى الترخيص
فرض الامتثال للترخيص:
مثال على سياسة الترخيص:
{
"name": "License Compliance Policy",
"enabled": true,
"rules": [
{
"type": "LICENSE_TYPE",
"action": "FAIL_BUILD",
"deniedLicenses": ["GPL-2.0", "GPL-3.0", "AGPL-3.0"]
},
{
"type": "LICENSE_TYPE",
"action": "REQUIRE_APPROVAL",
"approvalRequired": ["LGPL-2.1", "LGPL-3.0", "MPL-2.0"]
}
]
}
فئات سياسة الترخيص:
- التراخيص المرفوضة: التراخيص المحظورة في جميع الظروف (حقوق متروكة قوية للبرامج الاحتكارية).
- التراخيص المطلوبة للموافقة: التراخيص التي تتطلب مراجعة قانونية قبل الاستخدام (الحقوق المتروكة الضعيفة ، التراخيص المخصصة).
- التراخيص المسموح بها: تراخيص متساهلة مقبولة دون مراجعة (معهد ماساتشوستس للتكنولوجيا ، Apache 2.0 ، BSD).
قواعد السياسة المخصصة
شروط السياسة المتقدمة:
{
"name": "Advanced Security Policy",
"enabled": true,
"rules": [
{
"type": "VULNERABILITY_CVSS_SCORE",
"action": "FAIL_BUILD",
"minScore": 7.0,
"condition": "exploitMaturity == 'FUNCTIONAL' OR exploitMaturity == 'HIGH'"
},
{
"type": "DEPENDENCY_AGE",
"action": "WARN",
"maxAge": 365,
"message": "Dependency has not been updated in over a year"
},
{
"type": "MAINTAINER_STATUS",
"action": "WARN",
"condition": "abandonedProject == true"
}
]
}
توليد SBOM في خطوط الأنابيب
توفر وثائق فاتورة مواد البرامج (SBOM) جردا شاملا لجميع مكونات البرامج.
إنشاء نتائج SBOM
جيل CycloneDX SBOM:
steps:
- task: UseNode@1
inputs:
version: "18.x"
- script: |
npm ci
npm install -g @cyclonedx/cyclonedx-npm
cyclonedx-npm --output-file sbom.json
displayName: "Generate CycloneDX SBOM"
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: "sbom.json"
artifactName: "SBOM"
جيل SPDX SBOM:
steps:
- script: |
pip install spdx-tools
pip-licenses --format=json --output-file=licenses.json
# Convert to SPDX format using custom script
python scripts/generate_spdx.py licenses.json sbom.spdx
displayName: "Generate SPDX SBOM"
حالات استخدام SBOM:
- دليل الامتثال: تقديم للعملاء أو المدققين الذين يظهرون شفافية التبعية.
- تتبع الثغرات الأمنية: استخدم SBOM لتحديد ما إذا كانت الثغرات الأمنية التي تم الكشف عنها حديثا تؤثر بسرعة على البرامج المنشورة.
- أمن سلسلة التوريد: تتبع مصدر البرنامج واكتشاف هجمات سلسلة التوريد.
- الامتثال للترخيص: توثيق جميع التزامات الترخيص في البرامج المنشورة.
عمليات التكامل الخاصة بالأداة
Mend (WhiteSource سابقا)
مهمة إصلاح خطوط أنابيب Azure:
- task: WhiteSource@21
inputs:
cwd: "$(System.DefaultWorkingDirectory)"
projectName: "$(Build.Repository.Name)"
checkPolicies: true
failBuildOnPolicyViolation: true
scanComment: "Build $(Build.BuildNumber)"
displayName: "Mend SCA scan"
سنيك
مهمة Azure Pipelines Snyk:
- task: SnykSecurityScan@1
inputs:
serviceConnectionEndpoint: "SnykConnection"
testType: "app"
severityThreshold: "high"
monitorOnBuild: true
failOnIssues: true
displayName: "Snyk security scan"
Dependency-Check OWASP
مهمة Azure Pipelines OWASP:
- script: |
wget https://github.com/jeremylong/DependencyCheck/releases/download/v8.0.0/dependency-check-8.0.0-release.zip
unzip dependency-check-8.0.0-release.zip
./dependency-check/bin/dependency-check.sh \
--project "$(Build.Repository.Name)" \
--scan . \
--format ALL \
--failOnCVSS 7
displayName: "OWASP Dependency-Check scan"
بطة سوداء
مهمة Azure Pipelines Black Duck:
- task: BlackDuck@1
inputs:
BlackDuckService: "BlackDuckConnection"
ScanMode: "intelligent"
DetectArguments: "--detect.policy.check.fail.on.severities CRITICAL,HIGH"
displayName: "Black Duck scan"
أفضل الممارسات لتكامل المسارات
تحسين أداء المسح الضوئي:
- المسح التزايدي: استخدم عمليات الفحص المتزايدة لطلبات السحب ، وعمليات الفحص الكاملة لبنيات الفرع الرئيسي.
- التخزين المؤقت: تحليل تبعية ذاكرة التخزين المؤقت ونتائج الفحص لتسريع عمليات التشغيل اللاحقة.
- التنفيذ الموازي: قم بتشغيل عمليات فحص SCA بالتوازي مع خطوات الإنشاء الأخرى عندما يكون ذلك ممكنا.
- جدولة الفحص: قم بإجراء عمليات فحص شاملة وفقا للجداول الزمنية بدلا من حظر كل التزام.
إدارة الإيجابيات الخاطئة:
- ملفات المنع احتفظ بملفات المنع للإيجابيات الخاطئة المعروفة.
- السياسات المدركة للسياق: قم بتكوين النهج مع مراعاة ما إذا كان التعليمات البرمجية المعرضة للخطر مستخدمة بالفعل.
- مراجعة منتظمة: راجع النتائج الممبوتة بشكل دوري للتأكد من بقائها إيجابية خاطئة.
تقديم ملاحظات قابلة للتنفيذ:
- مسح الرسائل: قدم تفسيرات واضحة لانتهاكات السياسة وخطوات المعالجة.
- إرشادات المعالجة: رابط إلى الوثائق التي تشرح كيفية إصلاح الثغرات الأمنية.
- تحديد الأولويات: قم بترتيب النتائج حسب الخطورة وقابلية الاستغلال لمساعدة المطورين على تحديد الأولويات.
مراقبة وتحسين:
- لوحات معلومات المقاييس: تتبع اتجاهات الثغرات الأمنية ووقت المعالجة ومعدلات الامتثال.
- تعليم الفريق: تدريب المطورين على تحديد التبعية الآمن ومعالجة الثغرات الأمنية.
- تكرار العملية: تحسين السياسات والتكامل باستمرار بناء على ملاحظات الفريق والمقاييس.
يؤدي دمج تحليل تكوين البرامج في خطوط أنابيب CI / CD إلى تحويل الأمان من بوابة المرحلة المتأخرة إلى عملية التحقق المستمر طوال فترة التطوير. يكتشف الفحص الآلي المستند إلى السياسة الثغرات الأمنية مبكرا، ويفرض الامتثال باستمرار، ويوفر الأساس لتسليم البرامج بشكل آمن. تدرس الوحدة التالية أدوات SCA المحددة وكيفية تقييم قدراتها لاحتياجات مؤسستك.