### 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/authc/service/ServiceAccountServiceTests.java
listener.onResponse(indexTokenInfos);
            return null;
        }).when(indexServiceAccountTokenStore).findTokensFor(eq(accountId), any());
        final GetServiceAccountCredentialsNodesResponse fileTokensResponse = mock(GetServiceAccountCredentialsNodesResponse.class);
        doAnswer(inv -> {
            final Object[] args = inv.getArguments();
            @SuppressWarnings("unchecked")
            final ActionListener<GetServiceAccountCredentialsNodesResponse> listener = (ActionListener<
                GetServiceAccountCredentialsNodesResponse>) args[2];
            listener.onResponse(fileTokensResponse);
            return null;
        }).when(client)
            .execute(eq(GetServiceAccountNodesCredentialsAction.INSTANCE), any(GetServiceAccountCredentialsNodesRequest.class), any());
        final PlainActionFuture<GetServiceAccountCredentialsResponse> future = new PlainActionFuture<>();
        serviceAccountService.findTokensFor(new GetServiceAccountCredentialsRequest(namespace, serviceName), future);
        final GetServiceAccountCredentialsResponse response = future.actionGet();
        assertThat(response.getPrincipal(), equalTo(accountId.asPrincipal()));
        assertThat(response.getNodesResponse(), is(fileTokensResponse));
        assertThat(response.getIndexTokenInfos(), equalTo(indexTokenInfos));
    }
    private SecureString createBearerString(List<byte[]> bytesList) throws IOException {
        try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
            for (byte[] bytes : bytesList) {
                out.write(bytes);
            }
            return new SecureString(Base64.getEncoder().withoutPadding().encodeToString(out.toByteArray()).toCharArray());
        }
    }
}