From 83890d692d261ce9f7449c3e97880d252678fd22 Mon Sep 17 00:00:00 2001 From: Mohit Jha <138874484+mohitjha-elastic@users.noreply.github.com> Date: Thu, 4 Sep 2025 11:25:37 +0530 Subject: [PATCH] [Sentinel One] - Fix Cannot execute ILM policy delete step (#133793) This PR focuses on the short term solution which add the logs-sentinel_one.application-* and logs-sentinel_one.application_risk-* indices under the kibana_system role with deletion privileges to prevent a failed deletion error when the index enters the deletion phase for the ILM lifecycle, in upcoming PR. As it ships transform pipeline too hence read, write permissions are also required. Current behavior: It shows permission issue while deleting the index. (cherry picked from commit bfde47a3997190ab7f785ff743997b9b0bec4739) --- docs/changelog/133793.yaml | 6 ++++++ .../authz/store/KibanaOwnedReservedRoleDescriptors.java | 8 +++++--- .../security/authz/store/ReservedRolesStoreTests.java | 8 +++++--- 3 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 docs/changelog/133793.yaml diff --git a/docs/changelog/133793.yaml b/docs/changelog/133793.yaml new file mode 100644 index 0000000000000..6bf73ecaa060c --- /dev/null +++ b/docs/changelog/133793.yaml @@ -0,0 +1,6 @@ +pr: 133793 +summary: "[Sentinel One] Add `manage`, `create_index`, `read`, `index`, `write`, `delete`, permission for third party agent indices `kibana_system`" +area: Authorization +type: enhancement +issues: + - 133703 diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/store/KibanaOwnedReservedRoleDescriptors.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/store/KibanaOwnedReservedRoleDescriptors.java index 563ae58a7e40a..ccfb5b117af6d 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/store/KibanaOwnedReservedRoleDescriptors.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/store/KibanaOwnedReservedRoleDescriptors.java @@ -487,7 +487,8 @@ static RoleDescriptor kibanaSystem(String name) { .indices( "logs-m365_defender.vulnerability-*", "logs-microsoft_defender_endpoint.vulnerability-*", - "logs-microsoft_defender_cloud.assessment-*" + "logs-microsoft_defender_cloud.assessment-*", + "logs-sentinel_one.application_risk-*" ) .privileges( "read", @@ -496,10 +497,11 @@ static RoleDescriptor kibanaSystem(String name) { TransportDeleteIndexAction.TYPE.name() ) .build(), - // For ExtraHop and QualysGAV specific actions. Kibana reads, writes and manages this index + // For ExtraHop, QualysGAV, and SentinelOne Application Dataset specific actions. Kibana reads, writes and manages this + // index // for configured ILM policies. RoleDescriptor.IndicesPrivileges.builder() - .indices("logs-extrahop.investigation-*", "logs-qualys_gav.asset-*") + .indices("logs-extrahop.investigation-*", "logs-qualys_gav.asset-*", "logs-sentinel_one.application-*") .privileges( "manage", "create_index", diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStoreTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStoreTests.java index 654dde4eaee5a..25f6fa5b3ff5f 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStoreTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStoreTests.java @@ -1685,7 +1685,8 @@ public void testKibanaSystemRole() { Arrays.asList( "logs-m365_defender.vulnerability-" + randomAlphaOfLength(randomIntBetween(0, 13)), "logs-microsoft_defender_endpoint.vulnerability-" + randomAlphaOfLength(randomIntBetween(0, 13)), - "logs-microsoft_defender_cloud.assessment-" + randomAlphaOfLength(randomIntBetween(0, 13)) + "logs-microsoft_defender_cloud.assessment-" + randomAlphaOfLength(randomIntBetween(0, 13)), + "logs-sentinel_one.application_risk-" + randomAlphaOfLength(randomIntBetween(0, 13)) ).forEach(indexName -> { final IndexAbstraction indexAbstraction = mockIndexAbstraction(indexName); assertThat(kibanaRole.indices().allowedIndicesMatcher("indices:foo").test(indexAbstraction), is(false)); @@ -1879,11 +1880,12 @@ public void testKibanaSystemRole() { assertThat(kibanaRole.indices().allowedIndicesMatcher(RolloverAction.NAME).test(indexAbstraction), is(true)); }); - // Tests for third-party agent indices (ExtraHop, QualysGAV) that `kibana_system` has full management access to + // Tests for third-party agent indices (ExtraHop, QualysGAV, SentinelOne) that `kibana_system` has full management access to // This includes read, write, create, delete, and all ILM-related management actions. Arrays.asList( "logs-extrahop.investigation-" + randomAlphaOfLength(randomIntBetween(1, 10)), - "logs-qualys_gav.asset-" + randomAlphaOfLength(randomIntBetween(1, 10)) + "logs-qualys_gav.asset-" + randomAlphaOfLength(randomIntBetween(1, 10)), + "logs-sentinel_one.application-" + randomAlphaOfLength(randomIntBetween(1, 10)) ).forEach((index_qualys_extra_hop) -> { final IndexAbstraction indexAbstraction = mockIndexAbstraction(index_qualys_extra_hop);