Já faz muito tempo desde que eu tentei o envio nativo de log no Windows, mas lembro que era muito mais difícil do que eu esperava. Não consigo imaginar fazer isso fora do domínio ou mesmo fora da federação. Esta será uma resposta logstash porque é isso que eu sei.
Seus instintos estão corretos, a maneira de fazer isso fora de um único domínio é usar algo como Winlogbeat para extrair os eventos do Windows dos produtores e transmiti-los em algum lugar onde você possa processá-los. Dependendo da sua fluência com a manipulação de Eventos do Windows, pode ser mais fácil fazer a filtragem no nível Eventos do Windows (enviar apenas os eventos que você deseja para um log de eventos do mesmo servidor apenas para isso e apontar WinlogBeat para isso) em vez de fazê-lo no nível de batidas.
Fazer isso em escala significa pensar em compensações. Para uma grande frota de produtores de log de segurança do Windows, você está olhando para uma alta taxa de eventos quando se trata de ingestão. Para configurações maiores, é altamente recomendável usar uma fila de buffer de algum tipo entre as batidas e a camada do Logstash que faz toda a marcação. Existem algumas opções, mas o Redis e o Kafka são suportados se já estiverem na sua infraestrutura.
Você também pode enviar diretamente de batidas para o Elasticsearch, mas isso deixa muito do poder de transformação do Logstash na tabela. Além disso, o ES ingere os dados mais rapidamente (mais eventos por segundo) quando houver alguns nós fazendo grandes inserções em massa, em vez de muitos nós fazendo pequenas inserções em massa. Novamente, você já pode ter a infraestrutura / experiência do ElasticSearch no site onde isso pode não ser um problema.