La recepcionista que veía historiales
En una clínica dental de Bilbao, todo el personal entra con la misma cuenta de administrador. Es cómodo: nadie pide permisos.
Un día, alguien de recepción abre por curiosidad el historial médico de un vecino. La clínica tiene que dar explicaciones a sus pacientes.
El problema no fue la persona. Fue que el sistema le dejaba ver todo.
Al final de esta lección
Nota
Puedo dar a cada persona solo el acceso que necesita.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Autenticación | comprobar quién eres | |
| Autorización | decidir qué puedes hacer | |
| Permiso | una acción que se te deja hacer | ver_citas |
| Rol | un grupo de permisos para un puesto | |
| Mínimo privilegio | solo los permisos que el trabajo necesita |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Entrar y poder hacer algo son dos preguntas
La autenticación responde a «¿quién eres?». Es la contraseña, el código del móvil o la huella.
La autorización responde a «¿qué puedes hacer?». Llega después, en cada acción.
Que una persona haya entrado no significa que pueda hacerlo todo. El sistema tiene que preguntar otra vez cada vez que se pide algo.
Un error frecuente
Advertencia
Mucha gente cree que esconder un botón basta para quitar un permiso. Quien conozca la dirección puede pedir la acción sin pulsar nada. El servidor debe comprobar el permiso en cada petición, aunque la pantalla no muestre el botón.
Cada uno recibe solo lo que necesita
El mínimo privilegio dice: da a cada persona solo los permisos de su trabajo.
Si una cuenta con pocos permisos cae en malas manos, el daño es pequeño. Si cae una cuenta de administrador, el daño es total.
Para no dar permisos uno a uno, se usan roles. Un rol agrupa los permisos de un puesto. Cada persona recibe un rol.
Ejemplo: los roles de la clínica
| Rol | Ver citas | Ver historial | Editar historial | Facturas |
|---|---|---|---|---|
| Recepción | Sí | No | No | No |
| Dentista | Sí | Sí | Sí | No |
| Contabilidad | No | No | No | Sí |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Prueba: preguntar un permiso
# Qué puede hacer cada rol en la clínica
permissions = {
"recepcion": ["ver_citas", "crear_citas"],
"dentista": ["ver_citas", "ver_historial", "editar_historial"],
"contabilidad": ["ver_facturas", "crear_facturas"],
}
# Qué rol tiene cada persona
staff = {"carmen": "recepcion", "javier": "dentista", "elena": "contabilidad"}
person = "carmen"
action = "ver_historial"
role = staff[person]
if action in permissions[role]:
print(person, "puede", action)
else:
print(person, "NO puede", action)
# Prueba con javier y luego con elena.
En un puesto real
Consejo
Cuando alguien cambia de puesto o se va, hay que quitarle los permisos ese mismo día. Revisar las cuentas cada pocos meses es una tarea habitual en soporte y sistemas.