core/docs/SECURITY.md
2025-12-27 13:04:36 -03:00

30 lines
1.7 KiB
Markdown

# Segurança e Permissões do Appwrite
As coleções do projeto seguem uma política de Row-Level Security (RLS) para proteger os dados dos usuários e os registros de auditoria.
## Princípios gerais
- Cada documento pertence a um usuário autenticado, identificado pelo `userId` armazenado no documento.
- Operações de leitura e gravação são restritas ao proprietário do documento (role `member`).
- Logs de auditoria globais só podem ser consultados por usuários com a role `admin`.
## Regras por coleção
### `cloud_accounts`
- **Leitura**: apenas o usuário que criou o documento (role `member`).
- **Criação**: apenas usuários autenticados.
- **Atualização/Exclusão**: somente o proprietário do documento.
### `projects`
- **Leitura**: restrita ao proprietário do documento.
- **Criação**: usuários autenticados podem criar seus próprios registros.
- **Atualização/Exclusão**: apenas o proprietário do documento.
### `audit_logs`
- **Leitura**: exclusiva para usuários com role `admin` (para auditoria global).
- **Criação**: serviços e funções podem registrar ações em nome dos usuários; cada entrada mantém o `userId` responsável.
- **Atualização/Exclusão**: não permitidas para usuários finais; apenas processos administrativos podem gerenciar retenção.
## Considerações adicionais
- Tokens e chaves sensíveis (GitHub, Cloudflare) devem ser armazenados em `cloud_accounts` e nunca enviados ao frontend.
- Funções Cloud (como as de proxy) devem validar o `userId` associado ao documento antes de usar qualquer chave.
- Revogue ou rotacione chaves comprometidas removendo ou atualizando o documento correspondente na coleção.