Schema Registry
About the Schema Registry
The Schema Registry provides client applications with the Avro schemas available in a specific tenant.
The Schema Registry is always connected to a single Kafka Broker in the same cluster to allow for clusters to have different tenant/instance isolation patterns.
Enabling authentication
Schema Registry supports two types of authentication
Both
|
Enabling Basic authentication
If SASL is enabled, you can enable basic authentication. In this approach each connection to the SSL endpoint must provide a valid username and password. This is disabled by default, but can be activated per cluster.
See the Deployment page for more information about the different service types, like cluster and instance services. |
Using Axual CLI
Add or modify the following configuration in the Schema Registry config file for the tenant instance.
# Disables Basic auth for cluster cluster1 and enables it for the cluster cluster2. These clusters are defined in this config as well
SR_SLAVE_BASIC_AUTH_ENABLED=cluster1:false,cluster2:true
# Instance-api url
SR_SLAVE_CLIENT_AUTH_SERVICE_URL="https://<hostname>:<port>/credentials/authorize"
# Auth service SSL enabled
SR_SLAVE_CLIENT_AUTH_SERVICE_SECURITY_ENABLED=true
# Auth service keystore location inside the container
SR_SLAVE_CLIENT_AUTH_SERVICE_SSL_KEYSTORE="/security/client.keystore.jks"
# Auth service keystore password
SR_SLAVE_CLIENT_AUTH_SERVICE_SSL_KEYSTORE_PASSWORD="password"
# Auth service keystore password
SR_SLAVE_CLIENT_AUTH_SERVICE_SSL_KEY_PASSWORD="password"
# Auth service truststore location inside the container
SR_SLAVE_CLIENT_AUTH_SERVICE_SSL_TRUSTSTORE="/security/client.truststore.jks"
# Auth service truststore password
SR_SLAVE_CLIENT_AUTH_SERVICE_SSL_TRUSTSTORE_PASSWORD="password"
You need to add Example:
Assuming Schema Registry
|
Using Axual Helm Charts
Open the values.yaml
for your instance and add the following configuration and update
platform:
instance:
schemaregistry:
security:
slave:
basicAuth:
enabled: false
# Override Instance API URL if it runs outside the K8S cluster
# instanceApiUrlOverride: ""
# SSL config used to interact with Instance API
ssl:
enabled: true
clientKeystore: "/u3+7QAAAAIAAAABAAAAAQAh..."
clientKeyPassword: password
clientKeystorePassword: password
clientTruststore: "/u3+7QAAAAIAAAAFAAAAAgA..."
clientTruststorePassword: password
You need to add Example: Assuming Schema Registry
|
Enabling authentication with a client certificate (Mutual TLS)
The Schema Registry has support for authentication with Mutual TLS. In this approach each connection to the SSL endpoint must provide a client certificate signed by a certificate authority trusted in the instance. This is disabled by default, but can be activated per cluster.
See the Deployment page for more information about the different service types, like cluster and instance services. |
Using Axual CLI
Add or modify the following configuration in the Schema Registry config file for the tenant instance.
# Disables mTLS for cluster cluster1 and enables it for the cluster cluster2. These clusters are defined in this config as well
SR_SLAVE_SSL_CLIENT_AUTH=cluster1:false,cluster2:true
# If SR_SLAVE_SSL_CLIENT_AUTH is enabled then only this property will be in effect.
# This is use to define SSL authentication NEED or WANT. Possible values true & false.
# If true, means NEED else WANT
SR_SLAVE_SSL_CLIENT_AUTH_NEED=cluster1:false,cluster2:true
TLS Protocols and Cipher Suites
Want to enable other TLS protocol versions and cipher suites?
From |
If broker is set to use old TLS protocols (like |
If you still want to enable old TLS protocol versions, you can add it by setting a configuration as mentioned below:
Using Axual CLI
Add or modify the following configuration in the Schema Registry config file for the tenant instance.
# Schema Registry Master
# Leave blank to use Jetty’s defaults.
SR_MASTER_SERVER_SSL_PROTOCOLS="TLSv1.2,TLSv1.1,TLSv1"
# A comma-separated list of SSL cipher suites. By default empty to use Jetty’s defaults.
SR_MASTER_SERVER_SSL_CIPHER_SUITES=
# Protocols enabled for SSL connections to Kafka.
SR_MASTER_CLIENT_SSL_PROTOCOLS="TLSv1.2,TLSv1.1,TLSv1"
# A comma-separated list of SSL cipher suites enabled for SSL connections to Kafka
# If not configured, all the available cipher suites are supported.
SR_MASTER_CLIENT_SSL_CIPHER_SUITES=
# Schema Registry Slave
# Leave blank to use Jetty’s defaults.
SR_SLAVE_SERVER_SSL_PROTOCOLS="TLSv1.2,TLSv1.1,TLSv1"
# A comma-separated list of SSL cipher suites. By default empty to use Jetty’s defaults.
SR_SLAVE_SERVER_SSL_CIPHER_SUITES=
# Protocols enabled for SSL connections to Kafka.
SR_SLAVE_CLIENT_SSL_PROTOCOLS="TLSv1.2,TLSv1.1,TLSv1"
# A comma-separated list of SSL cipher suites enabled for SSL connections to Kafka
# If not configured, all the available cipher suites are supported.
SR_SLAVE_CLIENT_SSL_CIPHER_SUITES=
Using Axual Helm Charts
Edit the values.yaml
for your instance and add the following configuration
platform:
instance:
schemaregistry:
security:
slave:
server:
# Leave blank to use Jetty’s defaults.
protocols: TLSv1.2,TLSv1.1,TLSv1
# A comma-separated list of SSL cipher suites. Leave blank to use Jetty’s defaults.
cipherSuites:
client:
protocols: TLSv1.2,TLSv1.1,TLSv1
# A comma-separated list of SSL cipher suites enabled for SSL connections to Kafka
# If not configured, all the available cipher suites are supported.
cipherSuites:
master:
server:
# Leave blank to use Jetty’s defaults.
protocols: TLSv1.2,TLSv1.1,TLSv1
# A comma-separated list of SSL cipher suites. Leave blank to use Jetty’s defaults.
cipherSuites:
client:
protocols: TLSv1.2,TLSv1.1,TLSv1
# A comma-separated list of SSL cipher suites enabled for SSL connections to Kafka
# If not configured, all the available cipher suites are supported.
cipherSuites: