Security
This document outlines the security model, practices, and recommendations for the Fawkes Internal Developer Platform (IDP).
Principles
- Least Privilege: All components and users are granted only the permissions they need.
- Separation of Duties: Infrastructure, platform, and application responsibilities are separated.
- Defense in Depth: Multiple layers of security controls are implemented across the stack.
- Transparency: All security controls and configurations are documented and open for review.
Secrets Management
- Never commit secrets to version control.
- Use secret management tools (e.g., HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager, or Kubernetes Secrets).
- Store only encrypted secrets in infrastructure code; inject secrets at deploy time.
- Add secret files and templates to
.gitignore.
Automated Secret Detection:
- Fawkes uses Gitleaks and detect-secrets in pre-commit hooks and CI/CD pipelines
- Pipelines fail immediately if secrets are detected
- See the Secrets Management Guide for detailed information
Identity and Access Management (IAM)
- Use cloud-native IAM (AWS IAM, Azure AD, GCP IAM) for resource access control.
- Use Kubernetes RBAC for fine-grained access within clusters.
- Rotate credentials and keys regularly.
- Use service accounts for automation and CI/CD, with minimal permissions.
Network Security
- Deploy resources in private subnets where possible.
- Restrict public ingress using security groups, firewalls, and Kubernetes network policies.
- Use TLS/SSL for all service endpoints.
- Enable logging and monitoring for network traffic.
Platform Security
- Enable audit logging for all infrastructure and platform components.
- Regularly update dependencies and base images to address vulnerabilities.
- Use vulnerability scanning tools (e.g., Trivy, Gitleaks) in CI/CD pipelines.
- Enforce code reviews and automated tests for all changes.
Kubernetes Security
- Use namespaces to isolate workloads.
- Apply Pod Security Standards (PSS) or PodSecurityPolicies.
- Limit container privileges (no root, no privilege escalation).
- Use network policies to restrict pod-to-pod communication.
- Scan container images for vulnerabilities before deployment.
CI/CD Security
- Store CI/CD credentials securely (never in code).
- Use environment variables or secret stores for pipeline secrets.
- Limit pipeline permissions to only required resources.
- Scan code and dependencies for vulnerabilities on every build.
- Automated secrets scanning with Gitleaks in every pipeline run
Monitoring and Incident Response
- Enable and monitor audit logs for all cloud and platform resources.
- Set up alerts for suspicious activity or failed authentication attempts.
- Document incident response procedures and regularly review them.
User Responsibilities
- Use strong, unique passwords and enable MFA where possible.
- Report any suspected security issues to the project maintainers.
- Follow the contributing guidelines for secure code contributions.
Reporting Vulnerabilities
If you discover a security vulnerability, please report it responsibly by opening a private issue or contacting the maintainers directly.
References
- CNCF Kubernetes Security Best Practices
- OWASP Top Ten
- Cloud Provider Security Docs
- Fawkes Secrets Management Guide