Skip to content

Commit 005d0e0

Browse files
committed
Adds privileges to apm-service-connections for reserved role
kibana_system to support APM service maps in kibana
1 parent a5ab7da commit 005d0e0

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,13 @@ private static Map<String, RoleDescriptor> initializeReservedRoles() {
122122
.indices(".monitoring-*").privileges("read", "read_cross_cluster").build(),
123123
RoleDescriptor.IndicesPrivileges.builder()
124124
.indices(".management-beats").privileges("create_index", "read", "write").build(),
125-
// .apm-* is for APM's agent configuration index creation
125+
// .apm-agent-configuration is APM's agent configuration index
126126
RoleDescriptor.IndicesPrivileges.builder()
127127
.indices(".apm-agent-configuration").privileges("all").build(),
128+
// create APM service connections index and index connections in scheduled task runner
129+
RoleDescriptor.IndicesPrivileges.builder()
130+
.indices("apm-service-connections")
131+
.privileges("create_index", "view_index_metadata", "index").build(),
128132
},
129133
null,
130134
new ConfigurableClusterPrivilege[] { new ManageApplicationPrivileges(Collections.singleton("kibana-*")) },

x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStoreTests.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,20 @@ public void testKibanaSystemRole() {
375375
assertThat(kibanaRole.indices().allowedIndicesMatcher(READ_CROSS_CLUSTER_NAME).test(index), is(true));
376376
});
377377

378+
// APM service connections index
379+
final String apmServiceConnectionIndex = "apm-service-connections";
380+
assertThat(kibanaRole.indices().allowedIndicesMatcher("indices:foo").test(apmServiceConnectionIndex), is(false));
381+
assertThat(kibanaRole.indices().allowedIndicesMatcher("indices:bar").test(apmServiceConnectionIndex), is(false));
382+
assertThat(kibanaRole.indices().allowedIndicesMatcher(DeleteIndexAction.NAME).test(apmServiceConnectionIndex), is(false));
383+
assertThat(kibanaRole.indices().allowedIndicesMatcher(GetIndexAction.NAME).test(apmServiceConnectionIndex), is(true));
384+
assertThat(kibanaRole.indices().allowedIndicesMatcher(CreateIndexAction.NAME).test(apmServiceConnectionIndex), is(true));
385+
assertThat(kibanaRole.indices().allowedIndicesMatcher(IndexAction.NAME).test(apmServiceConnectionIndex), is(true));
386+
assertThat(kibanaRole.indices().allowedIndicesMatcher(DeleteAction.NAME).test(apmServiceConnectionIndex), is(false));
387+
assertThat(kibanaRole.indices().allowedIndicesMatcher(UpdateSettingsAction.NAME).test(apmServiceConnectionIndex), is(false));
388+
assertThat(kibanaRole.indices().allowedIndicesMatcher(SearchAction.NAME).test(apmServiceConnectionIndex), is(false));
389+
assertThat(kibanaRole.indices().allowedIndicesMatcher(MultiSearchAction.NAME).test(apmServiceConnectionIndex), is(false));
390+
assertThat(kibanaRole.indices().allowedIndicesMatcher(GetAction.NAME).test(apmServiceConnectionIndex), is(false));
391+
378392
// Beats management index
379393
final String index = ".management-beats";
380394
assertThat(kibanaRole.indices().allowedIndicesMatcher("indices:foo").test(index), is(false));

0 commit comments

Comments
 (0)