O provedor Terraform do Elastic Stack atingiu um marco significativo. A partir da versão v0.13.1, você pode gerenciar sua postura de segurança do Elasticsearch — regras de detecção, listas de exceção e regras predefinidas — juntamente com tarefas de detecção de anomalias de aprendizado de máquina, monitores sintéticos e conectores de IA, tudo como código.
Isso integra sua lógica de detecção e tarefas de aprendizado de máquina ao mesmo fluxo de trabalho versionado e revisado por pares que seus clusters principais. Isso garante que sua postura de segurança e os conectores de IA não sejam mais exceções manuais em um ambiente totalmente automatizado.
O desafio: Configuração de segurança e observabilidade em escala
À medida que as implementações do Elastic crescem, também aumenta a complexidade de gerenciá-las. As equipes de segurança mantêm centenas de regras de detecção. Os SREs configuram o monitoramento em dezenas de clusters. Os engenheiros de aprendizado de máquina ajustam as tarefas de detecção de anomalias em vários ambientes. Todas essas configurações devem ser consistentes, auditáveis e reproduzíveis.
Sem infraestrutura como código, as equipes enfrentam dois problemas:
-
Desvio de configuração. Regras, políticas e monitores são criados manualmente através da interface do usuário do Kibana. Com o tempo, a produção e a encenação divergem. Ninguém tem certeza de qual versão de uma regra de detecção está sendo executada em cada local.
-
Rastro de auditoria oculto. Quando uma regra de detecção é alterada ou uma exceção é adicionada, não há solicitação de pull request para revisar, nenhum histórico de commits para rastrear e nenhum caminho de reversão caso algo dê errado. Os usuários precisam fazer um esforço extra para acessar esse histórico.
O provedor Terraform do Elastic Stack resolve isso integrando essas configurações ao mesmo fluxo de trabalho versionado e revisado por pares que as equipes já utilizam para infraestrutura.
Artefatos de segurança como código: regras de detecção, exceções e regras predefinidas.
Agora você pode gerenciar todo o ciclo de vida das regras de detecção do Elastic Security por meio do Terraform.
Regras de detecção
O recurso elasticstack_kibana_security_detection_rule permite definir, versionar e implantar regras de detecção no formato da Linguagem de Configuração HashiCorp (HCL):
resource "elasticstack_kibana_security_detection_rule" "suspicious_admin_logon" {
name = "Suspicious Admin Logon Activity"
type = "query"
query = "event.action:logon AND user.name:admin"
language = "kuery"
enabled = true
description = "Detects suspicious admin logon activities"
severity = "high"
risk_score = 75
from = "now-6m"
to = "now"
interval = "5m"
tags = ["security", "authentication", "admin"]
}
Isso significa que suas regras de detecção residem no Git, passam por revisão de código e são implantadas de forma consistente em todos os ambientes. Chega de clicar na interface do Kibana para replicar regras do ambiente de teste para o de produção.
Documentação de recursos da regra de detecção
Listas e itens de exceção
A abordagem de segurança como código se estende a um conjunto completo de recursos de gerenciamento de exceções:
elasticstack_kibana_security_exception_list- Criar e gerenciar listas de exceçãoelasticstack_kibana_security_exception_item- Defina itens de exceção individuais dentro de uma listaelasticstack_kibana_security_listeelasticstack_kibana_security_list_item- Gerenciar listas de valores para listas de permissões de IP, hashes de arquivos e outros indicadores.elasticstack_kibana_security_list_data_streams- Associar listas a fluxos de dados específicos
Eis um exemplo que os une: uma lista de exceções com itens que suprimem falsos positivos conhecidos para uma regra de detecção:
resource "elasticstack_kibana_security_exception_list" "vuln_scanner_exceptions" {
list_id = "vuln-scanner-exceptions"
name = "Vulnerability Scanner Exceptions"
description = "Suppress alerts from authorized vulnerability scanners"
type = "detection"
namespace_type = "single"
tags = ["security", "vulnerability-scanning"]
}
resource "elasticstack_kibana_security_exception_item" "nessus_scanner" {
list_id = elasticstack_kibana_security_exception_list.vuln_scanner_exceptions.list_id
item_id = "nessus-scanner"
name = "Nessus Scanner - Authorized"
description = "Suppress alerts from authorized Nessus scanner hosts"
type = "simple"
namespace_type = "single"
entries = [
{
type = "match"
field = "source.ip"
operator = "included"
value = "10.0.50.10"
},
{
type = "match_any"
field = "process.name"
operator = "included"
values = ["nessus", "nessusd"]
}
]
tags = ["nessus", "authorized-scanner"]
}
resource "elasticstack_kibana_security_exception_item" "qualys_scanner" {
list_id = elasticstack_kibana_security_exception_list.vuln_scanner_exceptions.list_id
item_id = "qualys-scanner"
name = "Qualys Scanner - Authorized"
description = "Suppress alerts from authorized Qualys scanner subnet"
type = "simple"
namespace_type = "single"
entries = [
{
type = "match"
field = "source.ip"
operator = "included"
value = "10.0.51.0/24"
}
]
tags = ["qualys", "authorized-scanner"]
}
A lista de exceções e seus itens são vinculados por list_id, portanto o Terraform gerencia o grafo de dependências automaticamente. Adicionar um novo scanner autorizado é uma simples solicitação de pull request – sem precisar navegar pela interface do Kibana, sem risco de esquecer qual ambiente recebeu a atualização.
Regras de segurança pré-configuradas
O recurso elasticstack_kibana_prebuilt_rule permite gerenciar as regras de detecção pré-construídas do Elastic via Terraform. Isso é particularmente valioso para organizações que precisam rastrear quais regras predefinidas estão ativadas, personalizar seus parâmetros e garantir uma implementação consistente em todos os ambientes.
Detecção de anomalias em aprendizado de máquina como código
A detecção de anomalias por meio de aprendizado de máquina é uma das funcionalidades mais poderosas do Elasticsearch, mas o gerenciamento de tarefas de aprendizado de máquina em diferentes ambientes tem sido tradicionalmente um processo manual. Você cria um trabalho na interface do Kibana, ajusta os detectores, configura o fluxo de dados e espera que alguém documente as configurações para que elas possam ser replicadas no próximo ambiente.
O recurso elasticstack_elasticsearch_ml_anomaly_detection_job altera isso. Agora você pode definir a configuração completa de uma tarefa de detecção de anomalias no HCL — detectores, intervalos de buckets, influenciadores, feeds de dados e limites de análise — e implantá-la de forma consistente em ambientes de desenvolvimento, teste e produção.
resource "elasticstack_elasticsearch_ml_anomaly_detection_job" "cpu_anomalies" {
job_id = "high-cpu-by-host"
description = "Detect unusual CPU usage patterns"
analysis_config = {
bucket_span = "15m"
detectors = [{
function = "high_mean"
field_name = "system.cpu.user_pct"
}]
influencers = ["host.name"]
}
data_description = {
time_field = "@timestamp"
}
}
Isso é importante para equipes que dependem de aprendizado de máquina para detectar anomalias na infraestrutura, comportamentos incomuns de usuários ou ameaças à segurança. Em vez de recriar manualmente os trabalhos ao iniciar novos clusters ou ao recuperar de falhas, toda a configuração de aprendizado de máquina reside em um sistema de controle de versão – revisável, repetível e recuperável.
Automação entre clusters com chaves de API
Para organizações que executam vários clusters Elasticsearch, o provedor agora oferece suporte a chaves de API de cluster para pesquisa entre clusters (CCS) e replicação entre clusters (CCR). Você pode criar chaves de API projetadas especificamente para comunicação segura entre clusters, permitindo a automação de ponta a ponta de arquiteturas com múltiplos clusters.
Isso significa que você pode provisionar dois clusters, configurar o CCS/CCR entre eles e definir as credenciais de segurança necessárias, tudo em uma única configuração do Terraform.
resource "elasticstack_elasticsearch_security_api_key" "ccs_key" {
name = "cross-cluster-search-key"
type = "cross_cluster"
access = {
search = [{
names = ["logs-*", "metrics-*"]
}]
replication = [{
names = ["archive-*"]
}]
}
expiration = "90d"
metadata = jsonencode({
environment = "production"
purpose = "ccs-ccr-between-prod-clusters"
team = "platform"
})
}
Quando type é definido como cross_cluster, a chave de API é definida para operações CCS/CCR. Você define quais padrões de índice são acessíveis para pesquisa e replicação, define uma política de expiração e marca a chave com metadados - tudo isso pode ser revisado em uma solicitação de pull.
Saiba mais sobre os recursos de chave de API na documentação.
Conectores de IA como código
O provedor agora oferece suporte aos conectores .bedrock e .gen-ai , trazendo a infraestrutura de IA para seus fluxos de trabalho do Terraform. À medida que as equipes integram cada vez mais modelos de linguagem complexos em seus fluxos de trabalho do Elastic — para assistentes de IA, descoberta de ataques e investigações automatizadas — o gerenciamento dessas configurações de conectores como código torna-se essencial.
resource "elasticstack_kibana_action_connector" "bedrock" {
name = "aws-bedrock"
connector_type_id = ".bedrock"
config = jsonencode({
apiUrl = "https://bedrock-runtime.us-east-1.amazonaws.com"
defaultModel = "anthropic.claude-v2"
})
secrets = jsonencode({
accessKey = var.aws_access_key
secret = var.aws_secret_key
})
}
resource "elasticstack_kibana_action_connector" "openai" {
name = "openai"
connector_type_id = ".gen-ai"
config = jsonencode({
apiProvider = "OpenAI"
apiUrl = "https://api.openai.com/v1/chat/completions"
defaultModel = "gpt-4"
})
secrets = jsonencode({
apiKey = var.openai_api_key
})
}
Com esses conectores definidos no Terraform, você pode versionar sua configuração de integração de IA juntamente com o restante da sua infraestrutura Elastic — e trocar modelos ou provedores por meio de uma simples solicitação de pull request.
Melhorias na observabilidade
Monitores sintéticos
O recurso elasticstack_kibana_synthetics_monitor agora inclui um campo labels , permitindo melhor organização e filtragem de verificações sintéticas. Os rótulos permitem categorizar os monitores por equipe, ambiente ou serviço, facilitando o gerenciamento do monitoramento sintético em grande escala.
Melhorias adicionais na plataforma
Os lançamentos recentes também incluíram diversos recursos e atributos que complementam a cobertura do provedor:
elasticstack_elasticsearch_alias- Gerenciar aliases do Elasticsearch como um recurso dedicadoelasticstack_kibana_default_data_view- Defina a visualização de dados padrão para um espaço do Kibana.solutionatributo emelasticstack_kibana_space- Configurar o tipo de solução para espaços do Kibana (disponível a partir da versão 8.16)- Aprimoramentos na política do agente de frota -
host_name_formatpara configurar nome do host versus FQDN erequired_versionspara fixação de versão.
Para começar
Se você já utiliza o provedor Terraform do Elastic Stack, atualize para a versão mais recente para obter todos esses recursos:
terraform {
required_providers {
elasticstack = {
source = "elastic/elasticstack"
version = "~> 0.14"
}
}
}
Se você é iniciante no gerenciamento do Elastic Stack com Terraform, comece consultando a documentação do provedor no registro do Terraform.
Para começar a usar o Elastic Cloud hoje mesmo, faça login no console do Elastic Cloud ou inscreva-se para um teste gratuito.
Para conferir a lista completa de alterações, acesse as notas de lançamento no GitHub.
