This is an automated email from the ASF dual-hosted git repository.
madhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/master by this push:
new f4db92475 RANGER-4486: ZoneV2 partial update allows duplicate
principals and tagServices
f4db92475 is described below
commit f4db92475daa4b2590b789a291463f51f0e0af64
Author: Subhrat Chaudhary <[email protected]>
AuthorDate: Thu Oct 19 23:41:14 2023 -0700
RANGER-4486: ZoneV2 partial update allows duplicate principals and
tagServices
Signed-off-by: Madhan Neethiraj <[email protected]>
---
.../ranger/plugin/util/RangerSecurityZoneHelper.java | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerSecurityZoneHelper.java
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerSecurityZoneHelper.java
index facc305fe..fbdacd4a6 100644
---
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerSecurityZoneHelper.java
+++
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerSecurityZoneHelper.java
@@ -132,7 +132,7 @@ public class RangerSecurityZoneHelper {
}
if (changeData.getTagServicesToAdd() != null) {
- zone.getTagServices().addAll(changeData.getTagServicesToAdd());
+ changeData.getTagServicesToAdd().forEach(tagService ->
addIfAbsent(tagService, zone.getTagServices()));
}
if (changeData.getTagServicesToRemove() != null) {
@@ -161,11 +161,11 @@ public class RangerSecurityZoneHelper {
private void addPrincipals(List<RangerPrincipal> principals, List<String>
users, List<String> groups, List<String> roles) {
for (RangerPrincipal principal : principals) {
if (principal.getType() == RangerPrincipal.PrincipalType.USER) {
- users.add(principal.getName());
+ addIfAbsent(principal.getName(), users);
} else if (principal.getType() ==
RangerPrincipal.PrincipalType.GROUP) {
- groups.add(principal.getName());
+ addIfAbsent(principal.getName(), groups);
} else if (principal.getType() ==
RangerPrincipal.PrincipalType.ROLE) {
- roles.add(principal.getName());
+ addIfAbsent(principal.getName(), roles);
}
}
}
@@ -182,6 +182,12 @@ public class RangerSecurityZoneHelper {
}
}
+ private void addIfAbsent(String item, List<String> lst) {
+ if (!lst.contains(item)) {
+ lst.add(item);
+ }
+ }
+
public static class RangerSecurityZoneServiceHelper {
private final RangerSecurityZoneService zoneService;
private final String currentUser;