Skip to main content

ci-cd-security

Security best practices for GitHub Actions workflows, supply chain security, and secure CI/CD pipelines

معلومات المصدر

المستودع
Hack23/riksdagsmonitor
آخر نشاط في المصدر
٥ مايو ٢٠٢٦ في ١٩:٤٤
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١٢
التفرعات
٤

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
ci-cd-security
description
Security best practices for GitHub Actions workflows, supply chain security, and secure CI/CD pipelines
license
Apache-2.0
# CI/CD Security Skill ## 🔴 AI FIRST Quality Principle > **Apply the AI FIRST principle: never accept first-pass quality. Minimum 2 iterations. Read all output, improve every section. No shortcuts.** ## Purpose Implement security-hardened CI/CD pipelines using GitHub Actions with least privilege, supply chain security, and comprehensive monitoring. ## Core Principles ### 1. Least Privilege Permissions Always grant minimum necessary permissions: ```yaml permissions: contents: read # Read repo content pull-requests: write # Only if managing PRs issues: write # Only if managing issues # Deny everything else by default ``` ### 2. Pin Actions to SHA Never use tags - always pin to commit SHA: ```yaml # ❌ Bad: Using tag (can be moved) - uses: actions/checkout@v4 # ✅ Good: Pinned to SHA (immutable) - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd ``` ### 3. Harden Runner Use step-security/harden-runner on every job: ```yaml - name: Harden Runner uses: step-security/harden-runner@e3f713f2d8f53843e71c69a996d56f51aa9adfb9 with: egress-policy: audit # Log all network calls ``` ### 4. Secrets Management ```yaml # ✅ Use GitHub Secrets - env: TOKEN: \${{ secrets.GITHUB_TOKEN }} run: | # Never echo secrets curl -H "Authorization: Bearer \$TOKEN" ... # ❌ Never hardcode TOKEN="ghp_hardcoded_token" # NEVER DO THIS ``` ### 5. Supply Chain Security ```yaml - name: Dependency Review uses: actions/dependency-review-action@SHA - name: CodeQL Scanning uses: github/codeql-action/analyze@SHA ``` ## Security-Hardened Workflow Template ```yaml name: Secure Workflow on: push: branches: [main] pull_request: branches: [main] permissions: contents: read jobs: build: runs-on: ubuntu-latest steps: - name: Harden Runner uses: step-security/harden-runner@e3f713f2d8f53843e71c69a996d56f51aa9adfb9 with: egress-policy: audit allowed-endpoints: > github.com:443 api.github.com:443 - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Setup Node uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 with: node-version: '26' cache: 'npm' - name: Install Dependencies run: npm ci - name: Run Security Checks run: | npm audit npm run lint npm test ``` ## Supply Chain Security ### Dependency Scanning ```yaml - name: Run Dependency Review uses: actions/dependency-review-action@SHA with: fail-on-severity: moderate ``` ### Code Scanning ```yaml - name: Initialize CodeQL uses: github/codeql-action/init@SHA with: languages: javascript, python - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@SHA ``` ### Secret Scanning Enable in repository settings: - GitHub secret scanning - Push protection - Custom patterns if needed ## Remember - **Least Privilege**: Grant minimal permissions - **Pin to SHA**: Immutable action versions - **Harden Runner**: Audit all network egress - **Scan Everything**: Dependencies, code, secrets - **Never Trust**: Validate all inputs - **Monitor Continuously**: Review audit logs ## References - [GitHub Actions Security](https://docs.github.com/en/actions/security-guides) - [Step Security](https://github.com/step-security/harden-runner) - [SLSA Framework](https://slsa.dev/)
عرض على GitHub