Recientemente estuve pensando en los pasos para asegurar un servidor de base de datos. La mayoría de nosotros somos conscientes de cómo manejar la seguridad en el lado de la aplicación, aunque un usuario malintencionado puede encontrar su manera de evitar la seguridad de la aplicación y explotar la base de datos.
Escenario
Considere tener una base de datos con los siguientes prefijos de tabla blog_
y website_
(para ejemplos y simplicidad, K.I.S.S.)
Estoy pensando en algo parecido a lo siguiente, pero no estoy seguro de cuál es el adecuado y cuál es una exageración, de ahí el propósito de la pregunta.
Solución 1 : Uno escribe, muchos leen
- Solo tiene 1 usuario en la aplicación con acceso de escritura en la base de datos. En todas las mesas
- Tener más de un usuario con acceso de lectura en la base de datos, pero separados por un conjunto de tablas (para un prefijo específico). Lo que significa que cada usuario de db de RO, respectivamente, lee el acceso solo a su conjunto de tablas.
global_write @ localhost : escribe en todas las tablas de la base de datos
blog_read @ localhost : Lee de las tablas con el prefijo
blog_
website_read @ localhost : Lee de las tablas con el prefijo
website_
Solución 2 : Una lectura y una escritura por tabla
- Tenga un par de usuarios de db por componente de aplicación, uno para leer y otro para escribir
blog_read @ localhost : Lee de las tablas con el prefijo
blog_
blog_write @ localhost : Escribe en las tablas con el prefijo
blog_
website_read @ localhost : Lee de las tablas con el prefijo
website_
website_write @ localhost : Escribe en las tablas con el prefijo
website_
Solución 3 : Solo un par de cuentas es suficiente
- Solo un par de cuentas es responsable de toda la base de datos
global_read @ localhost : Lee todas las tablas
global_write @ localhost : Escribe en todas las tablas
TL; DR
Solución 1 : Uno escribe, muchos leen
Solución 2 : Una lectura y una escritura por tabla
Solución 3 : Solo un par de cuentas es suficiente
- ¿Todos estos son apropiados?
- ¿Cuáles son una sobrecarga?
PS: Lo siento si no etiqueté adecuadamente con access-control