Pular para conteúdo

Collector — Como Executar

O db-collector é um binário standalone que coleta metadados de configuração do banco de dados e gera um arquivo bundle.json para upload na plataforma. Este guia mostra como baixar, executar e fazer upload do bundle.


Pré-requisitos

  • Acesso de rede ao servidor de banco de dados a partir da máquina onde o coletor será executado
  • Um usuário de banco de dados com permissões de somente leitura em tabelas de metadados (veja as permissões mínimas abaixo)
  • Acesso HTTPS à URL da plataforma Elven Assessment (para upload do bundle)

Passo 1 — Baixe o db-collector

Na plataforma, acesse Novo Assessment → Banco de Dados → Baixar Collector.

O download oferece binários para:

Sistema Operacional Arquivo
Linux x86-64 db-collector-linux-amd64
Linux ARM64 db-collector-linux-arm64
macOS Intel db-collector-darwin-amd64
macOS Apple Silicon db-collector-darwin-arm64
Windows db-collector-windows-amd64.exe
# Linux — tornar executável após download
chmod +x db-collector-linux-amd64

Screenshot

📸 Captura de tela: Modal de download do collector — 5 opções de download por SO com ícones, link para documentação de permissões mínimas, botão "Já tenho o collector — fazer upload" em destaque.


Passo 2 — Crie o usuário de banco de dados

Crie um usuário dedicado com permissões mínimas de leitura:

-- Criar usuário dedicado para o coletor
CREATE USER elven_collector WITH PASSWORD 'senha_forte_aqui';

-- Permissões de leitura em views de sistema
GRANT pg_monitor TO elven_collector;
GRANT CONNECT ON DATABASE postgres TO elven_collector;

-- Para cada banco de dados que deseja analisar:
-- (repita para cada database no cluster)
GRANT CONNECT ON DATABASE nome_do_banco TO elven_collector;

pg_monitor

O role pg_monitor (disponível no PostgreSQL 10+) concede acesso de leitura a todas as views de monitoramento (pg_stat_*, pg_settings, etc.) sem acesso a dados de negócio.

-- Criar usuário dedicado
CREATE USER 'elven_collector'@'%' IDENTIFIED BY 'senha_forte_aqui';

-- Permissões mínimas de leitura em metadados
GRANT SELECT ON performance_schema.* TO 'elven_collector'@'%';
GRANT SELECT ON information_schema.* TO 'elven_collector'@'%';
GRANT SELECT ON mysql.user TO 'elven_collector'@'%';
GRANT SELECT ON mysql.db TO 'elven_collector'@'%';
GRANT PROCESS ON *.* TO 'elven_collector'@'%';
GRANT REPLICATION CLIENT ON *.* TO 'elven_collector'@'%';
GRANT SHOW DATABASES ON *.* TO 'elven_collector'@'%';

FLUSH PRIVILEGES;
-- Criar login
CREATE LOGIN [elven_collector] WITH PASSWORD = 'SenhaForte123!';

-- Criar usuário no master
USE master;
CREATE USER [elven_collector] FOR LOGIN [elven_collector];

-- Permissões de leitura em metadados do servidor
GRANT VIEW SERVER STATE TO [elven_collector];
GRANT VIEW ANY DEFINITION TO [elven_collector];
GRANT VIEW ANY DATABASE TO [elven_collector];
// Conectar ao mongo shell como admin e executar:
db.createUser({
  user: "elven_collector",
  pwd: "senha_forte_aqui",
  roles: [
    { role: "clusterMonitor", db: "admin" },
    { role: "read", db: "admin" }
  ]
});
# Redis 6+ com ACL
# Adicionar ao redis.conf:
user elven_collector on >senha_forte +info +config|get +acl|list +acl|whoami ~* &* resetchannels

Para Redis sem ACL (versões antigas), use a senha de autenticação global com acesso somente ao comando INFO e CONFIG GET.


Passo 3 — Execute o coletor

./db-collector-linux-amd64 \
  --engine postgres \
  --host meu-postgres.internal \
  --port 5432 \
  --user elven_collector \
  --password "senha_forte_aqui" \
  --database postgres \
  --output bundle.json

Para analisar múltiplos bancos no mesmo cluster:

./db-collector-linux-amd64 \
  --engine postgres \
  --host meu-postgres.internal \
  --port 5432 \
  --user elven_collector \
  --password "senha_forte_aqui" \
  --all-databases \
  --output bundle.json

