Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The rest.advertised.host.name and rest.advertised.port options will continue to be used as today to specify the connection address which should be used by other workers. In addition a new option rest.advertised.security.protocol will define whether other workers should connect using HTTP or HTTPS protocols. In case HTTPS is selected, the connecting worker will use the SSL configuration from the ssl.* options.

This proposal doesn't include any authorization / ACL features. Only encryption and authentication. Authorization / ACLs should be subject of separate KIP in order to keep the scope of this KIP under control. It also doesn't add any other authentication options than SSL/TLS client authentication.

Public Interfaces

Configuration of SSL / TLS for the Kafka Connect REST interface will tries to follow the configuration for other SSL / TLS enabled server interfaces. It will be done through the properties configuration file for the distributed Kafka Connect workers. It will add following

Following new options will be added:

ParameterDefault valueNote
listenersnullList of REST listeners in the format protocol://host:port,protocol2://host2:port2 where the protocol is one of HTTP and HTTPS.
rest.advertised.security.protocolHTTPConfigures the protocol used for communication between workers. Should be either HTTP or HTTPS. Default is HTTP to ensure backwards compatibility.
ssl.client.authnoneValid values are none, requested and required. It will controls whether:
  • the connecting client is required to do SSL/TLS client authentication (required) 
  • it can decide to skip the SSL/TLS client authentication (requested) 
  • the SSL/TLS authentication will be completely disabled (none)

This is the only authentication option suggested as part of this KIP.

listeners.https.ssl.* The listeners.https. prefix can be used with any SSL configuration option mentioned below to override the default SSL configuration which is shared with the connections to Kafka broker.

 

Following existing options will be affected by this KIP:

ParameterDefault valueNote
rest.host.namenullWhen listeners option is defined, this field will be ignored.
rest.port8083When listeners option is defined, this field will be ignored.

 

Following existing options will be reused by this KIP without any changes:

securityprotocolOther valid value SSL
ParameterDefault valueNote
rest.advertised.host.namenull
   
   
   
rest.advertised.portPLAINTEXTnullThis field will be reused without any changes.
ssl.keystore.locationnull 
ssl.keystore.passwordnull 
ssl.keystore.typeJKS 
ssl.key.passwordnull 
ssl.truststore.locationnull 
ssl.truststore.passwordnull 
ssl.truststore.typeJKS 
ssl.enabled.protocolsTLSv1.2,TLSv1.1,TLSv1 
ssl.providernull 
ssl.protocolTLS 
ssl.cipher.suitesnull 
ssl.keymanager.algorithmSunX509 
ssl.secure.random.implementationnull 
ssl.trustmanager.algorithmPKIX 
ssl.client.authnoneOther valid values are "required" and "requested".

The rest.security.protocol option will support only PLAINTEXT and SSL values. PLAINTEXT will be the default value and will keep all SSL/TLS functionality disabled to keep the backwards compatibility.

The rest.ssl.client.auth option would support values of required, requested and none (none being the default). It will control whether:

  • the connecting client is required to do SSL/TLS client authentication (required
  • it can decide to skip the SSL/TLS client authentication (requested
  • the SSL/TLS authentication will be completely disabled (none)

This is the only authentication option suggested as part of this KIP.

...


Migration Plan and Compatibility

...