promovaweb-devops-review-databasus-stack

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Review Databasus Stack

Databasus栈审核

Executa uma auditoria completa do arquivo
databasus.yaml
e reporta conformidade, problemas e sugestões.
databasus.yaml
文件执行完整审计,上报合规性结果、问题及优化建议。

Instruções de Execução

执行说明

Quando esta skill for invocada, siga exatamente este roteiro:
调用此技能时,请严格按照以下流程操作:

Passo 1 — Ler os arquivos

步骤1 — 读取文件

Leia o arquivo
databasus.yaml
completo. Leia também
postgres.yaml
para verificar a consistência das credenciais de banco.
读取完整的
databasus.yaml
文件。同时读取
postgres.yaml
以校验数据库凭据的一致性。

Passo 2 — Executar todos os checks abaixo

步骤2 — 执行以下所有检查项

Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).
逐个执行每个检查模块,记录结果(✅ 正常 / ⚠️ 注意 / ❌ 错误)。

Passo 3 — Gravar o resultado

步骤3 — 保存结果

Grave o relatório completo em um arquivo chamado databasus.audit.md.

将完整报告保存为名为databasus.audit.md的文件。

Checks de Verificação

检查项

1. Imagem

1. 镜像

Verifique o anchor
x-databasus-image
:
  • A imagem deve ser
    databasus/databasus:<versão>
    com versão fixada
  • Alertar se estiver usando
    databasus/databasus:latest
    (sem versão)

检查锚点
x-databasus-image
  • 镜像应为固定版本的
    databasus/databasus:<版本号>
  • 如果使用无版本号的
    databasus/databasus:latest
    需告警

2. Variáveis de Ambiente

2. 环境变量

Verifique o anchor
x-databasus-env
:
DATABASE_DSN
:
  • Deve estar no formato
    postgresql://usuario:senha@host:porta/banco
  • O host deve ser
    postgres
    (nome do serviço no Swarm)
  • A porta deve ser
    5432
  • A senha não deve ser o placeholder
    SENHA
    — compare com a senha definida em
    postgres.yaml
  • O banco (
    databasus
    ) deve existir no PostgreSQL antes do deploy
  • O usuário deve ter permissões adequadas no banco
    databasus

检查锚点
x-databasus-env
DATABASE_DSN
  • 格式应为
    postgresql://用户名:密码@主机:端口/数据库名
  • 主机应为
    postgres
    (Swarm中的服务名)
  • 端口应为
    5432
  • 密码不能是占位符
    SENHA
    — 与
    postgres.yaml
    中定义的密码做比对
  • 数据库(
    databasus
    )需在部署前已存在于PostgreSQL中
  • 用户需拥有
    databasus
    库的对应权限

3. Serviço

3. 服务

Verifique se o serviço
databasus
está presente e corretamente configurado.

检查
databasus
服务是否存在且配置正确。

4. Portas Expostas

4. 暴露端口

  • 4005:4005
    — verificar se a porta está exposta externamente
  • Alertar se a porta 4005 estiver exposta quando Traefik já está configurado (redundante)
  • Recomendar remover exposição direta de porta e usar apenas Traefik

  • 4005:4005
    — 校验端口是否对外暴露
  • 如果已经配置Traefik的情况下仍暴露4005端口需告警(冗余配置)
  • 建议移除端口直接暴露,仅使用Traefik访问

5. Volumes

5. 存储卷

  • databasus_data
    — deve ser declarado como
    external: true
  • Verificar se está montado em
    /databasus-data
  • Alertar se o volume não for externo (dados perdidos em redeploy)

  • databasus_data
    — 需声明为
    external: true
  • 校验是否挂载到
    /databasus-data
    路径
  • 如果卷不是外部卷需告警(重新部署会丢失数据)

6. Réplicas

6. 副本数

ServiçoRéplicas EsperadasObservação
databasus
1Interface de gerenciamento de banco — geralmente 1 réplica

服务预期副本数备注
databasus
1数据库管理界面 — 通常仅需1个副本

7. Rotas Traefik

7. Traefik路由

Para o serviço
databasus
, verifique:
Âncora de endereço (
x-databasus-app-url
):
  • A âncora
    x-databasus-app-url
    deve existir e conter um domínio válido (não placeholder como
    databasus.agenciasynca.com.br
    )
  • O domínio na âncora deve ser idêntico ao domínio dentro de
    Host(...)
    na label
    traefik.http.routers.databasus.rule
  • Se não forem iguais, reportar como ❌ Erro: inconsistência entre
    x-databasus-app-url
    e a regra Traefik
Labels obrigatórias:
  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.databasus.rule
    — deve conter
    Host(...)
    com domínio válido e coincidir com
    x-databasus-app-url
  • traefik.http.routers.databasus.entrypoints=websecure
  • traefik.http.routers.databasus.tls.certresolver=letsencryptresolver
  • traefik.http.routers.databasus.service=databasus
  • traefik.http.services.databasus.loadbalancer.server.port=4005

针对
databasus
服务,检查以下内容:
地址锚点(
x-databasus-app-url
):
  • 锚点
    x-databasus-app-url
    需存在且包含有效域名(不能是
    databasus.agenciasynca.com.br
    这类占位符)
  • 锚点中的域名必须与
    traefik.http.routers.databasus.rule
    标签中
    Host(...)
    内的域名完全一致
  • 如果不一致,上报为❌ 错误:
    x-databasus-app-url
    与Traefik规则不匹配
