Una noche, dieciocho mil euros
Una empresa de reformas de Zaragoza tenía un programa que subía presupuestos a la nube. Usaba una clave con todos los permisos de la cuenta.
Un día esa clave acabó publicada por error junto al código. Esa misma noche alguien la encontró y encendió cincuenta máquinas enormes. Por la mañana, la factura pasaba de 18.000 euros.
Al final de esta lección
Nota
Puedo dar a un servicio solo los permisos que necesita y mantener bajo el coste.
Palabras clave
| Palabra | Qué significa |
|---|---|
| Identidad | quién pide algo: una persona o un servicio |
| Permiso | acción concreta que una identidad puede hacer |
| Política | lista de permisos escrita para una identidad |
| Mínimo privilegio | dar solo los permisos imprescindibles |
| Rol | conjunto de permisos que un servicio asume sin guardar claves |
| Alerta de presupuesto | aviso cuando el gasto pasa de una cifra |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Da solo los permisos que hacen falta
En la nube, cada petición la hace una identidad: tú, un compañero o un programa. Una política dice qué permisos tiene: qué acción puede hacer y sobre qué recurso.
La regla de oro es el mínimo privilegio. El programa de presupuestos solo necesita leer y escribir en un bucket. Si le das solo eso, una clave robada no sirve para encender máquinas ni para leer nóminas.
Prueba: una política en Python
# Una política es una lista de reglas: qué acción, sobre qué recurso.
politica = [
{"accion": "leer", "recurso": "bucket-presupuestos"},
{"accion": "escribir", "recurso": "bucket-presupuestos"},
]
def permitido(politica, accion, recurso):
for regla in politica:
if regla["accion"] == accion and regla["recurso"] == recurso:
return True
# Lo que no está permitido de forma expresa, se deniega
return False
print(permitido(politica, "leer", "bucket-presupuestos"))
print(permitido(politica, "borrar", "bucket-presupuestos"))
print(permitido(politica, "leer", "base-nominas"))
# Quita la regla de escribir. ¿Qué cambia si el servicio solo lee?
Un rol evita guardar claves
Una clave escrita en el código es fácil de perder: se copia, se envía por correo o se publica sin querer.
Por eso, un servicio que corre en la nube debe usar un rol. El proveedor le da permisos temporales que caducan solos, y no hay ninguna clave fija que robar. Las personas entran con su propio usuario y un segundo factor, nunca con una clave compartida.
Un error frecuente
Advertencia
Mucha gente cree que dar todos los permisos ahorra problemas, porque así nada falla. Es al revés. Si algo falla por falta de un permiso, añades ese permiso y nada más. Un permiso de más no se nota hasta el día en que alguien lo usa contra ti.
Vigila la factura antes de que llegue
La factura de la nube no llega una vez al año: crece cada hora. Tres hábitos la mantienen baja.
Primero, pon una alerta de presupuesto: un correo cuando el mes pasa de, por ejemplo, 200 euros. Segundo, apaga lo que no se usa, como los servidores de pruebas por la noche. Tercero, pon una etiqueta a cada recurso con su proyecto, para saber quién gasta qué.
Ejemplo: servidor de pruebas a 0,20 euros
| Horario | Horas al mes | Coste al mes |
|---|---|---|
| Siempre encendido, 30 días | 720 | 144 euros |
| 10 horas, 22 días laborables | 220 | 44 euros |
| Ahorro | 500 | 100 euros |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.