Skip to main content
Environment variables for configuring Conduktor Schema Registry Proxy (SRP). For ready-to-adapt deployment examples, see Schema Registry Proxy configuration examples. SRP has three separate connections, each authenticated and secured independently. Keep them apart when configuring the proxy:
  1. Clients to SRP: how your applications authenticate to the proxy (client authentication) and whether the proxy endpoint serves HTTPS.
  2. SRP to Schema Registry: the proxy’s own credentials for the backend registry (Schema Registry backend connection). Client credentials are never forwarded to the backend.
  3. SRP to Kafka: the proxy’s connection to the backing Kafka cluster (Kafka connection), used by the reactive and topic-acl authorization modes.

Core settings

These settings control the identity and clustering behavior of the SRP instance. The SCHEMA_REGISTRY_PROXY_APP_ID is how Console differentiates between multiple SRP deployments in your infrastructure. The clustering settings (CLUSTER_NODE_INDEX, CLUSTER_MAX_NODE_INDEX) enable high-availability deployments where multiple SRP instances work together to handle load and provide failover.

License

SRP requires a Conduktor Scale or Gateway license and refuses to start without a valid one. The license is checked once, at startup — a proxy that is already running keeps serving after its license expires, but the next restart fails. The license expiry date is exported as the license_expiry_timestamp_seconds Prometheus metric (Unix timestamp; not exported for licenses without an expiry date), so you can alert before a restart would fail.

Client authentication (clients to SRP)

Determines how SRP validates the identity of clients making requests. AUTH_PROVIDER is required and has no default: SRP refuses to start until it is set.

JWT authentication

Production-ready authentication that validates JSON Web Tokens (JWT) against an OAuth2/OIDC provider’s JWKS endpoint (for example Keycloak, Auth0 or Okta). The authenticated identity (the configured claim) is the service account name authorization checks run against.

HTTP Basic authentication

File-based username/password authentication, with no dependency on an external identity provider. Credentials are read from a JSON file mounted into the container and hot-reloaded on change, so you can rotate credentials without restarting the proxy. Passwords are bcrypt hashes; plaintext passwords are rejected unless explicitly allowed.
The file is validated at startup: with AUTH_PROVIDER=basic, the proxy refuses to start on a missing, unreadable or empty file, invalid JSON, a duplicate user, or a malformed hash — each with a message naming the file and the fix. Supported bcrypt variants are 2a, 2b and 2y, with a cost between 4 and 31 (the cost range is checked at load time, not on a live request). Live reload replaces the credential set atomically: in-flight requests see either the old or the new set, never a half-applied one. A malformed or unreadable file is not applied and does not clear the credential set — the last good snapshot keeps serving and the next tick retries. Reload outcomes are exported as the basic_auth_credentials_reload_total{result="success|failure"} metric; alert on failure, since it means the file on disk and the credentials in force have drifted apart. Performance: bcrypt verification is deliberately expensive — at cost 12 it would dominate the latency of every proxied call. To keep it out of the hot path, a verified username and password pair is remembered for two minutes (at most 1,024 entries; successes only; the password itself is never stored). Two consequences: a wrong password always pays the full bcrypt cost, so brute-force attempts stay expensive — and so does a workload that sends a different credential on every request. Deleting a user takes effect on the next reload regardless of the cache, because credentials are consulted before it. An unknown username fails in the same time as a wrong password, so response timing doesn’t reveal which usernames exist, and passwords longer than 72 bytes (the bcrypt maximum) are a plain 401, not a server error.

HTTPS for the proxy endpoint

Enables HTTPS between clients and SRP: encrypts schema data in transit, authenticates the server to clients and can optionally authenticate clients to the server (mutual TLS). Both JKS (Java KeyStore) and PEM certificate formats are supported.

JKS keystore mode

PEM certificate mode

mTLS (client certificates)

Authorization

AUTHORIZATION_MODE selects how SRP decides whether an authenticated client may perform a schema operation. Every mode implements the same contract: schema registration requires Write on the subject, every other proxied endpoint requires Read, and a denied request returns HTTP 403. See authorization modes for how each mode works and when to use it.
  • reactive (default): permissions managed in Conduktor Console via Self-service and distributed to SRP over Kafka.
  • topic-acl (standalone): permissions derived from the Kafka topic ACLs already defined in the backing cluster.
  • read-only (standalone): every authenticated read passes through, every write is rejected. No Kafka connection needed.

Schema Registry backend connection (SRP to Schema Registry)

Defines how SRP connects to the Confluent Schema Registry where schemas are stored. These are the proxy’s own credentials: SRP authenticates to the backend itself (Basic Auth, OAuth or mTLS) and never forwards client credentials upstream.

Backend selection

Confluent Schema Registry connection

Basic authentication to Schema Registry

Bearer/OAuth authentication to Schema Registry

TLS to Schema Registry

Kafka connection (SRP to Kafka)

The proxy’s own connection to the backing Kafka cluster. Which parts you need depends on the authorization mode:
  • reactive mode uses Kafka to receive permission updates from Console (_conduktor_srp_commands), publish heartbeats for Console discovery (_conduktor_srp_events) and keep multiple SRP instances in sync.
  • topic-acl mode uses this connection to read topic ACLs through the Kafka Admin API.
  • read-only mode needs no Kafka connection at all.
The security settings configure how SRP authenticates to your Kafka cluster (SASL, SSL, OAuth).

Connection

Console synchronization topics (reactive mode)

Kafka security protocol

SASL configuration

SASL/OAUTHBEARER configuration

Kafka TLS configuration

Observability

Enables monitoring and troubleshooting capabilities:
  • OpenTelemetry: distributed tracing to track requests through the system, helping identify bottlenecks and failures
  • Prometheus metrics: operational metrics (request counts, latencies, error rates) for monitoring and alerting
  • Logging: structured JSON logs for debugging and audit trails

OpenTelemetry configuration

Logging configuration