### Description

**Background**
As part of https://github.com/elastic/kibana/issues/104986 we will be adding the ability for Elastic Agents to send agent monitoring data to a remote Elasticsearch cluster. In order to achieve this, we will need a service token for the remote cluster which fleet server will use. 

This service account will need less permissions than the `elastic/fleet-server` as integration data will not be sent to remote clusters yet.

**Service Account Details**

Name: `elastic/fleet-server-remote`

Permissions:
-  for indices `logs-*`, `metrics-*` privileges "write", "create_index", "auto_configure"

x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/action/service/TransportGetServiceAccountActionTests.java
new GetServiceAccountRequest("elastic", null)
        );
        final PlainActionFuture<GetServiceAccountResponse> future1 = new PlainActionFuture<>();
        transportGetServiceAccountAction.doExecute(mock(Task.class), request1, future1);
        final GetServiceAccountResponse getServiceAccountResponse1 = future1.actionGet();
        assertThat(getServiceAccountResponse1.getServiceAccountInfos().length, equalTo(3));
        assertThat(
            Arrays.stream(getServiceAccountResponse1.getServiceAccountInfos())
                .map(ServiceAccountInfo::getPrincipal)
                .collect(Collectors.toList()),
            containsInAnyOrder("elastic/enterprise-search-server", "elastic/fleet-server", "elastic/kibana")
        );
        final GetServiceAccountRequest request2 = new GetServiceAccountRequest("elastic", "fleet-server");
        final PlainActionFuture<GetServiceAccountResponse> future2 = new PlainActionFuture<>();
        transportGetServiceAccountAction.doExecute(mock(Task.class), request2, future2);
        final GetServiceAccountResponse getServiceAccountResponse2 = future2.actionGet();
        assertThat(getServiceAccountResponse2.getServiceAccountInfos().length, equalTo(1));
        assertThat(getServiceAccountResponse2.getServiceAccountInfos()[0].getPrincipal(), equalTo("elastic/fleet-server"));
        final GetServiceAccountRequest request3 = randomFrom(
            new GetServiceAccountRequest("foo", null),
            new GetServiceAccountRequest("elastic", "foo"),
            new GetServiceAccountRequest("foo", "bar")
        );
        final PlainActionFuture<GetServiceAccountResponse> future3 = new PlainActionFuture<>();
        transportGetServiceAccountAction.doExecute(mock(Task.class), request3, future3);
        final GetServiceAccountResponse getServiceAccountResponse3 = future3.actionGet();
        assertThat(getServiceAccountResponse3.getServiceAccountInfos().length, equalTo(0));
    }
}