Skip to main content

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)โ€‹

ApplicationDescriptionDefault PortContainer Image
JenkinsOpen-source automation server8080jenkins/jenkins:lts
GitLabComplete DevOps platform with Git + CI/CD80, 22 (SSH)gitlab/gitlab-ce:latest
DroneContainer-native CI platform80drone/drone:2

Package: com.cloudforgeci.api.application.cicd

Version Control Systemsโ€‹

ApplicationDescriptionDefault PortContainer Image
GiteaLightweight Git hosting in Go3000, 22 (SSH)gitea/gitea:latest

Package: com.cloudforgeci.api.application.vcs

Monitoring & Observabilityโ€‹

ApplicationDescriptionDefault PortContainer Image
GrafanaMetrics visualization and dashboards3000grafana/grafana:latest
PrometheusSystems monitoring and alerting9090prom/prometheus:latest

Package: com.cloudforgeci.api.application.monitoring

Databases & Cachingโ€‹

ApplicationDescriptionDefault PortContainer Image
PostgreSQLObject-relational database5432postgres:15
RedisIn-memory data store and cache6379redis:7-alpine

Package: com.cloudforgeci.api.application.database

Architectureโ€‹

Storage Strategiesโ€‹

CloudForge applications support two storage backends:

  1. EFS (Elastic File System) - Shared storage for multi-instance deployments

    • Auto-scaling support
    • High availability
    • NFSv4 protocol
    • IAM-based access control via Access Points
  2. 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:

ApplicationUID:GIDUserNotes
Jenkins1000:1000jenkinsStandard Linux user
GitLab998:998gitGit operations user
Gitea1000:1000gitStandard user
Grafana472:472grafanaOfficial Grafana UID
Prometheus65534:65534nobodyNobody/nogroup
PostgreSQL999:999postgresPostgreSQL user
Redis999:999redisRedis 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โ€‹

ApplicationSOC2PCI-DSSHIPAAGDPRFERPARisk 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

Monitoring (Grafana, Prometheus)โ€‹

  • Enable authentication (OIDC or reverse proxy)
  • Disable anonymous access
  • Configure session timeouts
  • Implement dashboard access controls
  • Configure data retention policies
  • Enable audit logging (if available)

Compliance Validationโ€‹

CloudForge provides automated compliance validation when auditManagerEnabled = true:

Frameworks Validated:

  • SOC 2 Type II
  • PCI-DSS v4.0
  • HIPAA Security Rule
  • GDPR
  • FERPA

Validation Checks:

  1. Encryption at rest enabled
  2. Encryption in transit enabled
  3. Audit logging configured
  4. Access controls implemented
  5. Network isolation verified
  6. Backup retention configured
  7. Password policies enforced

Reports Available:

  • Compliance posture dashboard
  • Evidence collection for audits
  • Gap analysis reports
  • Remediation recommendations

Usage Exampleโ€‹

// Create Jenkins deployment
ApplicationSpec jenkinsSpec = new JenkinsApplicationSpec();

// Access properties
String image = jenkinsSpec.defaultContainerImage(); // "jenkins/jenkins:lts"
int port = jenkinsSpec.applicationPort(); // 8080
String volumeName = jenkinsSpec.volumeName(); // "jenkinsHome"

// EC2 UserData is automatically configured
UserDataBuilder builder = ...;
Ec2Context context = ...;
jenkinsSpec.configureUserData(builder, context);

Adding New Applicationsโ€‹

To add a new ApplicationSpec:

  1. Create a new class implementing ApplicationSpec
  2. Place it in the appropriate category package
  3. Implement all required methods
  4. Document ports, requirements, and security notes
  5. Add to this README

Templateโ€‹

package com.cloudforgeci.api.application.{category};

import com.cloudforge.core.interfaces.ApplicationSpec;
import com.cloudforge.core.interfaces.Ec2Context;
import com.cloudforge.core.interfaces.UserDataBuilder;
import java.util.List;

public class MyAppApplicationSpec implements ApplicationSpec {

private static final String APPLICATION_ID = "myapp";
private static final String DEFAULT_IMAGE = "myapp/myapp:latest";
private static final int APPLICATION_PORT = 8080;
private static final String CONTAINER_DATA_PATH = "/data";
private static final String EFS_DATA_PATH = "/myapp";
private static final String VOLUME_NAME = "myappData";
private static final String CONTAINER_USER = "1000:1000";
private static final String EFS_PERMISSIONS = "755";
private static final String EBS_DEVICE_NAME = "/dev/xvdh";
private static final String EC2_DATA_PATH = "/var/lib/myapp";
private static final List<String> EC2_LOG_PATHS = List.of(
"/var/log/myapp/myapp.log",
"/var/log/userdata.log"
);

// Implement all ApplicationSpec methods...
}

Future Applicationsโ€‹

The following applications are planned for future releases:

CI/CDโ€‹

  • TeamCity, Bamboo, Concourse CI, CircleCI Runner, Buildkite Agent, Woodpecker CI

Version Controlโ€‹

  • Gogs, Forgejo, Phabricator

Monitoringโ€‹

  • Jaeger, Netdata, Uptime Kuma, Zabbix

Databasesโ€‹

  • MySQL, MongoDB, MariaDB, CockroachDB

Project Managementโ€‹

  • Jira, Redmine, Taiga, YouTrack

Artifact Repositoriesโ€‹

  • Nexus, Artifactory, Harbor, GitLab Container Registry

Code Quality & Securityโ€‹

  • SonarQube, Snyk, Checkmarx, Trivy

Referencesโ€‹

Supportโ€‹

For questions or issues with ApplicationSpecs:


CloudForge 3.0.0 - Universal Application Deployment Platform Making cloud infrastructure deployment painless