least privilege
concedi solo i permessi necessari. separa utenti di lettura da utenti di scrittura.
ruoli e grant
create role analyst;
grant select on all tables in schema public to analyst;
create user report_user password '***';
grant analyst to report_user;
permessi su schemi
grant usage on schema analytics to analyst;
revoke create on schema public from public;
row level security
limita la visibilità delle righe in base all'utente applicativo (supportato da postgres).
usa rls per multi-tenant e dati sensibili.
audit
- logga accessi e query critiche.
- ruota i log e archiviali.
- monitoraggio alert per pattern anomali.
checklist finale
- ruoli separati per lettura e scrittura.
- permessi minimi per servizi e bot.
- audit log attivo con retention definita.
- review periodiche delle policy.
panoramica
In questo capitolo su sicurezza e ruoli, proteggi il database con permessi minimi e auditing. L'obiettivo è trasformare i concetti in micro-pattern riutilizzabili con esempi piccoli e verificabili.
Lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali (performance, leggibilità, manutenzione).
badge: security roles
obiettivi
- capire e applicare least privilege in uno scenario reale
- capire e applicare ruoli e grant in uno scenario reale
- capire e applicare permessi su schemi in uno scenario reale
- capire e applicare row level security in uno scenario reale
scheda rapida
SELECT categoria, COUNT(*) AS tot
FROM prodotti
WHERE attivo = TRUE
GROUP BY categoria
ORDER BY tot DESC
LIMIT 5;
Adatta questo scheletro agli esempi della lezione e sostituisci i dati con il tuo dominio.
tips
- principio del minimo privilegio
- separa lettura e scrittura con ruoli distinti
- revoca accessi inutili periodicamente
- audita permessi e ownership
tip: I permessi sono codice: versionali e tracciali.
mini progetto
Definisci ruoli per app, analyst e admin con grant mirati.
- crea ruoli con scope chiaro
- assegna grant su tabelle o view
- testa accessi con utenti finti
- documenta policy e responsabilità
output atteso: uno script o query ripetibile con risultati verificabili.