Skip to content

Commit 72c5695

Browse files
docs: adiciona authentication-and-rbac.md
1 parent 2c706de commit 72c5695

1 file changed

Lines changed: 56 additions & 0 deletions

File tree

docs/authentication-and-rbac.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Autenticação e RBAC
2+
3+
## Fluxo de autenticação
4+
5+
1. O cliente envia credenciais para `POST /api/auth/login`.
6+
2. O serviço valida o usuário e a senha.
7+
3. A API emite um JWT assinado com HS256.
8+
4. O cliente envia `Authorization: Bearer <token>`.
9+
5. A dependência `get_current_user` decodifica o token e carrega o usuário do banco.
10+
6. Usuários inexistentes ou inativos recebem `401`.
11+
12+
O token contém:
13+
14+
- `sub`: ID do usuário;
15+
- `role`: perfil no momento da emissão;
16+
- `exp`: expiração.
17+
18+
A autorização efetiva utiliza o usuário carregado do banco, evitando depender apenas do perfil presente no token.
19+
20+
## Senhas
21+
22+
As senhas são armazenadas com PBKDF2-HMAC-SHA256, salt aleatório de 16 bytes e 260.000 iterações. A comparação utiliza `hmac.compare_digest`.
23+
24+
## Perfis
25+
26+
| Operação | ADMIN | OPERATOR | VIEWER |
27+
| --- | :---: | :---: | :---: |
28+
| Consultar dashboard | Sim | Sim | Sim |
29+
| Consultar serviços, checks e incidentes | Sim | Sim | Sim |
30+
| Criar ou alterar serviços | Sim | Sim | Não |
31+
| Configurar canais de alerta | Sim | Sim | Não |
32+
| Gerenciar usuários | Sim | Não | Não |
33+
34+
As dependências reutilizáveis são:
35+
36+
- `viewer_access`: todos os perfis;
37+
- `operator_access`: `ADMIN` e `OPERATOR`;
38+
- `admin_access`: somente `ADMIN`.
39+
40+
## Configuração
41+
42+
Variáveis relevantes:
43+
44+
- `JWT_SECRET_KEY`;
45+
- `JWT_ALGORITHM`, padrão `HS256`;
46+
- `JWT_ACCESS_TOKEN_EXPIRE_MINUTES`;
47+
- credenciais do administrador inicial.
48+
49+
Segredos e credenciais padrão são destinados apenas ao desenvolvimento e devem ser substituídos fora do ambiente local.
50+
51+
## Limitações atuais
52+
53+
- Não há refresh token.
54+
- Não há revogação individual de tokens.
55+
- Não há MFA.
56+
- A segurança de transporte depende de TLS no ambiente de implantação.

0 commit comments

Comments
 (0)