### 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 ServiceAccountId accountId3 = new ServiceAccountId(ElasticServiceAccounts.NAMESPACE, "fleet-server");
            final SecureString secret3 = new SecureString(randomAlphaOfLengthBetween(1, 9).toCharArray());
            final ServiceAccountToken token3 = new ServiceAccountToken(accountId3, randomAlphaOfLengthBetween(3, 8), secret3);
            appender.addExpectation(
                new MockLogAppender.SeenEventExpectation(
                    "secret value too short",
                    ServiceAccountService.class.getName(),
                    Level.DEBUG,
                    "the provided credential has length ["
                        + secret3.length()
                        + "] but a token's secret value must be at least [10] characters"
                )
            );
            final PlainActionFuture<Authentication> future3 = new PlainActionFuture<>();
            serviceAccountService.authenticateToken(token3, randomAlphaOfLengthBetween(3, 8), future3);
            final ExecutionException e3 = expectThrows(ExecutionException.class, future3::get);
            assertThat(e3.getCause().getClass(), is(ElasticsearchSecurityException.class));
            assertThat(
                e3.getMessage(),
                containsString(
                    "failed to authenticate service account ["
                        + token3.getAccountId().asPrincipal()
                        + "] with token name ["
                        + token3.getTokenName()
                        + "]"
                )
            );
            appender.assertAllExpectationsMatched();
            final TokenInfo.TokenSource tokenSource = randomFrom(TokenInfo.TokenSource.values());