# MANUAL TÉCNICO - GESTÃO DE USUÁRIOS E PERMISSÕES DE BANCO

**Código:** ITGINF 0021/26 | **Classificação:** RESTRITO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}

## 1. HISTÓRICO DE REVISÃO

| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |

## 2. OBJETIVO
Padronizar a criação de credenciais, rotação de senhas e a concessão de privilégios mínimos (Least Privilege) em bancos de dados.

---

## 3. POSTGRESQL

Acesse como admin: `sudo -u postgres psql`

### Criar Usuário (Role)
```sql
-- Criar usuario com senha
CREATE USER app_user WITH PASSWORD 'SenhaForte123';

-- Criar um banco para ele
CREATE DATABASE app_db OWNER app_user;
```

### Permissões (Grant)
```sql
-- Conectar no banco especifico
\c app_db

-- Dar acesso a todas as tabelas (SCHEMA public)
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO app_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO app_user;
```

---

## 4. MYSQL / MARIADB

Acesse como admin: `mysql -u root -p`

### Criar Usuário (Definindo Origem)
No MySQL, o usuário é atrelado ao IP de origem (`@'%'` = qualquer lugar, `@'localhost'` = local).

```sql
CREATE USER 'app_user'@'%' IDENTIFIED BY 'SenhaForte123';
```

### Permissões (Grant)
```sql
-- Dar acesso total a UM banco especifico
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'%';

-- Aplicar mudancas
FLUSH PRIVILEGES;
```

---

## 5. REDIS

### Redis Antigo ( < 6.0 )
Só existe UMA senha global definida no `redis.conf` (`requirepass`). Não há usuários.

### Redis Moderno (ACLs - Access Control Lists)
Acesse: `redis-cli` (com a senha de admin/default).

```bash
# Criar usuario 'app_user'
# on > Habilitado
# >Senha... > Define senha
# ~app:* > Só acessa chaves que comessem com 'app:'
# +@all > Pode rodar todos os comandos (Cuidado!)

ACL SETUSER app_user on >SenhaForte123 ~app:* +get +set
```

### Verificar Permissões
```bash
ACL LIST
ACL WHOAMI
```

## 6. VALIDAÇÃO FINAL
- [ ] O usuário consegue logar remotamente?
- [ ] O usuário consegue escrever na tabela/chave permitida?
- [ ] O usuário é BLOQUEADO ao tentar acessar outro banco/tabela (Teste de negação)?
