Admin REST APIs Configuration Options for Confluent Server
The Admin REST APIs in the Confluent Server use the Java clients to talk with Confluent Server internally. This is the same
behavior as Confluent REST Proxy. In addition to the settings described here, you can override the default
settings used by the Java clients, by using the prefixes kafka.rest.client. or
kafka.rest.admin..
All settings that start with confluent.http.server. can be prefixed with confluent.metadata.server.
instead. For example, setting either confluent.http.server.ssl.keystore.type=JKS or
confluent.metadata.server.ssl.keystore.type=JKS has the same effect. The only exception is
confluent.http.server.listeners (enables the embedded HTTP Server but MDS is skipped) and
confluent.metadata.server.listeners (enables MDS).
General
confluent.http.server.listenersComma-separated list of listeners that listen for API requests over either HTTP or HTTPS. If a listener uses HTTPS, the appropriate TLS configuration parameters must aslo be set. If
confluent.metadata.server.listenersis used instead ofconfluent.http.server.listeners, then the Metadata Service will also be enabled on the same listener.Type: list
Default:
http://0.0.0.0:8090Importance: high
confluent.http.server.shutdown.graceful.msAmount of time to wait after a shutdown request for outstanding requests to complete.
Type: int
Default: 1000
Importance: low
kafka.rest.bootstrap.serversA list of Kafka brokers to connect to. For example,
PLAINTEXT://hostname:9092,SSL://hostname2:9092. This setting defaults to the interbroker listener of the broker in which the REST Proxy is running. You can change it in cases where you want the REST Proxy to talk to Kafka through a different listener, for example, because of security.Type: list
Default: interbroker listener, e.g.
PLAINTEXT://localhost:9091Importance: medium
kafka.rest.access.control.allow.methodsSet value to Jetty Access-Control-Allow-Origin header for specified methods.
Type: string
Default: “”
Importance: low
kafka.rest.access.control.allow.originSet value for Jetty Access-Control-Allow-Origin header.
Type: string
Default: “”
Importance: low
kafka.rest.debugIndicates whether extra debugging information is generated in some error response entities.
Type: boolean
Default: false
Importance: low
kafka.rest.request.logger.nameName of the SLF4J logger to write the NCSA Common Log Format request log.
Type: string
Default:
io.confluent.rest-utils.requestImportance: low
kafka.rest.response.mediatype.defaultThe default response media type that should be used if no specify types are requested in an Accept header.
Type: string
Default:
application/jsonImportance: low
kafka.rest.response.mediatype.preferredAn ordered list of the server’s preferred media types used for responses, from most preferred to least.
Type: list
Default: [application/json, application/vnd.kafka.v2+json]
Importance: low
kafka.rest.metrics.jmx.prefixPrefix to apply to metric names for the default JMX reporter.
Type: string
Default:
kafka.restImportance: low
kafka.rest.metrics.num.samplesThe number of samples maintained to compute metrics.
Type: int
Default: 2
Importance: low
kafka.rest.metrics.sample.window.msThe metrics system maintains a configurable number of samples over a fixed window size. This configuration controls the size of the window. For example, you might maintain two samples each measured over a 30 second period. When a window expires, you erase and overwrite the oldest window.
Type: long
Default: 30000
Importance: low
kafka.rest.kafka.rest.resource.extension.classA list of classes to use as RestResourceExtension. Implementing the interface
RestResourceExtensionallows you to inject user defined resources like filters to the Kafka HTTP APIs. Typically used to add custom capabilities like logging, security, etc.Type: list
Default: “”
Importance: low
kafka.rest.advertised.listenersList of advertised listeners. This configuration is used to generate absolute URLs in V3 responses. The HTTP and HTTPS protocols are supported. Each listener must include the protocol, hostname, and port. For example:
http://myhost:8080andhttps://0.0.0.0:8081.Type: list
Default: “”
Importance: low
kafka.rest.confluent.resource.name.authorityThe authority where the governance of the name space is delegated to. This value is defined by the remainder of the CRN. This is used when generating Confluent resource names. For example,
confluent.cloudandmds-01.example.com.Type: string
Default: “”
Importance: low
kafka.rest.response.http.headers.configUse to select which HTTP headers are returned in the HTTP response for Confluent Platform components. Specify multiple values in a comma-separated string using the format
[action][header name]:[header value]where[action]is one of the following:set,add,setDate, oraddDate. You must use quotation marks around the header value when the header value contains commas. For example:kafka.rest.response.http.headers.config="add Cache-Control: no-cache, no-store, must-revalidate", add X-XSS-Protection: 1; mode=block, add Strict-Transport-Security: max-age=31536000; includeSubDomains, add X-Content-Type-Options: nosniff
Type: string
Default: “”
Importance: low
Configuration Options for HTTPS
confluent.http.server.ssl.keystore.locationUsed for HTTPS. The location of the keystore file to use for SSL.
Important
HTTPS requires the server’s FQDN be specified in either the CN or SAN field of the certificate.
Type: string
Default: “”
Importance: high
confluent.http.server.ssl.keystore.passwordUsed for HTTPS. The keystore store password.
Type: password
Default: “”
Importance: high
confluent.http.server.ssl.key.passwordUsed for HTTPS. The password of the private key in the keystore file.
Type: password
Default: “”
Importance: high
confluent.http.server.ssl.keystore.typeUsed for HTTPS. The keystore format.
Type: string
Default: JKS
Importance: medium
confluent.http.server.ssl.protocolUsed for HTTPS. The TLS protocol used to generate the SSLContext. The default is
TLSv1.3when running with Java 11 or newer,TLSv1.2otherwise. This value should be fine for most use cases. Allowed values in recent JVMs areTLSv1.2andTLSv1.3.TLS,TLSv1.1,SSL,SSLv2andSSLv3might be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities. With the default value for this configuration andssl.enabled.protocols, clients downgrade toTLSv1.2if the server does not supportTLSv1.3. If this configuration is set toTLSv1.2, clients do not useTLSv1.3, even if it is one of the values inssl.enabled.protocolsand the server only supportsTLSv1.3.Type: string
Default:
TLSv1.3Importance: medium
confluent.http.server.ssl.providerUsed for HTTPS. The TLS security provider name. Leave blank to use Jetty’s default.
Type: string
Default: “” (Jetty’s default)
Importance: medium
confluent.http.server.ssl.enabled.protocolsUsed for HTTPS. A comma-separated list of protocols enabled for TLS connections. Leave blank to use Jetty’s defaults.
Type: list
Default: “” (Jetty’s default)
Importance: medium
confluent.http.server.ssl.keymanager.algorithmUsed for HTTPS. The algorithm used by the key manager factory for TLS connections. Leave blank to use Jetty’s default.
Type: string
Default: “” (Jetty’s default)
Importance: low
confluent.http.server.ssl.trustmanager.algorithmUsed for HTTPS. The algorithm used by the trust manager factory for TLS connections. Leave blank to use Jetty’s default.
Type: string
Default: “” (Jetty’s default)
Importance: low
confluent.http.server.ssl.cipher.suitesUsed for HTTPS. A comma-separated list of TLS cipher suites. Leave blank to use Jetty’s defaults.
Type: list
Default: “” (Jetty’s default)
Importance: low
confluent.http.server.ssl.endpoint.identification.algorithmUsed for HTTPS. The endpoint identification algorithm to validate the server hostname using the server certificate. Leave blank to use Jetty’s default.
Type: string
Default: https
Importance: low
Configuration Options for TLS Encryption between Admin REST APIs and Kafka Brokers
If the interbroker listener of the broker that the REST Proxy is running on has security enabled and there is an authorizer.class.name configured, you must manually configure the Java clients in the REST Proxy so that they can securely communicate with Kafka.
You can use both kafka.rest.client. or kafka.rest.admin. for the configurations below.
kafka.rest.client.security.protocolProtocol used to communicate with brokers. Valid values are: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL.
Type: string
Default: PLAINTEXT
Importance: high
kafka.rest.client.ssl.key.passwordThe password of the private key in the key store file. This is optional for client.
Type: password
Default: null
Importance: high
kafka.rest.client.ssl.keystore.locationThe location of the key store file. This is optional for client and can be used for two-way client authentication.
Type: string
Default: null
Importance: high
kafka.rest.client.ssl.keystore.passwordThe store password for the key store file. This is optional for client and only needed if ssl.keystore.location is configured.
Type: password
Default: null
Importance: high
kafka.rest.client.ssl.truststore.locationThe location of the trust store file.
Type: string
Default: null
Importance: high
kafka.rest.client.ssl.truststore.passwordThe password for the trust store file.
Type: string
Default: null
Importance: high
kafka.rest.client.ssl.enabled.protocolsThe comma-separated list of protocols enabled for TLS connections. The default value is
TLSv1.2,TLSv1.3when running with Java 11 or later,TLSv1.2otherwise. With the default value for Java 11 (TLSv1.2,TLSv1.3), Kafka clients and brokers prefer TLSv1.3 if both support it, and falls back to TLSv1.2 otherwise (assuming both support at least TLSv1.2).Type: list
Default:
TLSv1.2,TLSv1.3Importance: medium
kafka.rest.client.ssl.keystore.typeThe file format of the key store file. This is optional for client.
Type: string
Default: JKS
Importance: medium
kafka.rest.client.ssl.protocolThe TLS protocol used to generate the SSLContext. The default is
TLSv1.3when running with Java 11 or newer,TLSv1.2otherwise. This value should be fine for most use cases. Allowed values in recent JVMs areTLSv1.2andTLSv1.3.TLS,TLSv1.1,SSL,SSLv2andSSLv3might be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities. With the default value for this configuration andssl.enabled.protocols, clients downgrade toTLSv1.2if the server does not supportTLSv1.3. If this configuration is set toTLSv1.2, clients do not useTLSv1.3, even if it is one of the values inssl.enabled.protocolsand the server only supportsTLSv1.3.Type: string
Default:
TLSv1.3Importance: medium
kafka.rest.client.ssl.providerThe name of the security provider used for TLS connections. Default value is the default security provider of the JVM.
Type: string
Default: null
Importance: medium
kafka.rest.client.ssl.truststore.typeThe file format of the trust store file.
Type: string
Default: JKS
Importance: medium
kafka.rest.client.ssl.cipher.suitesA list of cipher suites. This is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS. By default, all the available cipher suites are supported.
Type: list
Default: null
Importance: low
kafka.rest.client.ssl.endpoint.identification.algorithmThe endpoint identification algorithm to validate server hostname using server certificate.
Type: string
Default: null
Importance: low
kafka.rest.client.ssl.keymanager.algorithmThe algorithm used by key manager factory for TLS connections. Default value is the key manager factory algorithm configured for the Java Virtual Machine.
Type: string
Default: SunX509
Importance: low
kafka.rest.client.ssl.secure.random.implementationThe SecureRandom PRNG implementation to use for TLS cryptography operations.
Type: string
Default: null
Importance: low
kafka.rest.client.ssl.trustmanager.algorithmThe algorithm used by trust manager factory for TLS connections. Default value is the trust manager factory algorithm configured for the Java Virtual Machine.
Type: string
Default: PKIX
Importance: low