CloudForge ApplicationSpec Catalog
This directory contains ApplicationSpec implementations for deploying various containerized applications using CloudForge 3.0.0.
Overviewโ
Each ApplicationSpec defines:
- Application Identity: Unique ID, Docker image, ports
- Container Configuration: Data paths, user/group IDs, permissions
- EC2 Configuration: EBS device, log paths, UserData scripts
- Storage Strategy: Support for both EFS (shared) and EBS (single-instance)
Available Applicationsโ
CI/CD (Continuous Integration/Continuous Deployment)โ
| Application | Description | Default Port | Container Image |
|---|---|---|---|
| Jenkins | Open-source automation server | 8080 | jenkins/jenkins:lts |
| GitLab | Complete DevOps platform with Git + CI/CD | 80, 22 (SSH) | gitlab/gitlab-ce:latest |
| Drone | Container-native CI platform | 80 | drone/drone:2 |
Package: com.cloudforgeci.api.application.cicd
Version Control Systemsโ
| Application | Description | Default Port | Container Image |
|---|---|---|---|
| Gitea | Lightweight Git hosting in Go | 3000, 22 (SSH) | gitea/gitea:latest |
Package: com.cloudforgeci.api.application.vcs
Monitoring & Observabilityโ
| Application | Description | Default Port | Container Image |
|---|---|---|---|
| Grafana | Metrics visualization and dashboards | 3000 | grafana/grafana:latest |
| Prometheus | Systems monitoring and alerting | 9090 | prom/prometheus:latest |
Package: com.cloudforgeci.api.application.monitoring
Databases & Cachingโ
| Application | Description | Default Port | Container Image |
|---|---|---|---|
| PostgreSQL | Object-relational database | 5432 | postgres:15 |
| Redis | In-memory data store and cache | 6379 | redis:7-alpine |
Package: com.cloudforgeci.api.application.database
Architectureโ
Storage Strategiesโ
CloudForge applications support two storage backends:
-
EFS (Elastic File System) - Shared storage for multi-instance deployments
- Auto-scaling support
- High availability
- NFSv4 protocol
- IAM-based access control via Access Points
-
EBS (Elastic Block Store) - Block storage for single-instance deployments
- Higher performance
- Lower cost
- Encrypted at rest
- Automated snapshots
The ApplicationSpec interface abstracts these details - the infrastructure automatically selects the appropriate storage based on deployment configuration.
Standard User/Group IDsโ
Common UIDs/GIDs used by applications:
| Application | UID:GID | User | Notes |
|---|---|---|---|
| Jenkins | 1000:1000 | jenkins | Standard Linux user |
| GitLab | 998:998 | git | Git operations user |
| Gitea | 1000:1000 | git | Standard user |
| Grafana | 472:472 | grafana | Official Grafana UID |
| Prometheus | 65534:65534 | nobody | Nobody/nogroup |
| PostgreSQL | 999:999 | postgres | PostgreSQL user |
| Redis | 999:999 | redis | Redis user |
Security Considerationsโ
All ApplicationSpecs follow CloudForge security best practices:
- โ Encryption at Rest: EFS and EBS volumes encrypted
- โ Least Privilege: IAM roles with minimal permissions
- โ CloudWatch Integration: Centralized logging
- โ Security Groups: Network isolation with explicit rules
- โ POSIX Permissions: Proper file ownership and permissions
- โ ๏ธ Default Passwords: Change immediately in production!
- โ ๏ธ Secrets Management: Use AWS Secrets Manager for sensitive data
Compliance Requirements by Applicationโ
๐ด CRITICAL RISK - All Compliance Frameworks Requiredโ
PostgreSQL & Redis (Databases)โ
Frameworks: SOC2, PCI-DSS, HIPAA, GDPR, FERPA
Why Critical:
- Store sensitive data (PII, PHI, payment card data, education records)
- Direct data access point for applications
- Backup and recovery critical for compliance
- Audit logging required for all data access
Required Controls:
SOC2 (CC6.1, CC6.6, CC6.7):
- โ Encryption at rest (EBS/EFS encryption)
- โ Encryption in transit (TLS connections)
- โ Access logging via CloudWatch
- โ Network isolation (Security Groups)
- โ ๏ธ ACTION REQUIRED: Enable query logging for audit trail
- โ ๏ธ ACTION REQUIRED: Implement backup retention (7-90 days depending on framework)
PCI-DSS (Req 3.4, 8.2, 10.2):
- โ Strong encryption for cardholder data at rest
- โ Unique user IDs (IAM integration)
- โ ๏ธ ACTION REQUIRED: Log all access to cardholder data
- โ ๏ธ ACTION REQUIRED: Implement key rotation every 90 days
- โ ๏ธ ACTION REQUIRED: Quarterly vulnerability scans
HIPAA (ยง164.312(a)(2)(iv), ยง164.312(e)(2)(ii)):
- โ Automatic logoff (container restarts)
- โ Encryption at rest and in transit
- โ ๏ธ ACTION REQUIRED: Audit logs retained for 6 years
- โ ๏ธ ACTION REQUIRED: Implement BAA with AWS
- โ ๏ธ ACTION REQUIRED: PHI access controls and audit trails
GDPR (Art. 32, Art. 25):
- โ Encryption of personal data
- โ Data-at-rest protection
- โ ๏ธ ACTION REQUIRED: Data retention policies (right to erasure)
- โ ๏ธ ACTION REQUIRED: Data export capability (data portability)
- โ ๏ธ ACTION REQUIRED: Breach notification procedures
FERPA:
- โ ๏ธ ACTION REQUIRED: Education record access logging
- โ ๏ธ ACTION REQUIRED: Role-based access controls
- โ ๏ธ ACTION REQUIRED: Audit trail for all data access
PostgreSQL-Specific:
# Enable audit logging
ALTER SYSTEM SET log_statement = 'all';
ALTER SYSTEM SET log_connections = 'on';
ALTER SYSTEM SET log_disconnections = 'on';
# Enable SSL/TLS
ALTER SYSTEM SET ssl = 'on';
# Automated backups
# Configure in CloudForge: enableBackups = true, retentionDays = 90
Redis-Specific:
# Enable AOF persistence for compliance
appendonly yes
appendfsync everysec
# Require authentication
requirepass <strong-password-from-secrets-manager>
# TLS encryption
tls-port 6379
tls-cert-file /path/to/redis.crt
tls-key-file /path/to/redis.key
๐ HIGH RISK - SOC2, GDPR, FERPA Requiredโ
GitLab (Complete DevOps Platform)โ
Frameworks: SOC2, GDPR, FERPA, (PCI-DSS if processing payments), (HIPAA if handling PHI)
Why High Risk:
- Source code repository (intellectual property, trade secrets)
- May contain secrets, credentials, API keys in code
- User PII in profiles, commit history
- CI/CD pipeline access to production systems
- Container registry may store sensitive images
Required Controls:
SOC2 (CC6.1, CC6.2, CC8.1):
- โ OIDC authentication (via OmniAuth)
- โ Encryption at rest (EBS/EFS)
- โ ๏ธ ACTION REQUIRED: Enable audit logging
- โ ๏ธ ACTION REQUIRED: Secret scanning in repositories
- โ ๏ธ ACTION REQUIRED: Branch protection rules
- โ ๏ธ ACTION REQUIRED: Code review requirements
- โ ๏ธ ACTION REQUIRED: Signed commits
GDPR (Art. 32):
- โ OIDC authentication
- โ ๏ธ ACTION REQUIRED: User consent for profile data
- โ ๏ธ ACTION REQUIRED: Data export capability (user profiles, commit history)
- โ ๏ธ ACTION REQUIRED: Right to erasure procedures
- โ ๏ธ ACTION REQUIRED: Privacy policy in instance
FERPA (if storing education records in repos):
- โ ๏ธ ACTION REQUIRED: Access controls for education record repositories
- โ ๏ธ ACTION REQUIRED: Audit logging for all repository access
GitLab-Specific Configuration:
# In /etc/gitlab/gitlab.rb
# Audit logging
gitlab_rails['audit_events_enabled'] = true
# Secret detection
gitlab_rails['secret_detection_enabled'] = true
# Require 2FA for all users (SOC2, PCI-DSS)
gitlab_rails['require_two_factor_authentication'] = true
# Session timeout (HIPAA, SOC2)
gitlab_rails['session_expire_delay'] = 10800 # 3 hours
# Password complexity (PCI-DSS Req 8.2.3)
gitlab_rails['password_authentication_enabled_for_web'] = true
gitlab_rails['password_minimum_length'] = 12
# IP whitelisting for admin access
gitlab_rails['monitoring_whitelist'] = ['10.0.0.0/8']
Compliance Checklist for GitLab:
- Enable audit logging
- Configure secret scanning
- Enable branch protection on all production branches
- Require code reviews (minimum 1 approver)
- Enable signed commits
- Configure session timeouts
- Implement backup retention (SOC2: 30 days, HIPAA: 6 years)
- Enable 2FA for all users
Gitea (Git Hosting)โ
Frameworks: SOC2, GDPR, (FERPA if education records)
Why High Risk:
- Source code repository
- May contain secrets and credentials
- User PII in profiles
Required Controls:
SOC2 (CC6.1, CC8.1):
- โ OIDC authentication (supports OpenID Connect)
- โ ๏ธ ACTION REQUIRED: Enable audit logging in
app.ini - โ ๏ธ ACTION REQUIRED: Protected branches
- โ ๏ธ ACTION REQUIRED: Require signed commits
GDPR (Art. 32):
- โ OIDC authentication
- โ ๏ธ ACTION REQUIRED: Data export capability
- โ ๏ธ ACTION REQUIRED: User data deletion procedures
Gitea-Specific Configuration:
[security]
INSTALL_LOCK = true
SECRET_KEY = <generate-strong-secret>
MIN_PASSWORD_LENGTH = 12
PASSWORD_COMPLEXITY = lower,upper,digit,spec
[service]
REQUIRE_SIGNIN_VIEW = true
ENABLE_REVERSE_PROXY_AUTHENTICATION = false
ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false
[log]
MODE = file
LEVEL = Info
ROOT_PATH = /var/log/gitea
[session]
PROVIDER = file
COOKIE_SECURE = true
COOKIE_HTTP_ONLY = true
SESSION_LIFE_TIME = 10800 # 3 hours
๐ก MEDIUM-HIGH RISK - SOC2, PCI-DSS (if deploying payment systems)โ
Jenkins (CI/CD Automation)โ
Frameworks: SOC2, (PCI-DSS if deploying to payment systems), (HIPAA if deploying to healthcare systems)
Why Medium-High Risk:
- Access to cloud credentials and deployment secrets
- Can deploy to production systems
- Pipeline logs may contain sensitive data
- Build artifacts may contain PII/PHI
Required Controls:
SOC2 (CC8.1 - Change Management):
- โ OIDC authentication (via Jenkins OIDC plugin)
- โ ๏ธ ACTION REQUIRED: Audit logging for all build executions
- โ ๏ธ ACTION REQUIRED: Approval gates for production deployments
- โ ๏ธ ACTION REQUIRED: Secrets management (HashiCorp Vault, AWS Secrets Manager)
- โ ๏ธ ACTION REQUIRED: Build artifact retention policy
PCI-DSS (Req 6.3.2 - Secure Deployment):
- โ ๏ธ ACTION REQUIRED: Separate development/test/production pipelines
- โ ๏ธ ACTION REQUIRED: Code review before production deployment
- โ ๏ธ ACTION REQUIRED: Automated security testing in pipeline
- โ ๏ธ ACTION REQUIRED: Change approval workflow
HIPAA (if deploying healthcare applications):
- โ ๏ธ ACTION REQUIRED: Audit trail for all deployments
- โ ๏ธ ACTION REQUIRED: Access controls for PHI-related pipelines
- โ ๏ธ ACTION REQUIRED: Encryption of build artifacts
Jenkins-Specific Configuration:
// In Jenkins Configuration as Code (JCasC)
jenkins:
securityRealm:
oic:
// OIDC configuration (auto-configured by CloudForge)
authorizationStrategy:
globalMatrix:
permissions:
- "Overall/Administer:authenticated"
- "Job/Build:developers"
- "Job/Read:developers"
// Audit logging
auditTrail:
loggers:
- logFile:
log: "/var/log/jenkins/audit.log"
limit: 100
// Session timeout (SOC2, HIPAA)
securityOptions:
sessionTimeout: 10800 # 3 hours
Compliance Checklist for Jenkins:
- Enable audit logging for all builds
- Implement approval gates for production
- Use Credentials Plugin for secrets (never hardcode)
- Configure build artifact retention (30-90 days)
- Enable OIDC/SSO authentication
- Implement role-based access control
- Separate pipelines for dev/test/prod
Drone (Container-native CI)โ
Frameworks: SOC2, (PCI-DSS if deploying payment systems)
Why Medium-High Risk:
- CI/CD pipeline with deployment access
- Container image building (supply chain risk)
Required Controls:
SOC2 (CC8.1):
- โ ๏ธ ACTION REQUIRED: Audit logging for pipeline executions
- โ ๏ธ ACTION REQUIRED: Secrets management (Drone secrets)
- โ ๏ธ ACTION REQUIRED: Pipeline approval workflows
PCI-DSS (Req 6.3.2):
- โ ๏ธ ACTION REQUIRED: Separate deployment environments
- โ ๏ธ ACTION REQUIRED: Security scanning in pipeline
๐ข LOW-MEDIUM RISK - SOC2 (Monitoring/Observability)โ
Grafana (Metrics Visualization)โ
Frameworks: SOC2, (GDPR if displaying user metrics)
Why Low-Medium Risk:
- May display sensitive metrics (user behavior, financial data)
- User authentication and access controls important
- Dashboard sharing may expose sensitive data
Required Controls:
SOC2 (A1.2 - Monitoring):
- โ OIDC authentication (via generic_oauth)
- โ Role-based dashboards
- โ ๏ธ ACTION REQUIRED: Audit logging for dashboard access
- โ ๏ธ ACTION REQUIRED: Data source access controls
- โ ๏ธ ACTION REQUIRED: Anonymous access disabled
GDPR (if displaying user PII):
- โ ๏ธ ACTION REQUIRED: Data retention policies for metrics
- โ ๏ธ ACTION REQUIRED: User consent for behavior tracking
Grafana-Specific Configuration:
[auth]
disable_login_form = false
oauth_auto_login = false
[auth.generic_oauth]
enabled = true
# OIDC configuration (auto-configured by CloudForge)
[security]
admin_user = admin
admin_password = <strong-password>
secret_key = <generate-strong-secret>
disable_gravatar = true
[users]
allow_sign_up = false
allow_org_create = false
auto_assign_org = true
auto_assign_org_role = Editor
[log]
mode = console file
level = info
[session]
session_life_time = 10800 # 3 hours
Compliance Checklist for Grafana:
- Enable OIDC authentication
- Disable anonymous access
- Configure session timeouts
- Implement dashboard access controls
- Enable audit logging (Grafana Enterprise)
Prometheus (Time-Series Database)โ
Frameworks: SOC2 (for monitoring compliance)
Why Low-Medium Risk:
- Collects system metrics (may include sensitive performance data)
- No authentication by default (use reverse proxy)
Required Controls:
SOC2 (A1.2):
- โ ๏ธ ACTION REQUIRED: Use reverse proxy with authentication (oauth2-proxy)
- โ ๏ธ ACTION REQUIRED: Network isolation (Security Groups)
- โ ๏ธ ACTION REQUIRED: Data retention policies
Prometheus-Specific Configuration:
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
# External labels for compliance
external_labels:
environment: 'production'
compliance: 'soc2'
# Alerting for compliance monitoring
alerting:
alertmanagers:
- static_configs:
- targets: ['alertmanager:9093']
# Data retention (SOC2 requirement)
storage:
tsdb:
retention.time: 30d # Adjust based on compliance needs
Compliance Checklist for Prometheus:
- Deploy behind oauth2-proxy for authentication
- Configure data retention (30-90 days)
- Network isolation via Security Groups
- Alert on compliance-related metrics
Compliance Summary Matrixโ
| Application | SOC2 | PCI-DSS | HIPAA | GDPR | FERPA | Risk Level |
|---|---|---|---|---|---|---|
| PostgreSQL | โ Required | โ Required | โ Required | โ Required | โ Required | ๐ด CRITICAL |
| Redis | โ Required | โ Required | โ Required | โ Required | โ Required | ๐ด CRITICAL |
| GitLab | โ Required | โ ๏ธ If payments | โ ๏ธ If PHI | โ Required | โ ๏ธ If edu records | ๐ HIGH |
| Gitea | โ Required | โ N/A | โ N/A | โ Required | โ ๏ธ If edu records | ๐ HIGH |
| Jenkins | โ Required | โ ๏ธ If deploying payments | โ ๏ธ If deploying PHI | โ ๏ธ If user data | โ N/A | ๐ก MEDIUM-HIGH |
| Drone | โ Required | โ ๏ธ If deploying payments | โ N/A | โ N/A | โ N/A | ๐ก MEDIUM-HIGH |
| Grafana | โ Required | โ N/A | โ N/A | โ ๏ธ If user metrics | โ N/A | ๐ข LOW-MEDIUM |
| Prometheus | โ Required | โ N/A | โ N/A | โ N/A | โ N/A | ๐ข LOW-MEDIUM |
Legend:
- โ Required: Compliance framework applies, controls must be implemented
- โ ๏ธ Conditional: Applies only if application handles specific data types
- โ N/A: Framework does not apply to this application
CloudForge Automatic Compliance Controlsโ
When deploying with SecurityProfile = PRODUCTION, CloudForge automatically enables:
โ Encryption at Rest (all applications)
- EBS volumes encrypted with AWS KMS
- EFS filesystems encrypted with AWS KMS
โ Encryption in Transit (all applications)
- TLS 1.2+ for all connections
- SSL certificates via ACM
โ Network Isolation (all applications)
- Security Groups with least-privilege rules
- VPC isolation
- Optional: Private subnets with NAT Gateway
โ Logging & Monitoring (all applications)
- CloudWatch Logs integration
- VPC Flow Logs (if enabled)
- ALB access logging (if enabled)
โ Access Control (all applications)
- IAM roles with least privilege
- OIDC authentication (if supported)
- Session timeouts
โ Compliance Monitoring (if AWS Config enabled)
- Automated compliance checks
- Remediation for non-compliant resources
- Audit trail via CloudTrail
User Responsibilities by Applicationโ
Databases (PostgreSQL, Redis)โ
- Change default passwords immediately
- Enable query/access logging
- Configure backup retention based on compliance needs
- Implement key rotation (PCI-DSS: 90 days)
- Store passwords in AWS Secrets Manager
- Enable TLS/SSL for connections
- Implement data retention and deletion policies
Source Control (GitLab, Gitea)โ
- Enable audit logging
- Configure secret scanning
- Implement branch protection
- Require code reviews
- Enable signed commits
- Configure 2FA/MFA for all users
- Implement backup retention
- Create data export procedures
CI/CD (Jenkins, Drone)โ
- Enable audit logging for all builds
- Implement approval gates for production
- Use secrets management (never hardcode)
- Configure artifact retention policies
- Separate dev/test/prod pipelines
- Implement security scanning in pipelines
- Configure role-based access control