Otorgar / Denegar permiso para uso de Agente SQL SERVER a usuario SQL SERVER

El uso del servicio Agente SQL SERVER, es el servicio que nos provee la base de datos para el manejo de JOBS, Operadores, Alertas, etc, es por esta situación que es un tema de seguridad delicado dejar abierto el uso de este servicio. Es de vital importancia, dentro de la seguridad de base de Datos, que el uso del Agente sea usado solo por los administradores de Base de Datos (DBA's) o por usuarios avanzados, para eso, haremos uso de la creación de usuarios y la asignación de Roles.



Vamos a crear primeramente un usuario Administrador, no es recomendable el uso del usuario sa, lo correcto será crear usuarios para los distintos perfiles, pues bien, vamos a crear el usuario DBA, que será un usuario cuyo rol será sysadmin, esto significa que tendrá privilegios para hacer cualquier cosa, algo similar al sa.

Podemos crearlo de manera gráfica o podemos crearlo por script. Empecemos de manera gráfica.

Manera gráfica

Ingresaremos a la carpeta Seguridad, subcarpeta Logins, y con el botón derecho del mouse, ingresaremos el nombre del login que vamos a crear, en este caso, deshabilité la política de contraseñas.


Ahora nos iremos al menú del lado izquierdo a la opción que dice Server Roles, y le asignaremos el rol sysadmin, que como les mencionaba, es para tener privilegios de realizar cualquier cosa.


Presionamos en el botón OK, para guardar el nuevo login.

Transact SQL

USE [master]
GO
CREATE LOGIN [DBA] WITH PASSWORD=N'S1st3mas',
DEFAULT_DATABASE=[master],
CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO

ALTER SERVER ROLE [sysadmin] ADD MEMBER [DBA]
GO

Mediante este script, creamos el usuario DBA, con el password S1st3mas.

Después de crear el login, ingresaremos con él, para comprobar que efectivamente, el usuario puede ver y administrar los servicios que trae el Agente SQL SERVER

Modo Gráfico




Ahora vamos a crear un usuario sin privilegios de uso del Agente SQL SERVER siguiendo los mismos pasos que los anteriormente mencionados. 


Únicamente en la opción User Mapping, seleccionaremos la base de datos master para que tenga el privilegio de conectarse a la instancia.

Si lo queremos hacer con TransactSQL, el código sería de la siguiente manera

Transact SQL

USE [master]
GO
CREATE LOGIN [sql_user] WITH PASSWORD=N'Us3r',
DEFAULT_DATABASE=[master],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO
USE [master]
GO
CREATE USER [sql_user] FOR LOGIN [sql_user]
GO

Ahora nos conectaremos a la instancia, utilizando las credenciales del usuario sql_user


Como vemos, no aparece el Agente SQL SERVER, y por lo tanto, este usuario no tendrá los privilegios para editar o crear jobs, alertas, operadores, etc. 

Pero ahora vamos a darle permiso a este usuario para utilizar el agente, y lo haremos de la forma gráfica y de la forma script. 

Debemos mencionar que los jobs, operadores, alertas, etc, se encuentran almacenadas en la base de datos msdb, por lo cual, tendremos que asignar permisos al usuario a esa base de datos.

Modo gráfico


En la opción User Mapping, seleccionamos la base de datos msdb, y le asignamos el rol SQLAgentOperatorRole, hay tres roles distintos, el Operator, Reader y User, depende el nivel de privilegios, que le queramos otorgar, en este caso, queremos que sea un operador, con todos los privilegios.

Damos clic en Aceptar para guardar los cambios

Transact

USE [msdb]
GO
CREATE USER [sql_user] FOR LOGIN [sql_user]
GO
USE [msdb]
GO
ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [sql_user]
GO

Ahora nos vamos a loguear nuevamente con el usuario user_sql, y comprobaremos que ya puede hacer uso de las funciones del Agente SQL



Como vemos, el usuario ya tiene privilegios para utilizar el agente

Hasta aquí el post queridos lectores, espero que haya sido de su agrado y utilidad, si tienen alguna pregunta no duden en plantearla, espero compartan, comenten, den +1 o clic a algún anuncio que les interese.

Saludos



1 comentario:

  1. Hola gracias por esta respuesta informática me sirvió!

    De casualidadtendrás este mismo artículo pero con permisos para SQL 2000?

    Muchas gracias!

    ResponderBorrar

Featured Post

Como saber la versión de SQL que tengo

 Buenas tardes queridos lectores, el día de hoy les traigo un post muy básico, pero útil en determinadas circunstancias, cuando queremos sab...