Conceptes de seguretat
Abans d'entrar en la gestió d'usuaris, privilegis i rols, cal tenir clars els conceptes sobre els quals es construeix tot el control d'accés d'un SGBD.
Model de seguretat: autenticació vs. autorització
La seguretat d'accés als SGBD s'estructura en dues capes ben diferenciades:
flowchart LR
subgraph Autenticació
A[Usuari / Aplicació] -->|Credencials| B{SGBD\nverifica identitat}
B -->|Accés denegat| C[❌ Error de login]
B -->|Identitat verificada| D[Sessió oberta]
end
subgraph Autorització
D --> E{Comprova\nprivilegis}
E -->|Permís concedit| F[✅ Operació executada]
E -->|Permís denegat| G[❌ Accés no autoritzat]
end
Autenticació
L'autenticació respon a la pregunta: qui ets? El SGBD verifica que l'usuari és qui diu ser mitjançant:
- Contrasenya (el mecanisme més habitual)
- Certificats SSL/TLS (autenticació de client per certificat)
- Kerberos / LDAP / Active Directory (autenticació integrada corporativa)
- Fitxers
pg_hba.conf(PostgreSQL) o taules de privilegis d'host (MySQL) - Autenticació del sistema operatiu (peer auth a PostgreSQL, socket local)
Autorització
L'autorització respon a la pregunta: què pots fer? Un cop autenticat, el SGBD comprova quins objectes pot llegir, modificar o administrar l'usuari. Això es gestiona mitjançant:
- Privilegis (GRANT / REVOKE)
- Rols (agrupació de privilegis)
- Vistes (restricció de visibilitat de dades)
- Polítiques de seguretat a nivell de fila (Row-Level Security, RLS)
Principi del mínim privilegi
Principi fonamental de seguretat
Cada usuari o aplicació ha de tenir únicament els privilegis estrictament necessaris per realitzar les seves funcions, i cap més.
Concedir privilegis excessius és una de les causes més comunes de brecxes de seguretat internes. Un empleat malintencionat o un compte compromès amb privilegis d'administrador pot destruir o filtrar tota la base de dades.
Els principis derivats d'aquest model són:
- Compte separat per aplicació: cada aplicació web, ETL o microservei ha de tenir el seu propi compte de base de dades, mai compartir credencials.
- Privilegis de lectura per defecte: si una aplicació només llegeix dades, no necessita INSERT, UPDATE ni DELETE.
- Cap accés directe a taules base des d'aplicacions externes: exposar vistes en lloc de taules.
- Revisió periòdica de privilegis: els comptes antics o inactius s'han de desactivar o eliminar.
- Separació de funcions (SoD): qui administra els servidors no hauria de ser qui administra les dades.
Normativa i estàndards de referència
La correcta gestió del control d'accés a bases de dades no és només bona pràctica tècnica: en molts casos és un requisit legal o contractual:
- RGPD / GDPR (Reglament UE 2016/679): exigeix mesures tècniques i organitzatives per protegir dades personals, incloent control d'accés i registres d'auditoria.
- ISO/IEC 27001: estàndard de gestió de la seguretat de la informació; inclou controls específics sobre accés a sistemes i bases de dades.
- PCI-DSS: reglament de seguretat de pagaments amb targeta; exigeix accés mínim, auditoria i revisió de comptes privilegiats.
- SOC 2 (Type II): auditoria de controls de seguretat per a proveïdors de serveis; inclou revisió de privilegis i logs d'accés.
- LOPDGDD (Espanya): llei orgànica de protecció de dades; complementa el RGPD a nivell estatal.
Per als futurs professionals
En el món laboral real, l'administrador/a de bases de dades sovint ha de demostrar el compliment d'aquestes normatives davant d'auditors externs. Saber configurar i documentar el control d'accés és una habilitat molt valorada.
Eines que farem servir
Al llarg d'aquest bloc treballareu amb les eines de línia de comandes i gràfiques de cada SGBD:
| SGBD | CLI | GUI recomanada |
|---|---|---|
| PostgreSQL | psql |
pgAdmin 4, DBeaver |
| MySQL / MariaDB | mysql |
MySQL Workbench, DBeaver |
| SQL Server | sqlcmd, mssql-cli |
SQL Server Management Studio (SSMS), Azure Data Studio |
| Oracle | sqlplus, sqlcl |
SQL Developer, DBeaver |
Totes les pràctiques s'executen sobre contenidors Docker, de manera que no cal instal·lar res al sistema amfitrió més enllà de Docker Desktop.