### 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
final PlainActionFuture<RoleDescriptor> future2 = new PlainActionFuture<>();
        ServiceAccountService.getRoleDescriptor(auth2, future2);
        final ElasticsearchSecurityException e = expectThrows(ElasticsearchSecurityException.class, future2::actionGet);
        assertThat(e.getMessage(), containsString("cannot load role for service account [" + username + "] - no such service account"));
    }
    public void testCreateIndexTokenWillDelegate() {
        final Authentication authentication = AuthenticationTestHelper.builder().serviceAccount().build();
        final CreateServiceAccountTokenRequest request = mock(CreateServiceAccountTokenRequest.class);
        final ActionListener<CreateServiceAccountTokenResponse> future = new PlainActionFuture<>();
        serviceAccountService.createIndexToken(authentication, request, future);
        verify(indexServiceAccountTokenStore).createToken(eq(authentication), eq(request), eq(future));
    }
    public void testDeleteIndexTokenWillDelegate() {
        final DeleteServiceAccountTokenRequest request = mock(DeleteServiceAccountTokenRequest.class);
        final PlainActionFuture<Boolean> future = new PlainActionFuture<>();
        serviceAccountService.deleteIndexToken(request, future);
        verify(indexServiceAccountTokenStore).deleteToken(eq(request), eq(future));
    }
    public void testFindTokensFor() {
        final String namespace = randomAlphaOfLengthBetween(3, 8);
        final String serviceName = randomAlphaOfLengthBetween(3, 8);
        final ServiceAccountId accountId = new ServiceAccountId(namespace, serviceName);
        final List<TokenInfo> indexTokenInfos = IntStream.range(0, randomIntBetween(0, 3))
            .mapToObj(i -> TokenInfo.indexToken(ValidationTests.randomTokenName()))
            .sorted()
            .toList();
        doAnswer(inv -> {
            final Object[] args = inv.getArguments();
            @SuppressWarnings("unchecked")
            final ActionListener<Collection<TokenInfo>> listener = (ActionListener<Collection<TokenInfo>>) args[1];