Skip to content

Configuration Reference

Ephor follows the 12-factor app methodology. All runtime configuration is provided through environment variables.

Database

VariableDefaultDescription
SPRING_DATASOURCE_URLjdbc:postgresql://localhost:5432/ephorJDBC connection URL
SPRING_DATASOURCE_USERNAMEephorDatabase username
SPRING_DATASOURCE_PASSWORDephorDatabase password

Ephor requires PostgreSQL. Other databases are not supported.

Authentication

VariableDefaultDescription
AUTH_ENABLEDtrueEnable authentication enforcement
AUTH_DEV_ENABLEDfalseBypass authentication with a development user. Never enable in production.
AUTH_PROVIDERoauth2-proxyAuthentication provider
AUTH_LOGIN_URL/oauth2/startRedirect URL for unauthenticated users
AUTH_LOGOUT_URL/oauth2/sign_outRedirect URL after logout

Development User

Only effective when AUTH_DEV_ENABLED=true.

VariableDefaultDescription
AUTH_DEV_USERNAMEdev-userUsername for the development user
AUTH_DEV_EMAILdev@localhostEmail for the development user
AUTH_DEV_GROUPSephor-admins,developers,security-teamComma-separated groups
AUTH_DEV_DISPLAY_NAMEDevelopment UserDisplay name

User Directory

VariableDefaultDescription
EPHOR_USER_DIRECTORY_PROVIDERinternalProvider for user/group sync. Options: internal, keycloak, github, none

Keycloak Provider

Used when EPHOR_USER_DIRECTORY_PROVIDER=keycloak.

VariableDescription
KEYCLOAK_SERVER_URLBase URL of the Keycloak server
KEYCLOAK_REALMKeycloak realm name
KEYCLOAK_CLIENT_IDClient ID for API access
KEYCLOAK_CLIENT_SECRETClient secret for API access
KEYCLOAK_SYNC_INTERVALSync interval in milliseconds (default: 900000 / 15 minutes)

The Keycloak service account needs the following realm roles: view-users, manage-users, query-users, query-groups, query-realms.

GitHub Provider

Used when EPHOR_USER_DIRECTORY_PROVIDER=github.

VariableDescription
GITHUB_ORGGitHub organization name
GITHUB_TOKENPersonal access token with read:org scope
GITHUB_SYNC_INTERVALSync interval in milliseconds (default: 1800000 / 30 minutes)

Team-to-group mappings are configured via Spring Boot relaxed binding. By default, GitHub team slugs are used directly as group names.

Enrichment

Ephor enriches findings with exploitation data from two public feeds: the CISA Known Exploited Vulnerabilities (KEV) catalog and FIRST EPSS scores. This data drives priority tiers. The feeds are pulled on a schedule by the API; nothing is sent outbound except the feed requests themselves.

VariableDefaultDescription
EPHOR_ENRICHMENT_ENABLEDtrueEnable the KEV/EPSS enrichment scheduler
EPHOR_ENRICHMENT_KEV_URLCISA KEV catalogSource URL for the KEV catalog (JSON)
EPHOR_ENRICHMENT_EPSS_URLFIRST EPSS scoresSource URL for the daily EPSS scores (gzipped CSV)
EPHOR_ENRICHMENT_REFRESH_INTERVAL86400000Time between refreshes, in milliseconds (default: 1 day)
EPHOR_ENRICHMENT_INITIAL_DELAY30000Delay before the first run after startup, in milliseconds
EPHOR_ENRICHMENT_EPSS_THRESHOLD0.10EPSS probability at or above which a CVE counts as exploitable

A failed feed refresh leaves the previously stored values in place, so a transient outage does not blank out enrichment data. Findings with no CVE ID (some GHSA-only advisories) are not matched by either feed. For air-gapped installs, point the URLs at an internal mirror of the two feeds.

Logging

VariableDefaultDescription
LOGGING_STRUCTURED_FORMAT_CONSOLE(none)Set to ecs or logstash for structured JSON logging. Leave unset for human-readable output.

Server

VariableDefaultDescription
PORT8080Port the API listens on

Licensed under AGPL v3