Git 2026

فصل ۲۹ · امنیت زنجیره تأمین

امنیت زنجیرهٔ تأمین — Dependabot، CodeQL، Secret Scanning

امنیت زنجیرهٔ تأمین یعنی بدانی وابستگی‌ها، توکن‌ها و تگ انتشار قابل جعل یا تعویض نباشند. Dependabot، CodeQL و Secret Scanning همین لایه‌اند.

🎯 اهداف یادگیری

  • Dependabot را برای آپدیت و هشدار CVE راه بیندازی
  • CodeQL و secret scanning را بفهمی
  • Immutable Releases را در مدل عرضه قرار دهی
  • attestations را در یک جمله توضیح دهی

📦 Dependabot

.github/dependabot.yml
version: 2
updates:
  - package-ecosystem: pip
    directory: /src
    schedule:
      interval: weekly
  - package-ecosystem: github-actions
    directory: /
    schedule:
      interval: weekly

دو چهره:

  • Security updates — CVE؛ PR فوری
  • Version updates — تازگی؛ زمان‌بندی

PRهای Dependabot را مثل کد انسان ریویو کن. گاهی breaking است.

🔎 CodeQL و secret scanning

  • CodeQL: تحلیل معنایی؛ query برای injection، XSS، path traversal. در Copilot code review ۲۰۲۵ با لینترها ترکیب شد.
  • Secret scanning: توکن AWS، GitHub, Stripe... را در push می‌بیند. Push protection جلوی ورود را می‌گیرد.
  • Private vulnerability reporting: پژوهشگر بیرونی بدون Issue عمومی.
codeql.yml — اسکلت
on: [push, pull_request]
jobs:
  analyze:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
    steps:
      - uses: actions/checkout@v4
      - uses: github/codeql-action/init@v3
        with:
          languages: python, javascript
      - uses: github/codeql-action/analyze@v3

🧊 Immutable Releases (GA ۲۰۲۵)

تگ و دارایی release قفل می‌شوند؛ بازنویسی v1.2.0 ممکن نیست. همراه attestations (SLSA-مانند) می‌توانی ثابت کنی این باینری از کدام workflow و کدام commit آمده.

تأیید
gh attestation verify dist/app.tar.gz --owner rezaian-dev
SBOM

برای محصول جدی، در workflow SBOM (CycloneDX/SPDX) بساز و به release بچسبان. مشتری سازمانی می‌پرسد.

🚫 اشتباههای زنجیره

  • اکشن uses: some-user/action@main — شاخه متحرک = کد متحرک
  • curl | bash در CI
  • npm package typosquatting
  • خود-hosted runner روی ریپوی عمومی (fork می‌تواند کد اجرا کند)
سؤالات مصاحبه (با پاسخ)

Mid — push protection چیست؟ سرور push را رد می‌کند اگر secret شناخته‌شده در diff باشد.

Senior — attestation چه تضمینی است؟ امضای GitHub روی metadata ساخت: workflow، SHA، هویت. Tamper بعد از ساخت را نشان می‌دهد؛ باگ منطقی داخل کد را نه.

✅ چک‌لیست فهم

  • Dependabot برای زبان و Actions روشن است
  • Push protection فعال است
  • تگ نسخه Immutable است
  • اکشن روی SHA یا تگ قفل است نه @main

فصل بعد: داخلی Git — packfile، gc، reftable.

فصل ۲۹ از ۳۶ · مرجع جامع و حرفه‌ای Git و GitHub · ویرایش 1.0.0