必填标签:
  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.databasus.rule
    — 需包含带有效域名的
    Host(...)
    ,且与
    x-databasus-app-url
    一致
  • traefik.http.routers.databasus.entrypoints=websecure
  • traefik.http.routers.databasus.tls.certresolver=letsencryptresolver
  • traefik.http.routers.databasus.service=databasus
  • traefik.http.services.databasus.loadbalancer.server.port=4005

8. Recursos do Container

8. 容器资源

ServiçoCPUMemória Máxima
databasus
"0.5"512M
  • Databasus é uma ferramenta leve — 512M é adequado
  • Alertar se não tiver
    resources.limits
    definido

服务CPU最大内存
databasus
"0.5"512M
  • Databasus是轻量工具 — 512M内存足够
  • 如果未定义
    resources.limits
    需告警

9. Configuração de Deploy

9. 部署配置

  • mode: replicated
    — deve ser
    replicated
  • placement.constraints
    — deve incluir
    node.role == manager
  • Verificar se há
    update_config
    definido

  • mode: replicated
    — 需为
    replicated
    模式
  • placement.constraints
    — 需包含
    node.role == manager
  • 检查是否定义了
    update_config

10. Redes

10. 网络

  • O serviço deve estar na rede
    network_swarm_public
  • A rede deve ser declarada como
    external: true

  • 服务需加入
    network_swarm_public
    网络
  • 该网络需声明为
    external: true

11. Segurança

11. 安全性

  • DATABASE_DSN
    não deve conter o placeholder
    SENHA
    — risco de conexão falhar ou usar senha errada
  • Databasus é uma interface de gerenciamento de banco com acesso total — restringir acesso é crítico
  • Recomendado: adicionar middleware de autenticação no Traefik (basicauth ou forward auth)
  • Recomendado: adicionar IP allowlist no Traefik para o Databasus
  • Porta 4005 exposta + Traefik: remover exposição direta
  • Verificar se o usuário PostgreSQL tem apenas permissões necessárias (não usar superusuário)

  • DATABASE_DSN
    不能包含占位符
    SENHA
    — 存在连接失败或用错密码的风险
  • Databasus是拥有全权限的数据库管理界面 — 限制访问至关重要
  • 建议:在Traefik中添加认证中间件(basicauth或forward auth)
  • 建议:在Traefik中为Databasus添加IP白名单
  • 同时暴露4005端口+配置Traefik:移除端口直接暴露
  • 检查PostgreSQL用户是否仅拥有必要权限(不要使用超级用户)

Formato do Relatório de Saída

输出报告格式

Ao final, produza um relatório estruturado:
undefined
最终输出结构化报告如下:
undefined

Relatório de Auditoria — databasus.yaml

Relatório de Auditoria — databasus.yaml

Data: <data atual>
Data: <data atual>

Resumo

Resumo

  • Total de checks: X
  • ✅ OK: X
  • ⚠️ Atenções: X
  • ❌ Erros: X
  • Total de checks: X
  • ✅ OK: X
  • ⚠️ Atenções: X
  • ❌ Erros: X

Resultados por Categoria

Resultados por Categoria

1. Imagem

1. Imagem

⚠️ databasus/databasus:latest: versão não fixada — considere fixar versão em produção ...
⚠️ databasus/databasus:latest: versão não fixada — considere fixar versão em produção ...

2. Variáveis de Ambiente

2. Variáveis de Ambiente

❌ DATABASE_DSN: contém placeholder SENHA — troque antes do deploy ✅ DATABASE_DSN: host=postgres, porta=5432, formato correto ...
❌ DATABASE_DSN: contém placeholder SENHA — troque antes do deploy ✅ DATABASE_DSN: host=postgres, porta=5432, formato correto ...

3. Serviço

3. Serviço

✅ databasus: presente
✅ databasus: presente

4. Portas

4. Portas

⚠️ Porta 4005 exposta e Traefik configurado — considere remover exposição direta ...
⚠️ Porta 4005 exposta e Traefik configurado — considere remover exposição direta ...

5. Volumes

5. Volumes

✅ databasus_data: volume externo em /databasus-data ...
✅ databasus_data: volume externo em /databasus-data ...

6. Réplicas

6. Réplicas

✅ databasus: 1 réplica ...
✅ databasus: 1 réplica ...

7. Rotas Traefik

7. Rotas Traefik

✅ databasus: rota Host correta, TLS ok ...
✅ databasus: rota Host correta, TLS ok ...

8. Recursos

8. Recursos

✅ 0.5 CPU, 512M de memória (adequado para ferramenta leve) ...
✅ 0.5 CPU, 512M de memória (adequado para ferramenta leve) ...

9. Deploy

9. Deploy

⚠️ update_config não definido ...
⚠️ update_config não definido ...

10. Redes

10. Redes

✅ network_swarm_public: configurado como external ...
✅ network_swarm_public: configurado como external ...

11. Segurança

11. Segurança

❌ DATABASE_DSN: placeholder SENHA detectado ⚠️ Databasus tem acesso total ao banco — adicione middleware de autenticação no Traefik ⚠️ Considere IP allowlist para restringir acesso ao Databasus ...
❌ DATABASE_DSN: placeholder SENHA detectado ⚠️ Databasus tem acesso total ao banco — adicione middleware de autenticação no Traefik ⚠️ Considere IP allowlist para restringir acesso ao Databasus ...

Ações Recomendadas (por prioridade)

Ações Recomendadas (por prioridade)

Crítico (fazer antes do deploy)

Crítico (fazer antes do deploy)

  1. ...
  1. ...

Recomendado

Recomendado

  1. ...
  1. ...

Opcional

Opcional

  1. ...
undefined
  1. ...
undefined