Skip to content

Commit 1c35ded

Browse files
iliaxiliax
andauthored
Enabling RBAC check for ACL (#3813)
Co-authored-by: iliax <ikuramshin@provectus.com>
1 parent e7429ce commit 1c35ded

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/AccessControlService.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ && isConsumerGroupAccessible(context, user)
108108
&& isConnectAccessible(context, user)
109109
&& isConnectorAccessible(context, user) // TODO connector selectors
110110
&& isSchemaAccessible(context, user)
111-
&& isKsqlAccessible(context, user);
111+
&& isKsqlAccessible(context, user)
112+
&& isAclAccessible(context, user);
112113

113114
if (!accessGranted) {
114115
throw new AccessDeniedException("Access denied");
@@ -364,6 +365,23 @@ private boolean isKsqlAccessible(AccessContext context, AuthenticatedUser user)
364365
return isAccessible(Resource.KSQL, null, user, context, requiredActions);
365366
}
366367

368+
private boolean isAclAccessible(AccessContext context, AuthenticatedUser user) {
369+
if (!rbacEnabled) {
370+
return true;
371+
}
372+
373+
if (context.getAclActions().isEmpty()) {
374+
return true;
375+
}
376+
377+
Set<String> requiredActions = context.getAclActions()
378+
.stream()
379+
.map(a -> a.toString().toUpperCase())
380+
.collect(Collectors.toSet());
381+
382+
return isAccessible(Resource.ACL, null, user, context, requiredActions);
383+
}
384+
367385
public Set<ProviderAuthorityExtractor> getOauthExtractors() {
368386
return oauthExtractors;
369387
}

0 commit comments

Comments
 (0)