* Required for elastic/kibana#50757. Allows the kibana user to collect APM telemetry in a background task. * removed unnecessary priviledges on `.ml-anomalies-*` for the `kibana_system` reserved role
This commit is contained in:
parent
cb73de2eb7
commit
96f0c668a8
|
@ -126,11 +126,16 @@ public class ReservedRolesStore implements BiConsumer<Set<String>, ActionListene
|
||||||
.indices(".monitoring-*").privileges("read", "read_cross_cluster").build(),
|
.indices(".monitoring-*").privileges("read", "read_cross_cluster").build(),
|
||||||
RoleDescriptor.IndicesPrivileges.builder()
|
RoleDescriptor.IndicesPrivileges.builder()
|
||||||
.indices(".management-beats").privileges("create_index", "read", "write").build(),
|
.indices(".management-beats").privileges("create_index", "read", "write").build(),
|
||||||
// .apm-* is for APM's agent configuration and custom link index creation
|
// APM agent configuration
|
||||||
RoleDescriptor.IndicesPrivileges.builder()
|
RoleDescriptor.IndicesPrivileges.builder()
|
||||||
.indices(".apm-agent-configuration").privileges("all").build(),
|
.indices(".apm-agent-configuration").privileges("all").build(),
|
||||||
|
// APM custom link index creation
|
||||||
RoleDescriptor.IndicesPrivileges.builder()
|
RoleDescriptor.IndicesPrivileges.builder()
|
||||||
.indices(".apm-custom-link").privileges("all").build(),
|
.indices(".apm-custom-link").privileges("all").build(),
|
||||||
|
// APM telemetry queries APM indices in kibana task runner
|
||||||
|
RoleDescriptor.IndicesPrivileges.builder()
|
||||||
|
.indices("apm-*")
|
||||||
|
.privileges("read", "read_cross_cluster").build(),
|
||||||
},
|
},
|
||||||
null,
|
null,
|
||||||
new ConfigurableClusterPrivilege[] { new ManageApplicationPrivileges(Collections.singleton("kibana-*")) },
|
new ConfigurableClusterPrivilege[] { new ManageApplicationPrivileges(Collections.singleton("kibana-*")) },
|
||||||
|
|
|
@ -402,6 +402,22 @@ public class ReservedRolesStoreTests extends ESTestCase {
|
||||||
assertThat(kibanaRole.indices().allowedIndicesMatcher(READ_CROSS_CLUSTER_NAME).test(index), is(true));
|
assertThat(kibanaRole.indices().allowedIndicesMatcher(READ_CROSS_CLUSTER_NAME).test(index), is(true));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// read-only indices for APM telemetry
|
||||||
|
Arrays.asList("apm-*").forEach((index) -> {
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher("indices:foo").test(index), is(false));
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher("indices:bar").test(index), is(false));
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher(DeleteIndexAction.NAME).test(index), is(false));
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher(GetIndexAction.NAME).test(index), is(false));
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher(CreateIndexAction.NAME).test(index), is(false));
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher(IndexAction.NAME).test(index), is(false));
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher(DeleteAction.NAME).test(index), is(false));
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher(UpdateSettingsAction.NAME).test(index), is(false));
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher(SearchAction.NAME).test(index), is(true));
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher(MultiSearchAction.NAME).test(index), is(true));
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher(GetAction.NAME).test(index), is(true));
|
||||||
|
assertThat(kibanaRole.indices().allowedIndicesMatcher(READ_CROSS_CLUSTER_NAME).test(index), is(true));
|
||||||
|
});
|
||||||
|
|
||||||
// Beats management index
|
// Beats management index
|
||||||
final String index = ".management-beats";
|
final String index = ".management-beats";
|
||||||
assertThat(kibanaRole.indices().allowedIndicesMatcher("indices:foo").test(index), is(false));
|
assertThat(kibanaRole.indices().allowedIndicesMatcher("indices:foo").test(index), is(false));
|
||||||
|
|
Loading…
Reference in New Issue