Forge Containers are now available through Forge's Early Access Program (EAP). To start testing this feature, submit your app's ID to our team through this link.
EAPs are offered to selected users for testing and feedback purposes. APIs and features under EAP are unsupported and subject to change without notice. APIs and features under EAP are not recommended for use in production environments.
For more details, see Forge EAP, Preview, and GA.
This page sets out the mandatory security requirements and strongly recommended recommendations for building container images used by your app. Following these guidelines ensures your app is hardened against infrastructure attacks, maintains strict tenant isolation, and meets the transparency standards required for Marketplace approval.
During the Marketplace approval process, we also review the images used by your app for compliance with these guidelines.
These guidelines complement the platform-level controls described in Forge Containers overview: Security. They map to controls in the NIST SP 800-190 Container Security Guide.
| Requirement | Summary | NIST SP 800-190 reference |
|---|---|---|
| Privilege level | Run as non-root (UID 1000, GID 1000). | 4.4.4 (App vulnerabilities) |
| Maintenance | Rebuild images at least every 180 days. | 4.2.2 (Stale images in registries) |
| Data privacy and tenant scoping | Scope requests per installation; remain stateless. | 3.5.1 (Data privacy/integrity) |
| Data egress | Route outbound traffic via FORGE_EGRESS_PROXY_URL; listen only on SERVER_PORT. | 3.4.2 and 4.4.2 (Unbounded network access from containers) |
| Secret management | No hardcoded credentials; inject secrets as encrypted environment variables or via the Forge KVS secret store. | 3.1.4 (Embedded clear text secrets); 4.1.4 (Dynamic injection) |
| Recommendation | Summary | NIST SP 800-190 reference |
|---|---|---|
| Base image | Use distroless or minimal base images. | 3.1.1 (Image vulnerabilities) |
| Dependencies | Use multi-stage builds; strip shells and build tools. | 2.3.1 (Image creation, testing, and accreditation) |
This section lists mandatory requirements for images. If non-compliant images are pushed to the Forge Container registry and used by your app, vulnerabilities will be assigned in accordance with the Marketplace Security Bugfix policy.
Non-root execution. Running containers with elevated privileges is a primary vector for host-to-container escapes.
UID 1000 and GID 1000. Root-owned processes will fail to deploy.For more details, see Managing a service.
NIST SP 800-190 reference: 4.4.4 (App vulnerabilities).
Lifecycle rule. Stale container images pose a significant security risk because they contain outdated libraries and OS packages with known vulnerabilities (CVEs) that have been discovered since the image was last built.
NIST SP 800-190 reference: 4.2.2 (Stale images in registries).
Strict tenant isolation. App developers must ensure that customer data is handled with care, and in accordance with the Forge shared responsibility model. Detailed best practices are available on our Data privacy guidelines for developers. In particular, apps utilising Forge containers should observe tenant isolation best practices:
For more details, see Tenant data isolation and Storage overview.
NIST SP 800-190 reference: 3.5.1 (Data privacy/integrity).
Deny-by-default. The Forge Containers environment always operates under a deny-by-default network architecture.
FORGE_EGRESS_PROXY_URL environment variable. Connections that bypass the proxy will be blocked.SERVER_PORT environment variable.For more details, see API contract and Runtime egress permissions.
NIST SP 800-190 reference: 3.4.2 and 4.4.2 (Unbounded network access from containers).
No hardcoded credentials. Hardcoded credentials are a major security risk.
API keys, tokens and other app secrets must not be stored staticaly in the image definition. Secrets and credentials can be injected as encrypted environment variables at build time or the Forge KVS secret store at runtime.
For more details, see Manage environment variables with the Forge CLI.
NIST SP 800-190 references: 3.1.4 (Embedded clear text secrets); 4.1.4 (Dynamic injection).
This section lists strongly recommended best practices. Any deviations from these recommendations may be flagged during app review.
Minimalist footprint. To reduce the attack surface, use base images that include only the libraries essential to your app's operation.
apt or yum) or full OS suites are discouraged.Resources: Consider using Docker Hardened Images or the Red Hat Universal Base Image (UBI) as a starting point.
NIST SP 800-190 reference: 3.1.1 (Image vulnerabilities).
Multi-stage builds. The final production image should be a clean runtime that does not contain the build tools used during development. Multi-stage builds let you use one image for building (with all the heavy compilers and tools) and a separate, clean image for production.
If your app requires a shell or a specific system utility to function, you must provide a documented use case during the app review process.
Approval criteria:
axios or fetch instead of curl) are rejected.Best practice: Favour static binaries and library-based implementations to ensure your app passes the automated static image scan without requiring manual intervention.
NIST SP 800-190 reference: 2.3.1 (Image creation, testing, and accreditation).
Rate this page: