...
Rejected Alternatives
Alternative 1 :
Kafka-acls.sh will allow to specify a custom
PrincipalBuilder
using a new command line parameter "-- principalBuilder" andPrincipalBuilder
configs using a new command line parameter "--principalBuilder-properties". Users can use these to build their customPrincipal
(that implements JavaPrincipal
). Add a new API toPrincipalBuilder
Interface :Code Block language java theme Midnight public interface PrincipalBuilder extends Configurable { ... /** * Build a Principal using name. * * @param name Principal name * @return Principal */ Principal buildPrincipal(String name); ... }
- This
PrincipalBuilder
API will then be used to generate aPrincipal
using the names specified in --allow-principal and --deny-principal parameters. ThisPrincipal
can be included inKafkaPrincipal
using the new constructor specified above. - This alternative was rejected due to following reasons :
Since the
Principal
is built using the "--principalBuilder-properties", users can only specify a particular type ofPrincipal
(s) (using --allow-principal / --deny-principal) at a time.If users want to specify multiple types of Principals, they will have to run the kafka-acls.sh multiple times with different "--principalBuilder-properties", even if the Principals might have the same name. For example, we can have a service
Principal
with name "XYZ" and a userPrincipal
with name "XYZ".
- Due to above reasons, it is quite clear that it is less user friendly and not intuitive.
...