Purshotam Chauhan created KAFKA-14435:
-----------------------------------------

             Summary: Kraft: StandardAuthorizer allowing a non-authorized user 
when `allow.everyone.if.no.acl.found` is enabled
                 Key: KAFKA-14435
                 URL: https://issues.apache.org/jira/browse/KAFKA-14435
             Project: Kafka
          Issue Type: Bug
          Components: kraft
            Reporter: Purshotam Chauhan


When `allow.everyone.if.no.acl.found` is enabled, the authorizer should allow 
everyone only if there is no ACL present for a particular resource. But if 
there are ACL present for the resource, then it shouldn't be allowing everyone.

StandardAuthorizer is allowing the principals for which no ACLs are defined 
even when the resource has other ACLs.

 

This behavior can be validated with the following test case:

 
{code:java}
@Test
public void testAllowEveryoneConfig() throws Exception {
    StandardAuthorizer authorizer = new StandardAuthorizer();
    HashMap<String, Object> configs = new HashMap<>();
    configs.put(SUPER_USERS_CONFIG, "User:alice;User:chris");
    configs.put(ALLOW_EVERYONE_IF_NO_ACL_IS_FOUND_CONFIG, "true");
    authorizer.configure(configs);
    authorizer.start(new 
AuthorizerTestServerInfo(Collections.singletonList(PLAINTEXT)));
    authorizer.completeInitialLoad();


    // Allow User:Alice to read topic "foobar"
    List<StandardAclWithId> acls = asList(
        withId(new StandardAcl(TOPIC, "foobar", LITERAL, "User:Alice", 
WILDCARD, READ, ALLOW))
    );
    acls.forEach(acl -> authorizer.addAcl(acl.id(), acl.acl()));

    // User:Bob shouldn't be allowed to read topic "foobar"
    assertEquals(singletonList(DENIED),
        authorizer.authorize(new MockAuthorizableRequestContext.Builder().
                setPrincipal(new KafkaPrincipal(USER_TYPE, "Bob")).build(),
            singletonList(newAction(READ, TOPIC, "foobar"))));

}
 {code}
 

In the above test, `User:Bob` should be DENIED but the above test case fails.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to