Governance Service Configuration
Customer-facing configuration categories for Governance Service.
Governance Service configuration is managed through the deployment chart and customer environment values. This page describes the configuration areas operators should understand before release, and the environment variables the service reads, including a few the chart does not set.
Required Configuration Areas
- Auth Service connection for identity and authorization checks.
- Platform database connection for durable governance records.
- Object storage provider for attachments.
- Integrity Service connection for signed governance records. Creating projects, creating or applying policies, submitting declarations, reviews, and attachments, exporting reports, and issuing credentials all fail without it.
- PDFGen connection for downloadable reports,
PDFGEN_SERVICE_URL. PDFGen’s own settings are in PDFGen Configuration.
Object Storage
Supported attachment storage providers are Azure Blob Storage, Google Cloud Storage, AWS S3, and a mock provider for local or non-production use.
Use production-grade object storage for customer environments. Confirm bucket or container access before enabling attachment-heavy workflows.
Identity Provider Alignment
Governance Service does not replace Auth Service. It must be configured to trust the Auth Service deployment that owns users, roles, API keys, and service accounts.
Environment Variables
The main variables Governance Service reads, by category:
| Category | Variable | Default |
|---|---|---|
| Server | PORT | 10001 |
| Server | ENVIRONMENT | local |
| Server | SERVICE_VERSION | dev; the chart sets its version |
| Server | SERVER_READ_TIMEOUT_SECONDS | 30 |
| Server | SERVER_WRITE_TIMEOUT_SECONDS | 30 |
| Server | SERVER_IDLE_TIMEOUT_SECONDS | 120 |
| Server | SWAGGER_ENABLED | true |
| Database | DB_HOST / DB_USER / DB_NAME | none, required |
| Database | DB_PASSWORD | none |
| Database | DB_PORT | none |
| Database | DB_SSLMODE | disable |
| Database | MIGRATIONS_RUN_AT_STARTUP | false; the chart sets true |
| Database | MIGRATIONS_PATH | migrations; the chart sets /app/migrations |
| Auth Service | AUTH_SERVICE_URL | http://localhost:8080 |
| Auth Service | AUTH_SERVICE_API_KEY | none |
| Auth Service | AUTH_CACHE_TTL | 30s |
| Auth Service | AUTH_CACHE_SIZE | 10000 |
| Auth Service | AUTH_CLIENT_TIMEOUT | 10s |
| Identity | AUTH0_DOMAIN / AUTH0_CLIENT_ID / AUTH0_CLIENT_SECRET | none |
| Identity | AUTH0_SYNC_AT_STARTUP | false; the chart sets true |
| Identity | AUTH0_SYNC_PAGE_SIZE | 50 |
| Identity | KEYCLOAK_URL / KEYCLOAK_REALM / KEYCLOAK_CLIENT_ID / KEYCLOAK_CLIENT_SECRET | none |
| Identity | ENTRA_TENANT_ID / ENTRA_CLIENT_ID / ENTRA_CLIENT_SECRET | none |
| Integrations | INTEGRITY_SERVICE_URL | http://localhost/integrityService |
| Integrations | PDFGEN_SERVICE_URL | http://localhost:8000 |
| Integrations | CONTROL_PLANE_URL | none; the chart sets it from config.controlPlaneUrl, empty by default |
| Object storage | STORAGE_PROVIDER | detected, else mock |
| Object storage | AZURE_STORAGE_ACCOUNT_NAME / AZURE_STORAGE_CONTAINER_NAME | none |
| Object storage | AZURE_STORAGE_ACCOUNT_KEY / AZURE_STORAGE_CONNECTION_STRING | none |
| Object storage | AZURE_USE_MANAGED_IDENTITY | false |
| Object storage | GCS_BUCKET_NAME | none |
| Object storage | GCS_CREDENTIALS_FILE / GCS_CREDENTIALS_JSON | Application Default Credentials |
| Object storage | AWS_S3_BUCKET_NAME / AWS_REGION | none |
| Object storage | AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY | the default AWS credential chain |
| Idempotency | IDEMPOTENCY_TTL_HOURS | 24 |
| Idempotency | IDEMPOTENCY_CLEANUP_INTERVAL_MINUTES | 60 |
| Logging | LOG_LEVEL | info |
| Logging | LOG_FORMAT | text when ENVIRONMENT is local, otherwise JSON; the chart sets json |
| Logging | LOGGER_SKIP_PATHS | /health |
STORAGE_PROVIDER accepts azure_blob, gcs, aws_s3, or mock. When it is unset, the service picks gcs if GCS_BUCKET_NAME is set, then azure_blob if AZURE_STORAGE_ACCOUNT_NAME is set, then aws_s3 if AWS_S3_BUCKET_NAME is set, and mock otherwise. Azure Blob Storage needs a connection string, an account key, or AZURE_USE_MANAGED_IDENTITY=true; startup fails without one.
Without AUTH_SERVICE_API_KEY, Governance Service cannot get the governance worker’s service-account token from Auth Service. Indicator-generated declarations fail, and so does most of an agent assessment: pinning configurations, registering declaration files, reviewing controls, issuing agent certifications, and a reviewer revoking a certification they authorized.
Without CONTROL_PLANE_URL, agent assessments cannot reach the agent registry, so starting an assessment fails, no agent certification can be issued, and certifications are never attached to or refreshed in the gateway. The chart sets it only when config.controlPlaneUrl is set, so with the Gateway Stack set that value to the Control Plane’s in-cluster URL; see Agent Certification.
The chart does not set AUTH_CACHE_TTL, AUTH_CACHE_SIZE, AUTH_CLIENT_TIMEOUT, IDEMPOTENCY_TTL_HOURS, IDEMPOTENCY_CLEANUP_INTERVAL_MINUTES, or GCS_CREDENTIALS_JSON, so a chart deployment uses their defaults.
Operational Settings
Operators should confirm health checks, readiness behavior, idempotency settings, database migration behavior, and upgrade notes before release. Keep customer-specific secrets out of product documentation and store them in the deployment’s secret management system.
Related
- Governance Service Operations — readiness checks for each configured dependency
- Chart Values — where these settings live in values.yaml and secrets.yaml
- Object Storage — setup guides for each attachment storage provider
- Auth Service Configuration — the Auth Service settings this service must trust
- Integrity Service Operations — what the Integrity Service connection needs on the other side
- Control Plane Configuration — the service
CONTROL_PLANE_URLpoints at