[Administração] Permissões para manter Jobs do SQL Server Agent


Recentemente um cliente solicitou apoio para limitar as ações dos usuários que podem visualizar os jobs do SQL Server Agent. O objetivo do cliente era permitir que esses usuários somente pudessem visualizar, iniciar ou parar os jobs de uma instância.
O SQL Server Agent possui 3 database roles no banco MSDB. Segue um resumo dos principais acessos de cada uma delas:

  • SQLAgentUserRole: permite criar/modificar/apagar/visualizar/executar/parar/habilitar/desabilitar os jobs que o usuário é owner;
  • SQLAgentReaderRole: permite criar/modificar/apagar/executar/parar/habilitar/desabilitar jobs que o usuário é owner. Permite também a visualização dos jobs de outros owners, porém não é possível editar/executar/parar/alterar schedule dos jobs de outros owners;
  • SQLAgentOperatorRole: permite criar/modificar/apagar/executar/parar/habilitar/desabilitar jobs que o usuário é owner; além disso permite executar/parar/habilitar/desabilitar/alterar schedule dos jobs de outros owners.

Para ver todas os detalhes e permissões de cada uma das database role citadas, consulte a documentação:
https://docs.microsoft.com/en-us/sql/ssms/agent/sql-server-agent-fixed-database-roles

No cenário do cliente a role SQLAgentOperatorRole era a mais adequada; porém o cliente não queria que os usuários desta role tivessem permissão para executar qualquer outra operação (por exemplo: habilitar/desabilitar/criar/etc).

A solução mais simples nesse cenário foi manter o usuário na role SQLAgentOperatorRole e negar a permissão de execução nas procedures sp_update_job, sp_update_schedule e sp_purge_jobhistory  no banco MSDB; dessa forma o usuário continuou com as permissões necessárias para acessar o Job Activity Monitor, visualizando o status de qualquer job da instância e se preciso iniciar/parar a execução dos jobs, porém, sem a possibilidade de habilitar/desabilitar/alterar schedule/etc.

Silas

============================

The code and techniques described in this blog are presented to the reader ‘as is’, without any warranty, whether express or implied, of its accuracy, completeness, fitness for a particular purpose, title or non-infringement, and none of the third-party products or information mentioned in the work are authored, recommended, supported or guaranteed by any of the authors or Microsoft. Further, the authors shall not be liable for any damages you may sustain by using this information, whether direct, indirect, special, incidental or consequential, even if it has been advised of the possibility of such damages. Your use of the information contained in these pages, is at your sole risk.

Comments (0)

Skip to main content