I have an idea for how to reduce the time for ACL lookups in general and
particularly where wildcards are involved using sequence
characterization techniques from bioinformatics.  But I need a set of ACL
patterns and associated topics to test with.

On Fri, May 3, 2024 at 2:45 PM Haruki Okada <ocadar...@gmail.com> wrote:

> Hi, Murali.
>
> First, could you add the KIP-1042 to the index (
>
> https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Improvement+Proposals
> )
> as well so that everyone can find it easily?
>
> I took a look at the KIP, then I have 2 questions:
>
> 1. Though the new MATCH resource pattern type may reduce the effort of
> adding ACLs in some cases, do you have any concrete use case you are in
> mind? (When prefixed ACL was introduced in KIP-290, there was a use-case
> that using it for implementing multi-tenancy)
>
> 2. As you may know, ACL lookup is in the hot-path which the performance is
> very important. (
>
> https://github.com/apache/kafka/blob/240243b91d69c2b65b5e456065fdcce90c121b04/core/src/main/scala/kafka/security/authorizer/AclAuthorizer.scala#L539
> ).
> Do you have ideas how do we update `matchingAcls` to support MATCH-type ACL
> without introducing performance issue?
>
>
> Thanks,
>
> 2024年5月3日(金) 19:51 Claude Warren, Jr <claude.war...@aiven.io.invalid>:
>
> > As I wrote in [1], the ACL evaluation algorithm needs to be specified
> with
> > respect to the specificity of the pattern so that we know exactly which
> if
> > *-accounts-* takes precedence over nl-accounts-* or visa versa.
> >
> > I think that we should spell out that precedence is evaluated as follows:
> >
> > 1. Remove patterns that do not match
> > 2. More specific patterns take precedence over less specific patterns
> > 3. for patterns of the same precedence DENY overrides ALLOW
> >
> > Determining specificity:
> >
> > Specificity is based on the Levenshtein distance between the pattern and
> > the text being evaluated. The lower the distance the more specific the
> > rule.
> > Using the topic name: nl-accounts-localtopic we can evaluate the
> > Levenshtein distance for various patterns.
> > nl-accounts-localtopic = 0
> > *-accounts-localtopic = 2
> > nl-accounts-local* = 5
> > *-accounts-local* = 7
> > nl-accounts-* = 10
> > *-accounts-* = 12
> >
> > In the special case of matching principles User matches are more specific
> > than Group matches.
> >
> > I don't know if this should be added to KIP-1042 or presented as a new
> KIP.
> >
> > Claude
> >
> > [1] https://lists.apache.org/thread/0l88tkbxq3ol9rnx0ljnmswj5y6pho1f
> > <
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1042%3A+Support+for+wildcard+when+creating+new+acls
> > >
> >
> > On Fri, May 3, 2024 at 12:18 PM Claude Warren <cla...@xenei.com> wrote:
> >
> > > Took me awhile to find it but the link to the KIP is
> > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1042%3A+Support+for+wildcard+when+creating+new+acls
> > >
> > > On Fri, May 3, 2024 at 10:13 AM Murali Basani <murali.bas...@gmail.com
> >
> > > wrote:
> > >
> > > > Hello,
> > > >
> > > > I'd like to propose a suggestion to our resource patterns in Kafka
> > ACLs.
> > > >
> > > > Currently, when adding new ACLs in Kafka, we have two types of
> resource
> > > > patterns for topics:
> > > >
> > > >    - LITERAL
> > > >    - PREFIXED
> > > >
> > > > However, when it comes to listing or removing ACLs, we have a couple
> > more
> > > > options:
> > > >
> > > >    - MATCH
> > > >    - ANY (will match any pattern type)
> > > >
> > > >
> > > > If we can extend creating acls as well with 'MATCH' pattern type, it
> > > would
> > > > be very beneficial. Even though this kind of acl should be created
> with
> > > > utmost care, it will help organizations streamline their ACL
> management
> > > > processes.
> > > >
> > > > Example scenarios :
> > > >
> > > > Let's say we need to create ACLs for the following six topics:
> > > > nl-accounts-localtopic, nl-accounts-remotetopic,
> > de-accounts-localtopic,
> > > > de-accounts-remotetopic, cz-accounts-localtopic,
> > cz-accounts-remotetopic
> > > >
> > > > Currently, we achieve this using existing functionality by creating
> > three
> > > > prefixed ACLs as shown below:
> > > >
> > > > kafka-acls --bootstrap-server localhost:9092 \
> > > > > --add \
> > > > > --allow-principal
> > > > >
> > > >
> > >
> >
> User:CN=serviceuser,OU=ServiceUsers,O=Unknown,L=Unknown,ST=Unknown,C=Unknown
> > > > > \
> > > > > --producer \
> > > > > --topic nl-accounts- \
> > > > > --resource-pattern-type prefixed
> > > >
> > > >
> > > > kafka-acls --bootstrap-server localhost:9092 \
> > > > > --add \
> > > > > --allow-principal
> > > > >
> > > >
> > >
> >
> User:CN=serviceuser,OU=ServiceUsers,O=Unknown,L=Unknown,ST=Unknown,C=Unknown
> > > > > \
> > > > > --producer \
> > > > > --topic de-accounts- \
> > > > > --resource-pattern-type prefixed
> > > >
> > > >
> > > > kafka-acls --bootstrap-server localhost:9092 \
> > > > > --add \
> > > > > --allow-principal
> > > > >
> > > >
> > >
> >
> User:CN=serviceuser,OU=ServiceUsers,O=Unknown,L=Unknown,ST=Unknown,C=Unknown
> > > > > \
> > > > > --producer \
> > > > > --topic cz-accounts- \
> > > > > --resource-pattern-type prefixed
> > > >
> > > >
> > > > However, if we had the 'MATCH' pattern type available, we could
> > > accomplish
> > > > this with a single ACL, as illustrated here:
> > > >
> > > > kafka-acls --bootstrap-server localhost:9092 \
> > > > > --add \
> > > > > --allow-principal
> > > > >
> > > >
> > >
> >
> User:CN=serviceuser,OU=ServiceUsers,O=Unknown,L=Unknown,ST=Unknown,C=Unknown
> > > > > \
> > > > > --producer \
> > > > > --topic *-accounts-* \
> > > > > --resource-pattern-type match
> > > >
> > > >
> > > >
> > > > This pattern closely resembles PREFIXED but offers broader allow/deny
> > > > rules.
> > > >
> > > > Implementing this change could significantly reduce the effort in
> > several
> > > > acl management processes.
> > > >
> > > > I welcome your thoughts and any concerns you may have regarding this
> > > > proposal.
> > > >
> > > > Thanks,
> > > > Murali
> > > >
> > >
> > >
> > > --
> > > LinkedIn: http://www.linkedin.com/in/claudewarren
> > >
> >
>
>
> --
> ========================
> Okada Haruki
> ocadar...@gmail.com
> ========================
>


-- 
LinkedIn: http://www.linkedin.com/in/claudewarren

Reply via email to