Modelo de segurança
Quem pode fazer o quê, onde ficam os limites e contra o que o CloudZH não protege.
Camadas
| Camada | Proteção |
|---|---|
| Entrada | Caddy como única porta de entrada, HTTPS em tudo, apps de administração atrás do login do painel, cookie de sessão removido antes de as requisições chegarem a um app |
| Login | Política de senhas, passkeys, códigos de autenticador com códigos de recuperação, bloqueio após tentativas falhas, lista de dispositivos com logout |
| Regras | Administração só pela rede doméstica ou VPN, 2FA obrigatória, confirmação de senha para ações sensíveis |
| Painel | Sem privilégios, contêiner reforçado, sem pacotes de terceiros |
| Agente | Lista fixa de comandos via socket Unix, reforço do systemd, caminhos verificados sem seguir symlinks, log de auditoria |
| Servidor | Software do sistema só pela linha de comando, Fail2Ban nos logins, atualizações de segurança por botão |
Segredos
- Links de convite são guardados apenas como hashes. As chaves de licença são verificadas por hash e guardadas criptografadas, para que você possa vê-las na sua conta.
- Chaves de IA são guardadas criptografadas; o navegador vê os últimos quatro caracteres.
- O token da sua conta Plex fica na memória apenas durante a configuração.
- Apps de administração obtêm suas chaves de API dos próprios arquivos de configuração; as chaves nunca são enviadas ao navegador.
Limites
Quem tem root no servidor pode ler e alterar tudo, inclusive o CloudZH. Dois apps, Lingarr e Requestrr, rodam sem login próprio e podem ser acessados por outros contêineres na rede Docker; de fora, ficam atrás do login do painel como todo app de administração.