Skip to content

Commit 2ccd969

Browse files
committed
Moar
1 parent a531e5f commit 2ccd969

File tree

4 files changed

+26
-24
lines changed

4 files changed

+26
-24
lines changed

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/permission/IndicesPermission.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -913,7 +913,7 @@ boolean isTotal() {
913913
&& privilege == IndexPrivilege.ALL
914914
&& query == null
915915
&& false == fieldPermissions.hasFieldLevelSecurity()
916-
// TODO do we want this?
916+
// TODO add selectorPrivilege here in a follow PR handling authorization
917917
&& selectorPrivilege.isTotal();
918918
}
919919

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/permission/Role.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ static SimpleRole buildFromRoleDescriptor(
428428
);
429429
Set<BytesReference> query = indexPrivilege.getQuery() == null ? null : Collections.singleton(indexPrivilege.getQuery());
430430
boolean allowRestrictedIndices = indexPrivilege.allowRestrictedIndices();
431-
Map<IndexComponentSelectorPrivilege, Set<String>> split = IndexComponentSelectorPrivilege.splitBySelectors(
431+
Map<IndexComponentSelectorPrivilege, Set<String>> split = IndexComponentSelectorPrivilege.groupBySelectors(
432432
indexPrivilege.getPrivileges()
433433
);
434434
for (var entry : split.entrySet()) {

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/privilege/IndexComponentSelectorPrivilege.java

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public record IndexComponentSelectorPrivilege(String name, Predicate<IndexCompon
3131
IndexPrivilege.MANAGE_FAILURE_STORE_INTERNAL
3232
);
3333

34-
public boolean test(IndexComponentSelector selector) {
34+
public boolean grants(IndexComponentSelector selector) {
3535
return predicate.test(selector);
3636
}
3737

@@ -43,37 +43,39 @@ public static Set<IndexComponentSelectorPrivilege> get(Set<String> indexPrivileg
4343
return indexPrivileges.stream().map(IndexComponentSelectorPrivilege::get).collect(Collectors.toSet());
4444
}
4545

46-
public static Map<IndexComponentSelectorPrivilege, Set<String>> splitBySelectors(String... indexPrivileges) {
47-
return splitBySelectors(Set.of(indexPrivileges));
46+
public static Map<IndexComponentSelectorPrivilege, Set<String>> groupBySelectors(String... indexPrivileges) {
47+
return groupBySelectors(Set.of(indexPrivileges));
4848
}
4949

50-
public static Map<IndexComponentSelectorPrivilege, Set<String>> splitBySelectors(Set<String> indexPrivileges) {
51-
final Set<String> data = new HashSet<>();
52-
final Set<String> failures = new HashSet<>();
50+
public static Map<IndexComponentSelectorPrivilege, Set<String>> groupBySelectors(Set<String> indexPrivileges) {
51+
final Set<String> dataAccessPrivileges = new HashSet<>();
52+
final Set<String> failuresAccessPrivileges = new HashSet<>();
5353

5454
for (String indexPrivilege : indexPrivileges) {
55-
final IndexComponentSelectorPrivilege privilege = get(indexPrivilege);
56-
// If we ever hit all, we can return early since we don't need to split
57-
if (privilege.equals(ALL)) {
55+
final IndexComponentSelectorPrivilege selectorPrivilege = get(indexPrivilege);
56+
// If we ever hit `all`, the entire group can be treated as granting "all" access and we can return early
57+
if (selectorPrivilege.equals(ALL)) {
5858
return Map.of(ALL, indexPrivileges);
5959
}
6060

61-
if (privilege.equals(DATA)) {
62-
data.add(indexPrivilege);
63-
} else if (privilege.equals(FAILURES)) {
64-
failures.add(indexPrivilege);
61+
if (selectorPrivilege.equals(DATA)) {
62+
dataAccessPrivileges.add(indexPrivilege);
63+
} else if (selectorPrivilege.equals(FAILURES)) {
64+
failuresAccessPrivileges.add(indexPrivilege);
6565
} else {
66-
throw new IllegalArgumentException("Unknown index privilege: " + indexPrivilege);
66+
assert false : "index privilege [" + indexPrivilege + "] mapped to an unexpected selector [" + selectorPrivilege + "]";
67+
throw new IllegalStateException(
68+
"index privilege [" + indexPrivilege + "] mapped to an unexpected selector [" + selectorPrivilege + "]"
69+
);
6770
}
68-
6971
}
7072

71-
if (data.isEmpty()) {
72-
return Map.of(FAILURES, failures);
73-
} else if (failures.isEmpty()) {
74-
return Map.of(DATA, data);
73+
if (dataAccessPrivileges.isEmpty()) {
74+
return Map.of(FAILURES, failuresAccessPrivileges);
75+
} else if (failuresAccessPrivileges.isEmpty()) {
76+
return Map.of(DATA, dataAccessPrivileges);
7577
} else {
76-
return Map.of(DATA, data, FAILURES, failures);
78+
return Map.of(DATA, dataAccessPrivileges, FAILURES, failuresAccessPrivileges);
7779
}
7880
}
7981

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authz/store/CompositeRolesStore.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ public static void buildRoleFromDescriptors(
543543

544544
for (Map.Entry<Set<String>, MergeableIndicesPrivilege> entry : indicesPrivilegesMap.entrySet()) {
545545
MergeableIndicesPrivilege indicesPrivilege = entry.getValue();
546-
Map<IndexComponentSelectorPrivilege, Set<String>> split = IndexComponentSelectorPrivilege.splitBySelectors(
546+
Map<IndexComponentSelectorPrivilege, Set<String>> split = IndexComponentSelectorPrivilege.groupBySelectors(
547547
indicesPrivilege.privileges
548548
);
549549
FieldPermissions fieldPermissions = fieldPermissionsCache.getFieldPermissions(indicesPrivilege.fieldPermissionsDefinition);
@@ -561,7 +561,7 @@ public static void buildRoleFromDescriptors(
561561
}
562562
for (Map.Entry<Set<String>, MergeableIndicesPrivilege> entry : restrictedIndicesPrivilegesMap.entrySet()) {
563563
MergeableIndicesPrivilege indicesPrivilege = entry.getValue();
564-
Map<IndexComponentSelectorPrivilege, Set<String>> split = IndexComponentSelectorPrivilege.splitBySelectors(
564+
Map<IndexComponentSelectorPrivilege, Set<String>> split = IndexComponentSelectorPrivilege.groupBySelectors(
565565
indicesPrivilege.privileges
566566
);
567567
FieldPermissions fieldPermissions = fieldPermissionsCache.getFieldPermissions(indicesPrivilege.fieldPermissionsDefinition);

0 commit comments

Comments
 (0)