Skip to content

Commit c8a8759

Browse files
polegkashtiPoleg KashtiHaarolean
authored
BE: ACL: Consumers preset now include DESCRIBE permission for CG (#593)
Co-authored-by: Poleg Kashti <poleg@DESKTOP-BSN03E3> Co-authored-by: Roman Zabaluev <gpg@haarolean.dev>
1 parent 7be3325 commit c8a8759

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

api/src/main/java/io/kafbat/ui/service/acl/AclsService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public Mono<Void> createConsumerAcl(KafkaCluster cluster, CreateConsumerAclDTO r
158158
.then();
159159
}
160160

161-
//Read, Describe on topics, Read on consumerGroups
161+
//Read, Describe on topics and consumerGroups
162162
private List<AclBinding> createConsumerBindings(CreateConsumerAclDTO request) {
163163
List<AclBinding> bindings = new ArrayList<>();
164164
bindings.addAll(
@@ -172,7 +172,7 @@ private List<AclBinding> createConsumerBindings(CreateConsumerAclDTO request) {
172172
bindings.addAll(
173173
createAllowBindings(
174174
GROUP,
175-
List.of(READ),
175+
List.of(READ, DESCRIBE),
176176
request.getPrincipal(),
177177
request.getHost(),
178178
request.getConsumerGroupsPrefix(),

api/src/test/java/io/kafbat/ui/service/acl/AclsServiceTest.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,10 @@ void createsConsumerDependantAcls() {
103103
.topics(List.of("t1", "t2"))
104104
).block();
105105

106-
//Read, Describe on topics, Read on consumerGroups
106+
//Read, Describe on topics and consumerGroups
107107
Collection<AclBinding> createdBindings = createdCaptor.getValue();
108108
assertThat(createdBindings)
109-
.hasSize(6)
109+
.hasSize(8)
110110
.contains(new AclBinding(
111111
new ResourcePattern(ResourceType.TOPIC, "t1", PatternType.LITERAL),
112112
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)))
@@ -122,9 +122,15 @@ void createsConsumerDependantAcls() {
122122
.contains(new AclBinding(
123123
new ResourcePattern(ResourceType.GROUP, "cg1", PatternType.LITERAL),
124124
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)))
125+
.contains(new AclBinding(
126+
new ResourcePattern(ResourceType.GROUP, "cg1", PatternType.LITERAL),
127+
new AccessControlEntry(principal, host, AclOperation.DESCRIBE, AclPermissionType.ALLOW)))
128+
.contains(new AclBinding(
129+
new ResourcePattern(ResourceType.GROUP, "cg2", PatternType.LITERAL),
130+
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)))
125131
.contains(new AclBinding(
126132
new ResourcePattern(ResourceType.GROUP, "cg2", PatternType.LITERAL),
127-
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)));
133+
new AccessControlEntry(principal, host, AclOperation.DESCRIBE, AclPermissionType.ALLOW)));
128134
}
129135

130136
@Test
@@ -145,10 +151,10 @@ void createsConsumerDependantAclsWhenTopicsAndGroupsSpecifiedByPrefix() {
145151
.topicsPrefix("topicPref")
146152
).block();
147153

148-
//Read, Describe on topics, Read on consumerGroups
154+
//Read, Describe on topics and consumerGroups
149155
Collection<AclBinding> createdBindings = createdCaptor.getValue();
150156
assertThat(createdBindings)
151-
.hasSize(3)
157+
.hasSize(4)
152158
.contains(new AclBinding(
153159
new ResourcePattern(ResourceType.TOPIC, "topicPref", PatternType.PREFIXED),
154160
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)))
@@ -157,7 +163,10 @@ void createsConsumerDependantAclsWhenTopicsAndGroupsSpecifiedByPrefix() {
157163
new AccessControlEntry(principal, host, AclOperation.DESCRIBE, AclPermissionType.ALLOW)))
158164
.contains(new AclBinding(
159165
new ResourcePattern(ResourceType.GROUP, "cgPref", PatternType.PREFIXED),
160-
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)));
166+
new AccessControlEntry(principal, host, AclOperation.READ, AclPermissionType.ALLOW)))
167+
.contains(new AclBinding(
168+
new ResourcePattern(ResourceType.GROUP, "cgPref", PatternType.PREFIXED),
169+
new AccessControlEntry(principal, host, AclOperation.DESCRIBE, AclPermissionType.ALLOW)));
161170
}
162171

163172
@Test

0 commit comments

Comments
 (0)