CI/CD pipelines are critical infrastructure that build, test, and deploy your applications. A compromised pipeline can inject malicious code into production, steal secrets, or provide attackers with persistent access to your systems. This guide covers comprehensive security practices for protecting your software delivery process.
Pipeline security encompasses access control, secrets management, build integrity, and artifact security. Each stage of the pipeline presents unique risks that require specific controls and monitoring.
Pipeline Access Control
# GitHub branch protection
name: Branch Protection
on:
pull_request:
branches: [main]
jobs:
required-checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: npm test
- name: Security scan
run: npm auditSecrets Management
# Use OIDC instead of long-lived credentials
jobs:
deploy:
permissions:
id-token: write
contents: read
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123456789012:role/GitHubActions
aws-region: us-east-1Build Integrity
# Pin action versions with SHA
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
# Verify checksums
- name: Verify download
run: |
sha256sum -c checksums.txtSecurity Scanning
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: SAST
uses: returntocorp/semgrep-action@v1
- name: Dependency scan
run: npm audit --audit-level=high
- name: Container scan
uses: aquasecurity/trivy-action@masterArtifact Signing
# Sign container images with Cosign
- name: Sign image
run: cosign sign --key cosign.key $IMAGE_NAMEEnvironment Isolation
jobs:
deploy-staging:
environment: staging
deploy-production:
environment: production
needs: deploy-stagingAudit Logging
# Enable audit logs in GitHub
# Settings > Audit log > Stream to SIEMBest Practices
- Use OIDC for cloud authentication
- Pin dependencies and action versions
- Implement branch protection rules
- Require code review for all changes
- Scan for secrets in commits
- Use ephemeral build environments
- Sign and verify artifacts
- Implement environment approvals
- Monitor pipeline activity
- Regularly rotate credentials
Conclusion
CI/CD pipeline security is essential for protecting your software supply chain. By implementing proper access controls, secrets management, and build integrity measures, you can ensure your deployment process remains secure and trustworthy.


