El valor de la gestión de datos

Beneficios de seguridad al crear procedimientos almacenados mysql

Posted on Fri, Feb 2, 2018

Crear procedimientos almacenados mysql implica crear un conjunto de instrucciones SQL, asignarles un nombre y almacenarlas en el mysql como un grupo. De esta forma puede ser reutilizado y compartido por múltiples programas, obteniéndose además algunas ventajas importantes.

crear_procedimiento_almacenado_mysql.jpg

Créditos fotográficos: PeterPal

Una de las razones más beneficiosas para crear procedimientos almacenados mysql es la capa adicional de seguridad que se coloca en la base de datos para la aplicación que solicita datos. Si la cuenta de usuario creada para la aplicación o el sitio web se configura únicamente con permisos de ejecución, la cuenta de usuario no podrá acceder directamente a las tablas que tenemos por debajo.

 

¿Están seguros tus datos? Descárgate este ebook gratuito

 

Esto ayuda a evitar que un hacker acceda directamente a las tablas de la base de datos. El riesgo en el que se incurre si un pirata informático utiliza esa cuenta de usuario que ejecuta un procedimiento almacenado es mucho menor que con una cuenta de usuario que tenga permisos plenos de inserción, actualización y eliminación directamente en las tablas.

 

Control de acceso al crear procedimientos almacenados mysql

En la práctica, al crear procedimientos almacenados mysql es posible usar algunas reglas que facilitan el control de las cuentas que puede especificar un usuario en un atributo DEFINER de objeto. Se trata de las siguientes:

  • Que solo sea posible especificar un valor de DEFINER que no sea su propia cuenta, si se cuenta con el privilegio SUPER.
  • Que el único valor de usuario legal para todos los que no tengan el privilegio SUPER sea su propia cuenta, ya se haya especificado literalmente o mediante el uso de CURRENT_USER, haciendo que resulte imposible configurar el definidor para alguna otra cuenta.

Otra de las ventajas de crear procedimientos almacenados mysql es que se puede minimizar el riesgo potencial del programa almacenado y ver la creación y uso. Para ello, basta con seguir estas pautas:

  • Emplear INVENTARIO DE SEGURIDAD DE SQL en la definición del objeto cuando sea posible para una rutina o vista almacenada, ya que de este modo solo podrá ser utilizado por usuarios con permisos apropiados para las operaciones realizadas por el objeto.
  • Especificar un atributo DEFINER explícito al crear programas o vistas almacenadas en el contexto del definidor, mientras se usa una cuenta que tiene el privilegio SUPER, ya que ese atributo hará referencia a una cuenta que solo posee los privilegios requeridos para las operaciones realizadas por el objeto. Únicamente en los casos en que sea absolutamente necesario se podría especificar una cuenta DEFINER altamente privilegiada.
  • Evitar que los usuarios especifiquen cuentas DEFINER altamente privilegiadas, algo que, como administradores se puede conseguir al crear procedimientos almacenados mysql, siempre que no se les otorgue el privilegio SUPER.
  • Describir los objetos del contexto del DEFINER teniendo en cuenta que pueden tener acceso a los datos para los cuales el usuario que realiza la invocación no tiene privilegios. En algunos casos, puede evitarse la referencia a estos objetos si no se conceden privilegios particulares a usuarios no autorizados. Para ello, sería suficiente con establecer que las funciones o procedimientos almacenados no puedan ser referenciados por usuarios sin el privilegio EXECUTE y que usuarios son el privilegio adecuado nunca puedan hacer referencia a una vista (como sería el caso, por ejemplo, de SELECCIONAR para seleccionar de ella o INSERTAR para insertarla).

No obstante, no hay que olvidar que este tipo de medidas de seguridad al crear procedimientos almacenados mysql no pueden aplicarse a triggers y eventos, puesto que no tienen característica de SEGURIDAD de SQL y siempre se ejecutan en un contexto definidor, por lo que no hay un usuario que haga referencia a ellos directamente.

 

Seguridad de Datos

 

Topics: Data Security