En una reciente entrevista, me hicieron una pregunta interesante sobre la implementación de estándares de seguridad en SQL Server. El escenario presentado fue que un equipo de desarrollo solicitó un Id de SQL Server con permisos restringidos para su aplicación, argumentando que era necesario porque así lo probaron y ahora estaban listos para pasar a producción. Mi respuesta a esta situación es simple: si esperas hasta el paso a producción para restringir los permisos, ya es demasiado tarde. Las medidas de seguridad deben implementarse desde el principio, comenzando en la fase de desarrollo.
Permíteme compartir un ejemplo para ilustrar la importancia de la implementación temprana de la seguridad. Teníamos un equipo que asignó la cuenta de servicio de su nueva aplicación al rol db_ddladmin. Esto puede no parecer un gran problema en un entorno de desarrollo, e incluso pasó desapercibido durante las pruebas. Sin embargo, cuando pasaron a producción, encontraron problemas al truncar tablas. Truncate requiere el permiso de alterar la tabla, que está incluido en db_ddladmin. Conceder este permiso a una aplicación fuera del rol db_ddladmin no es una práctica común, ya que permite a la aplicación agregar o eliminar columnas, lo cual generalmente no es deseado. Afortunadamente, solucionar este problema fue relativamente sencillo.
Por otro lado, teníamos otro equipo que tenía su aplicación creando y eliminando tablas por todas partes, en lugar de usar tablas temporales. Esto presentó un desafío más complejo para abordar. La lección clave de estos ejemplos es que si quieres que tu aplicación cumpla con estándares de seguridad específicos cuando llegue a producción, debes asegurarte de que se desarrolle y pruebe teniendo en cuenta esos permisos. Esto significa implementar medidas de seguridad en tus entornos de desarrollo y prueba.
Vale la pena mencionar que esta es una de las razones por las que no otorgo permisos de sysadmin o db_owner, incluso en un entorno de desarrollo. Al limitar los permisos desde el principio, puedes evitar posibles vulnerabilidades de seguridad y asegurarte de que tu aplicación se construya teniendo en cuenta la seguridad.
Recuerda, la seguridad nunca debe ser una idea tardía. Debe ser una parte integral del proceso de desarrollo, desde las etapas más tempranas. Al implementar estándares de seguridad desde el principio, puedes mitigar riesgos y proteger tu entorno de SQL Server.