En la nueva versión de SQL Server, nombre en clave Denali, se incluyen gran cantidad de novedades. Dentro de todas estas novedades, en la parte de Seguridad tenemos una nueva funcionalidad que son los roles de servidor definidos por el usuario. Hasta la última versión del producto, SQL Server 2008R2, no era posible la creación de nuestros propios roles de servidor. Hasta ahora solamente disponíamos de una serie de roles fijos que venían ya definidos con el producto, dichos roles son:

  • Bulkadmin
  • Dbcreator
  • DiskAdmin
  • Processadmin
  • Securityadmin
  • Serveradmin
  • SetupAdmin
  • Sysadmin

Para más información acerca de los roles fijos de servidor consultar aquí: Roles Fijos de Servidor

Ahora ya con SQL Server Denali se aumenta la flexibilidad en cuanto a la administración de la seguridad con la opción de creación de roles de servidor y la combinación de roles para cumplir con la finalidad, que no es ni más ni menos que la de facilitar la administración de permisos.

Creando mi rol de servidor

Vamos a ver cómo crear roles de servidor con los nuevos comandos DDL (Data Definition Language). Para ello vamos a proponer el siguiente escenario:

Supongamos que una empresa externa viene a nuestra organización a realizar una auditoría. Para ello necesita un Login y un usuario de base de datos con todos los permisos necesarios. En este caso vamos a suponer que vienen a revisar la seguridad y en un momento dado necesitan crear una base de datos donde almacenar información de la auditoria.

¿Cómo lo hacíamos hasta ahora?

Creamos un Login y le damos el rol de securityAdmin, el cual permite la administración de la seguridad y además habría que añadir el permiso a mano e individualmente de creación de base de datos.

--Creo Login de auditoria
create login login_auditoria with password='Pa$$w0rd'
go

--Le doy el rol de administrador de seguridad
sp_addsrvrolemember 'login_auditoria','securityadmin'
go

Si intentamos crear la base de datos con este nuevo inicio de sesión que hemos creado obtenemos el siguiente mensaje de error:

SQL Server Denali: Roles de Servidor definidos por el usuario

Para otorgar este permiso extra al rol fijo de servidor securityadmin tenemos que hacerlo a mano mediante el comando GRANT.

--permiso de creacion de base de datos
grant create any database to [login_auditoria]
go

Ahora ya sí que somos capaces de crear nuestra base de datos. Si siguiéramos necesitando permisos habría que seguir otorgándolos mediante comandos GRANT, y si además tuviéramos más usuarios que necesitasen los mismos permisos habría que ir repitiendo los comandos anteriores por cada uno de ellos. Con lo cual en muchos de los casos lo que se hace para simplificar esta administración de la seguridad es otorgar el rol sysadmin, lo cual es una mala práctica. De este modo evitamos complicaciones al administrar pero abrimos un agujero de seguridad, ya que estos usuarios con rol sysadmin no tienen restricción alguna y pueden realizar todo tipos de operaciones. Además tampoco estaríamos Siguiendo el principio del menor privilegio, que consiste básicamente en otorgar los permisos estrictamente necesarios a cada usuario.

¿Cómo lo hacemos con Denali?

Para simplificar esta administración lo que podemos hacer ahora con Denali es generalizar permisos y crear roles personalizados. A continuación vemos cómo podemos crear los roles:

--Creamos el rol de servidor
create server role [Auditor]
go

--Ahora en Denali comandos DDL
--hacemos que nuestro rol cumpla el rol de securityadmin
alter server role [securityadmin]
add member [Auditor]
go

--permiso de creacion de base de datos
grant create any database to [login_auditoria]
go

--Ahora en Denali comandos DDL
--damos rol de Auditor a login_auditoria
alter server role [Auditor]
add member [login_auditoria]
go

Ahora si tuviésemos más usuarios externos que requieran estos mismos permisos podemos otorgarles el rol de [Auditor] y automáticamente dichos usuarios dispondrían de los mismos privilegios.

Como podemos observar, Denali también incorpora nuevos comandos DDL que sustituyen a los procedimientos sp_addsrvrolemember y adicionalmente, aunque no aparece en el ejemplo, también incorpora comandos DDL para sustituir el procedimiento sp_addrolemember a nivel de roles de base de datos.

Conclusión

Como hemos visto anteriormente, esta nueva versión de Denali aporta mejoras en la administración de la seguridad. Ahora con esta nueva mejora vemos que el modelo de seguridad se ha hecho un poco más flexible para permitirnos a nosotros como administradores adaptar la seguridad de nuestros sistemas y poder seguir así las buenas prácticas en seguridad como el principio del menor privilegio de una manera cada vez más sencilla.

 

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like