Cuentas proxy para SQL Agent
Normalmente cuando realizamos una tarea por
medio del SQL Server agent esta se ejecuta en el contexto de la cuenta de
servicio del SQL Agent, excepto aquellos que son ejecuciones de código T-SQL.
La cuenta de servicio de SQL Server por recomendaciones
y mejores prácticas deberían de ser cuentas de dominio (sin necesidad de ser domain admin) para poder tener acceso
a repositorios remotos como FileShares, en ocasiones por cuestiones de políticas internas,
seguridad, hardening o simplemente por falta de una ventana de mantenimiento no
se cuenta con la facultad de cambiar las cuentas de servicio y tenemos cuentas
locales, pero estas cuentas no tienen acceso al contexto de dominio y como
ultima acciones también tenemos que en ocasiones la cuenta que tenemos son
cuentas de SQL Server y no de Windows.
Una opción que he visto implementada es poner las credenciales en la cadena de acceso que llama a la línea de comando, esto no es recomendado pues estamos exponiendo las credenciales a cualquiera que pueda ver el job.
Lo que podemos hacer para poder mitigar este
evento es crear un proxy para el agente, el cual se basa en una
credencial, esta nos proporcionará como su nombre lo indica las credenciales de Windows y o Directorio Activa con la cual realizar acciones fuera de Windows local con esto podemos tener acceso al uso de diferentes cuentas para
poder realizar este tipo de acciones que impersonan la cuenta de servicio de
SQL Server Agent con credenciales de dominio o con privilegios más altos.
Las credenciales son siempre credenciales de Windows y son para un uso fuera de SQL Server.
Para poder realizarla hacemos lo siguiente:
En el contexto de security damos clic derecho
sobre "Security" o sobre "Credentials".
Introducimos la identidad de Windows que queremos usar e ingresemos la contraseña y completamos los datos. Recuerden que si usaran esto para backups es necesario que la cuenta de backup tenga normalmente sysadmin y que debe de ser una cuenta de dominio.
Una vez realizados estos pasos nos dirigimos al SQL Agent y lo expandimos. Veremos la carpeta de Proxies, aquí podemos asignar la proxy a solo un tipo de trabajos o a varios.
De la misma manera daremos clic derecho y elegiremos nueva cuenta proxy. Aquí en credential name elegiremos la credencial que queremos que use el proxy.
Luego en que tipo de trabajo estará disponible, en mi caso elegiré los trabajos de tipo línea de comando. Una vez hayamos elegido esto podemos seleccionar principales, en este caso sysadmin para que la proxy trabaje como sysadmin, ya habiendo seleccionado estas opciones aceptaremos y veamos como se aplica en un trabajo.
Ya una vez hecho esto y que tengamos un trabajo del tipo de nuestra elección que sea candidato a usar una cuenta proxy, en los steps podemos elegir si el paso se ejecutará con la cuenta de servicio del SQL Agent o con la cuenta de Proxy que hemos creado, con esto el programa se ejecutará en este contexto.
De la misma manera daremos clic derecho y elegiremos nueva cuenta proxy. Aquí en credential name elegiremos la credencial que queremos que use el proxy.
Luego en que tipo de trabajo estará disponible, en mi caso elegiré los trabajos de tipo línea de comando. Una vez hayamos elegido esto podemos seleccionar principales, en este caso sysadmin para que la proxy trabaje como sysadmin, ya habiendo seleccionado estas opciones aceptaremos y veamos como se aplica en un trabajo.
Ya una vez hecho esto y que tengamos un trabajo del tipo de nuestra elección que sea candidato a usar una cuenta proxy, en los steps podemos elegir si el paso se ejecutará con la cuenta de servicio del SQL Agent o con la cuenta de Proxy que hemos creado, con esto el programa se ejecutará en este contexto.
Comentarios
Publicar un comentario