Skip to main content

Security

About 3 min

Information Security

StormBPMN Enterprise ensures a high level of information security through a multi-layered protection system, including regular dependency updates, vulnerability scanning, and flexible access settings.

Security Principles

  • Least Privilege - only the necessary permissions
  • Defense in Depth - multi-layered security system
  • Audit of All Actions - complete logging of operations
  • Data Encryption - protection of passwords and confidential information


Security Environment Variables

Basic security settings are configured via ENV variables:

VariableDescriptionExample ValueDefault
STORM_ALLOWED_ORIGINSAllowed request origins (CORS)https://stormbpmn.company.com*
STORM_DISABLE_SIMPLE_AUTHDisable built-in authorizationtruefalse
STORM_DISABLE_ENV_IN_UIHide ENV variables in the admin paneltruefalse
STORM_DISABLE_ANON_SHARINGProhibit anonymous access to diagramstruefalse
JWTSECRETSalt for password encryptionMinimum 64 random characters-
SESSION_EXPIRATIONSession lifetime, in seconds (no more than 7776000)864007 days

Security Recommendations

  • STORM_ALLOWED_ORIGINS: You must specify specific domains instead of * in production
  • JWTSECRET: Use a cryptographically secure random string of at least 64 characters β€” tokens are signed with the HS512 algorithm, which requires a key of β‰₯512 bits. With a short key, user login will fail with WeakKeyException
  • STORM_DISABLE_ENV_IN_UI: Enable in production to hide confidential data

Password Requirements

When creating user accounts, changing a password, or restoring access, the system validates the password against the following requirements:

  • Minimum length β€” 8 characters
  • Maximum length β€” 72 bytes in UTF-8 encoding
  • Prohibition of common passwords β€” the password must not be included in the list of frequently used values

Error when setting a password

If the password does not meet the requirements, the system will return an error: "This password is too common β€” choose another one."

In an Enterprise installation, the requirements can be tightened: length and complexity, lockout after failed login attempts, password expiration, prohibition of repeating recent passwords β€” Password Policy.



Settings in the Admin Panel

User Management

ParameterDescriptionRecommendation for production
showRegistrationShow the registration form❌ Disable
showBasicLoginShow login/password fields❌ When using OAuth2
showCustomLoginButtonNameCustom login button textAs required
customLoginButtonNameLogin button text"Π’ΠΎΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚"

Public Access

ParameterDescriptionProduction Recommendation
enableAnonSearchPageSearch for unauthenticated users❌ Disable
allDiagramsAnonAccessAnonymous access to all diagrams❌ Disable

Corporate Settings

ParameterDescriptionRecommendation
enableCommonAssetsCommon architecture elements for all teamsβœ… Enable for large companies
enableCommonRolesCommon roles for all teamsβœ… Enable for standardization
enableCommonUsersCommon org structure for all teamsβœ… Enable for centralization


Audit Logging

Complete logging of all user actions β€” to the console, to a SIEM via Syslog, or to a dedicated TimescaleDB database: Audit Logging.



Authentication System

Corporate authentication (OAuth2, Keycloak, Microsoft ADFS), claims validation, and built-in login are covered in a separate article β€” Authentication System.


Adding Custom SSL Certificates

Problem

If you use your own MinIO, S3, or another HTTPS service with a self-signed certificate, Java inside the container may not trust it. This will result in the following error:

javax.net.ssl.SSLHandshakeException: PKIX path building failed

Solution

You need to mount your own truststore.jks, replacing the standard Java truststore.

Step 1. Creating truststore.jks

If you have a certificate file (for example, minio-ca.crt), run:

keytool -importcert \
  -file minio-ca.crt \
  -alias my-root-ca \
  -keystore truststore.jks \
  -storepass changeit \
  -noprompt

Truststore password

The password changeit is standard for a Java truststore. You can use a different one, but it must match in the command and at startup.

Step 2. Truststore path in the container

The StormBPMN container uses the image eclipse-temurin:11-jre-alpine. The path to the standard truststore:

/opt/java/openjdk/lib/security/cacerts

Path verification

If mounting does not work, check the current path using the command:

docker run --rm eclipse-temurin:11-jre-alpine find /opt -name "cacerts" 2>/dev/null

Step 3. Run with truststore replacement

In docker-compose.yml:

services:
    stormbpmn:
        image: _ваш_ΠΎΠ±Ρ€Π°Π·_
        volumes:
            - ./truststore.jks:/opt/java/openjdk/lib/security/cacerts:ro

Or in the command line:

docker run \
  -v $(pwd)/truststore.jks:/opt/java/openjdk/lib/security/cacerts:ro \
  _ваш_ΠΎΠ±Ρ€Π°Π·_

Result

Java in the container will use your truststore and trust the specified certificates. No changes to environment variables are required.


Security checklist

Mandatory settings

Additional measures



Related documentation

Need help?

For security-related inquiries, contact help@stormbpmn.com or your account manager.