./db-collector-linux-amd64 \
  --engine mysql \
  --host meu-mysql.internal \
  --port 3306 \
  --user elven_collector \
  --password "senha_forte_aqui" \
  --output bundle.json
./db-collector-linux-amd64 \
  --engine sqlserver \
  --host meu-sqlserver.internal \
  --port 1433 \
  --user elven_collector \
  --password "SenhaForte123!" \
  --database master \
  --output bundle.json
./db-collector-linux-amd64 \
  --engine mongodb \
  --host meu-mongodb.internal \
  --port 27017 \
  --user elven_collector \
  --password "senha_forte_aqui" \
  --auth-source admin \
  --output bundle.json
./db-collector-linux-amd64 \
  --engine redis \
  --host meu-redis.internal \
  --port 6379 \
  --password "senha_forte_aqui" \
  --output bundle.json
# DynamoDB usa credenciais AWS — configure antes:
export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="..."
export AWS_REGION="us-east-1"

./db-collector-linux-amd64 \
  --engine dynamodb \
  --region us-east-1 \
  --output bundle.json

Opções adicionais

Flag Descrição
--ssl Habilitar conexão TLS/SSL
--ssl-ca /path/ca.pem Certificado CA para validação TLS
--ssl-skip-verify Pular verificação de certificado (não recomendado em produção)
--timeout 60 Timeout da conexão em segundos (padrão: 30)
--verbose Exibir queries executadas no terminal (útil para debug)

Saída esperada

[db-collector v0.4.x] Elven Assessment Database Collector
Engine:  postgres
Host:    meu-postgres.internal:5432

Conectando ao banco de dados... OK
Coletando configurações do servidor...   OK (47 parâmetros)
Coletando usuários e roles...            OK (12 usuários)
Coletando informações de bancos...       OK (5 bancos)
Coletando logs de auditoria...           OK
Coletando extensões...                   OK (8 extensões)
Coletando informações de replicação...   OK
Coletando estatísticas de uso...         OK

Bundle gerado: bundle.json (42.3 KB)
Nenhum dado de negócio coletado. Apenas metadados de configuração.

Passo 4 — Faça upload do bundle na plataforma

Opção A — Upload via interface

  1. No Elven Assessment, acesse Novo Assessment → Banco de Dados.
  2. Clique em Fazer upload do bundle.
  3. Selecione o arquivo bundle.json gerado.
  4. A plataforma valida o bundle e exibe as informações do servidor coletado.

Screenshot

📸 Captura de tela: Tela de upload de bundle — área de drop zone com ícone de upload, "Arraste o bundle.json aqui ou clique para selecionar". Após upload, resumo: "PostgreSQL 15.3 — meu-postgres.internal — 5 bancos — Coletado em 13/05/2026 14:32".

Opção B — Upload direto pelo coletor

O coletor pode enviar o bundle diretamente para a plataforma sem salvar em disco:

./db-collector-linux-amd64 \
  --engine postgres \
  --host meu-postgres.internal \
  --port 5432 \
  --user elven_collector \
  --password "senha_forte_aqui" \
  --upload-url https://assessment.suaempresa.com/api/db-bundles \
  --upload-token "SEU_TOKEN_DA_PLATAFORMA"

Passo 5 — Responda o questionário

Após o upload, a plataforma exibe um questionário complementar sobre controles que não são detectáveis via metadados:

  • "Existe processo de revisão de permissões de banco de dados?"
  • "Backups são testados regularmente (restore test)?"
  • "Há monitoramento de queries lentas em produção?"
  • "Existe rotação periódica de credenciais de banco?"

Responda e clique em Finalizar para ver os resultados.


Dicas e solução de problemas

Execute o coletor próximo ao banco

Para reduzir latência, execute o coletor na mesma rede do banco de dados — por exemplo, em um bastion host, jump server, ou diretamente no servidor de banco.

Conexão recusada?

Verifique: - O host e porta estão corretos - O usuário tem permissão de conexão remota (ex.: pg_hba.conf para PostgreSQL) - O firewall/security group permite a conexão da máquina onde o coletor roda

Consulte a seção Solução de Problemas para mais detalhes.

O bundle é seguro para transmitir?

Sim. O bundle contém apenas metadados de configuração — parâmetros de servidor, nomes de usuários (sem senhas), roles e privilégios, versões, configurações de auditoria. Nenhum dado de negócio é incluído. O bundle é enviado via HTTPS.