Hi everyone,

Apologies for the very delayed response. Thank you both for the feedback.


> For clarity it might make sense to mention this feature will be useful

when using a ConfigProvider with Kafka Connect as providers are set in

the runtime and can then be used by connectors. This feature has no

use when using a ConfigProvider in server.properties or in clients.


I have updated the KIP to address this suggestion. Please let me know if
it's not clear enough.


> When trying to use a path not allowed, you propose returning an error.

With Connect does that mean the connector will be failed? The

EnvVarConfigProvider returns empty string in case a user tries to

access an environment variable not allowed. I wonder if we should

follow the same pattern so the behavior is "consistent" across all

built-in providers.


I agree with this, it makes sense to have consistent behaviour across all
the providers. I made this update.


> 1. In the past Connect removed the FileStream connectors in order to

prevent a REST API attacker from accessing the filesystem. Is this the

only remaining attack vector for reading the file system? Meaning, if

this feature is configured and all custom plugins are audited for

filesystem accesses, would someone with access to the REST API be

unable to access arbitrary files on disk?


Once this feature is configured, it will stop someone from accessing the
file system via config providers.

However, I’m not sure whether there are other ways users can access file
systems via REST API.


Mickael, perhaps you have some thoughts on this?


> 2. Could you explain how this feature would prevent a path traversal

attack, and how we will verify that such attacks are not feasible?


The intention is to generate File objects based on the String value
provided for allowed.paths and the String path passed to the get() function.

This would allow validation of path inclusion within the specified allowed
paths using their corresponding Path objects, rather than doing String
comparisons.

This hopefully will mitigate the risk of path traversal. The implementation
should include unit tests to verify this.


> 3. This applies a single "allowed paths" to a whole worker, but I've

seen situations where preventing one connector from accessing

another's secrets may also be desirable. Is there any way to extend

this feature now or in the future to make that possible?


One approach could be creating multiple providers, each assigned a unique
name and specific allowed.paths configuration. Users would then be assigned
a provider name, granting them appropriate access on the file system to
load variables for their connectors. However, during provider
configuration, administrators would have to anticipate and specify the
files and directories users may require access to.


Regards,

Tina

On Wed, Nov 8, 2023 at 7:49 PM Greg Harris <greg.har...@aiven.io.invalid>
wrote:

> Hey Tina,
>
> Thanks for the KIP! Unrestricted file system access over a REST API is
> an unfortunate anti-pattern, so I'm glad that you're trying to change
> it. I had a few questions, mostly from the Connect perspective.
>
> 1. In the past Connect removed the FileStream connectors in order to
> prevent a REST API attacker from accessing the filesystem. Is this the
> only remaining attack vector for reading the file system? Meaning, if
> this feature is configured and all custom plugins are audited for
> filesystem accesses, would someone with access to the REST API be
> unable to access arbitrary files on disk?
> 2. Could you explain how this feature would prevent a path traversal
> attack, and how we will verify that such attacks are not feasible?
> 3. This applies a single "allowed paths" to a whole worker, but I've
> seen situations where preventing one connector from accessing
> another's secrets may also be desirable. Is there any way to extend
> this feature now or in the future to make that possible?
>
> Thanks!
> Greg
>
> On Tue, Nov 7, 2023 at 7:06 AM Mickael Maison <mickael.mai...@gmail.com>
> wrote:
> >
> > Hi Tina,
> >
> > Thanks for the KIP.
> > For clarity it might make sense to mention this feature will be useful
> > when using a ConfigProvider with Kafka Connect as providers are set in
> > the runtime and can then be used by connectors. This feature has no
> > use when using a ConfigProvider in server.properties or in clients.
> >
> > When trying to use a path not allowed, you propose returning an error.
> > With Connect does that mean the connector will be failed? The
> > EnvVarConfigProvider returns empty string in case a user tries to
> > access an environment variable not allowed. I wonder if we should
> > follow the same pattern so the behavior is "consistent" across all
> > built-in providers.
> >
> > Thanks,
> > Mickael
> >
> > On Tue, Nov 7, 2023 at 1:52 PM Gantigmaa Selenge <gsele...@redhat.com>
> wrote:
> > >
> > > Hi everyone,
> > >
> > > Please let me know if you have any comments on the KIP.
> > >
> > > I will leave it for a few more days. If there are still no comments, I
> will
> > > start the vote on it.
> > >
> > > Regards,
> > > Tina
> > >
> > > On Wed, Oct 25, 2023 at 8:31 AM Gantigmaa Selenge <gsele...@redhat.com
> >
> > > wrote:
> > >
> > > > Hi everyone,
> > > >
> > > > I would like to start a discussion on KIP-933 that proposes
> restricting
> > > > files accessed by File and Directory ConfigProviders.
> > > >
> > > >
> > > >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-993%3A+Allow+restricting+files+accessed+by+File+and+Directory+ConfigProviders
> > > >
> > > > Regards,
> > > > Tina
> > > >
>
>

Reply via email to