Skip to content

Commit bdbc642

Browse files
kubasobonelasticsearchmachine
andauthored
Extend kibana-system permissions to manage security entities (elastic#133968)
* extend kibana-system permissions for .entities.* indices * trigger CI * Update docs/changelog/133968.yaml * update viewer/editor & add reset management * fix typos * [CI] Auto commit changes from spotless * extend validation exemption on .entities indices * [CI] Update transport version definitions --------- Co-authored-by: elasticsearchmachine <[email protected]>
1 parent d70e2bd commit bdbc642

File tree

5 files changed

+22
-3
lines changed

5 files changed

+22
-3
lines changed

docs/changelog/133968.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 133968
2+
summary: Extend kibana-system permissions to manage security entities
3+
area: Infra/Core
4+
type: enhancement
5+
issues: []

modules/dot-prefix-validation/src/main/java/org/elasticsearch/validation/DotPrefixValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public abstract class DotPrefixValidator<RequestType> implements MappedActionFil
7373
"\\.ml-state-\\d+",
7474
"\\.slo-observability\\.sli-v\\d+.*",
7575
"\\.slo-observability\\.summary-v\\d+.*",
76-
"\\.entities\\.v\\d+\\.latest\\..*",
76+
"\\.entities\\.v\\d+\\..*",
7777
"\\.monitoring-es-8-.*",
7878
"\\.monitoring-logstash-8-.*",
7979
"\\.monitoring-kibana-8-.*",

modules/dot-prefix-validation/src/test/java/org/elasticsearch/validation/DotPrefixValidatorTests.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ public void testValidation() {
7777
nonOpV.validateIndices(Set.of(".slo-observability.summary-v2.3-2024-01-01"));
7878
nonOpV.validateIndices(Set.of("<.slo-observability.summary-v3.3.{2024-10-16||/M{yyyy-MM-dd|UTC}}>"));
7979
nonOpV.validateIndices(Set.of(".entities.v1.latest.builtin_services_from_ecs_data"));
80+
nonOpV.validateIndices(Set.of(".entities.v1.history.2025-09-16.security_host_default"));
81+
nonOpV.validateIndices(Set.of(".entities.v2.history.2025-09-16.security_user_custom"));
82+
nonOpV.validateIndices(Set.of(".entities.v5.reset.security_user_custom"));
83+
nonOpV.validateIndices(Set.of(".entities.v1.latest.noop"));
8084
nonOpV.validateIndices(Set.of(".entities.v92.latest.eggplant.potato"));
8185
nonOpV.validateIndices(Set.of("<.entities.v12.latest.eggplant-{M{yyyy-MM-dd|UTC}}>"));
8286
nonOpV.validateIndices(Set.of(".monitoring-es-8-thing"));

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,15 @@ static RoleDescriptor kibanaSystem(String name) {
595595
.indices(".asset-criticality.asset-criticality-*")
596596
.privileges("create_index", "manage", "read", "write")
597597
.build(),
598-
RoleDescriptor.IndicesPrivileges.builder().indices(".entities.v1.latest.security*").privileges("read", "write").build(),
598+
RoleDescriptor.IndicesPrivileges.builder().indices(".entities.*").privileges("read", "write").build(),
599+
RoleDescriptor.IndicesPrivileges.builder()
600+
.indices(".entities.*history*")
601+
.privileges("create_index", "manage", "read", "write")
602+
.build(),
603+
RoleDescriptor.IndicesPrivileges.builder()
604+
.indices(".entities.*reset*")
605+
.privileges("create_index", "manage", "read", "write")
606+
.build(),
599607
// For cloud_defend usageCollection
600608
RoleDescriptor.IndicesPrivileges.builder()
601609
.indices("logs-cloud_defend.*", "metrics-cloud_defend.*")

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public class ReservedRolesStore implements BiConsumer<Set<String>, ActionListene
7777

7878
/** "Security Solutions" Entity Store and Asset Criticality indices for Asset Inventory and Entity Analytics */
7979
public static final String ENTITY_STORE_V1_LATEST_INDEX = ".entities.v1.latest.security_*";
80+
public static final String ENTITY_STORE_HISTORY_INDEX = ".entities.*.history.*";
8081
public static final String ASSET_CRITICALITY_INDEX = ".asset-criticality.asset-criticality-*";
8182

8283
/** Index pattern for Universal Profiling */
@@ -780,6 +781,7 @@ private static RoleDescriptor buildViewerRoleDescriptor() {
780781
ReservedRolesStore.LISTS_INDEX_REINDEXED_V8,
781782
ReservedRolesStore.LISTS_ITEMS_INDEX_REINDEXED_V8,
782783
ReservedRolesStore.ENTITY_STORE_V1_LATEST_INDEX,
784+
ReservedRolesStore.ENTITY_STORE_HISTORY_INDEX,
783785
ReservedRolesStore.ASSET_CRITICALITY_INDEX
784786
)
785787
.privileges("read", "view_index_metadata")
@@ -849,7 +851,7 @@ private static RoleDescriptor buildEditorRoleDescriptor() {
849851
.build(),
850852
// Security - Entity Store is view only
851853
RoleDescriptor.IndicesPrivileges.builder()
852-
.indices(ReservedRolesStore.ENTITY_STORE_V1_LATEST_INDEX)
854+
.indices(ReservedRolesStore.ENTITY_STORE_V1_LATEST_INDEX, ReservedRolesStore.ENTITY_STORE_HISTORY_INDEX)
853855
.privileges("read", "view_index_metadata")
854856
.build(),
855857
// Alerts-as-data

0 commit comments

Comments
 (0)