promovaweb-devops-review-databasus-stack
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseReview Databasus Stack
Databasus栈审核
Executa uma auditoria completa do arquivo e reporta conformidade, problemas e sugestões.
databasus.yaml对文件执行完整审计,上报合规性结果、问题及优化建议。
databasus.yamlInstruções de Execução
执行说明
Quando esta skill for invocada, siga exatamente este roteiro:
调用此技能时,请严格按照以下流程操作:
Passo 1 — Ler os arquivos
步骤1 — 读取文件
Leia o arquivo completo. Leia também para verificar a consistência das credenciais de banco.
databasus.yamlpostgres.yaml读取完整的文件。同时读取以校验数据库凭据的一致性。
databasus.yamlpostgres.yamlPasso 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 com versão fixada
databasus/databasus:<versão> - Alertar se estiver usando (sem versão)
databasus/databasus:latest
检查锚点:
x-databasus-image- 镜像应为固定版本的
databasus/databasus:<版本号> - 如果使用无版本号的需告警
databasus/databasus:latest
2. Variáveis de Ambiente
2. 环境变量
Verifique o anchor :
x-databasus-envDATABASE_DSN- Deve estar no formato
postgresql://usuario:senha@host:porta/banco - O host deve ser (nome do serviço no Swarm)
postgres - A porta deve ser
5432 - A senha não deve ser o placeholder — compare com a senha definida em
SENHApostgres.yaml - O banco () deve existir no PostgreSQL antes do deploy
databasus - O usuário deve ter permissões adequadas no banco
databasus
检查锚点:
x-databasus-envDATABASE_DSN- 格式应为
postgresql://用户名:密码@主机:端口/数据库名 - 主机应为(Swarm中的服务名)
postgres - 端口应为
5432 - 密码不能是占位符— 与
SENHA中定义的密码做比对postgres.yaml - 数据库()需在部署前已存在于PostgreSQL中
databasus - 用户需拥有库的对应权限
databasus
3. Serviço
3. 服务
Verifique se o serviço está presente e corretamente configurado.
databasus检查服务是否存在且配置正确。
databasus4. Portas Expostas
4. 暴露端口
- — verificar se a porta está exposta externamente
4005:4005 - 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. 存储卷
- — deve ser declarado como
databasus_dataexternal: true - Verificar se está montado em
/databasus-data - Alertar se o volume não for externo (dados perdidos em redeploy)
- — 需声明为
databasus_dataexternal: true - 校验是否挂载到路径
/databasus-data - 如果卷不是外部卷需告警(重新部署会丢失数据)
6. Réplicas
6. 副本数
| Serviço | Réplicas Esperadas | Observação |
|---|---|---|
| 1 | Interface de gerenciamento de banco — geralmente 1 réplica |
| 服务 | 预期副本数 | 备注 |
|---|---|---|
| 1 | 数据库管理界面 — 通常仅需1个副本 |
7. Rotas Traefik
7. Traefik路由
Para o serviço , verifique:
databasusÂncora de endereço ():
x-databasus-app-url- A âncora deve existir e conter um domínio válido (não placeholder como
x-databasus-app-url)databasus.agenciasynca.com.br - O domínio na âncora deve ser idêntico ao domínio dentro de na label
Host(...)traefik.http.routers.databasus.rule - Se não forem iguais, reportar como ❌ Erro: inconsistência entre e a regra Traefik
x-databasus-app-url
Labels obrigatórias:
traefik.enable=truetraefik.swarm.network=network_swarm_public- — deve conter
traefik.http.routers.databasus.rulecom domínio válido e coincidir comHost(...)x-databasus-app-url traefik.http.routers.databasus.entrypoints=websecuretraefik.http.routers.databasus.tls.certresolver=letsencryptresolvertraefik.http.routers.databasus.service=databasustraefik.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(...) - 如果不一致,上报为❌ 错误:与Traefik规则不匹配
x-databasus-app-url
必填标签:
traefik.enable=truetraefik.swarm.network=network_swarm_public- — 需包含带有效域名的
traefik.http.routers.databasus.rule,且与Host(...)一致x-databasus-app-url traefik.http.routers.databasus.entrypoints=websecuretraefik.http.routers.databasus.tls.certresolver=letsencryptresolvertraefik.http.routers.databasus.service=databasustraefik.http.services.databasus.loadbalancer.server.port=4005
8. Recursos do Container
8. 容器资源
| Serviço | CPU | Memória Máxima |
|---|---|---|
| "0.5" | 512M |
- Databasus é uma ferramenta leve — 512M é adequado
- Alertar se não tiver definido
resources.limits
| 服务 | CPU | 最大内存 |
|---|---|---|
| "0.5" | 512M |
- Databasus是轻量工具 — 512M内存足够
- 如果未定义需告警
resources.limits
9. Configuração de Deploy
9. 部署配置
- — deve ser
mode: replicatedreplicated - — deve incluir
placement.constraintsnode.role == manager - Verificar se há definido
update_config
- — 需为
mode: replicated模式replicated - — 需包含
placement.constraintsnode.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. 安全性
- não deve conter o placeholder
DATABASE_DSN— risco de conexão falhar ou usar senha erradaSENHA - 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最终输出结构化报告如下:
undefinedRelató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)
- ...
- ...
Recomendado
Recomendado
- ...
- ...
Opcional
Opcional
- ...
undefined- ...
undefined