[WIP] Proof of concept for a generic password provider #82
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
One of the main security concerns regarding Flume is that currently passwords can only be set in plain text in the config file. I have a proof-of-concept to overcome this limitation with an extensible password provider.
The core of the solution is the
PasswordProvider
interface which has a default implementation (PlainTextPasswordProvider
) which returns the value of the given key, thus taking care of backwards compatibility.The other implementation is the
ExternalProcessPasswordProvider
which executes the configured command and returns its output.Usage example can be seen in the
AvroSource
(see the 2nd commit of this PR):Example configuration to use the
ExternalProcessPasswordProvider
:Example configuration with no
passwordProviderClass
set:As no
passwordProviderClass
is set in this example the defaultPlainTextPasswordProvider
is used which returns the value ofa.sources.avro.keystore-password
.Note: this is still a work in progress, I wanted to sketch up my idea. Any questions/comments/suggestions are more than welcome.