Funções de banco de dados fixas do SQL Server Agent

O SQL Server 2005 introduziu as seguintes funções de banco de dados fixas do msdb , que propiciam aos administradores um melhor controle do acesso ao SQL Server Agent. As funções, ordenadas do menor para o maior acesso privilegiado, são:

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

Quando usuários que não são membros de uma dessas funções se conectam ao SQL Server no SQL Server Management Studio, o nó SQL Server Agent no Pesquisador de Objetos não fica visível. O usuário deve ser membro de uma dessas funções de banco de dados fixas ou membro da função de servidor fixo sysadmin para usar o SQL Server Agent.

Permissões das funções de banco de dados fixas do SQL Server Agent

As permissões de função de banco de dados do SQL Server Agent são concêntricas uma às outras: funções mais privilegiadas herdam as permissões de funções menos privilegiadas nos objetos do SQL Server Agent (inclusive alertas, operadores, tarefas, agendas e proxies). Por exemplo, se membros da função de menor privilégio SQLAgentUserRole ganharem acesso ao proxy_A, os membros das funções SQLAgentReaderRole e SQLAgentOperatorRole, automaticamente, terão acesso a esse proxy mesmo que o acesso ao proxy_A não lhes tenha sido explicitamente concedido. Isto pode ter implicações de segurança, discutidas nas seções sobre cada função, mais abaixo.

Permissões de SQLAgentUserRole

SQLAgentUserRole é a menos privilegiada das funções de banco de dados fixas do SQL Server Agent. Ela só tem permissões em operadores, trabalhos locais e agendas de trabalho. Membros de SQLAgentUserRole só têm permissões em trabalhos locais e agendas de trabalho que eles possuem. Não podem usar trabalhos multiservidor (trabalhos de servidor mestre e de destino), nem alterar a propriedade do trabalho para ganhar acesso a trabalhos que ainda não possuem. Membros de SQLAgentUserRole podem exibir uma lista de proxies disponíveis apenas na caixa de diálogo Propriedades da Etapa de Trabalho do SQL Server Management Studio. Somente o nó Trabalhos no Pesquisador de Objetos do SQL Server Management Studio é visível a membros de SQLAgentUserRole.

Observação sobre segurançaObservação sobre segurança

Considere as implicações de segurança antes de conceder acesso de proxy a membros das funçõesdebanco de dados do SQL Server Agent. Membros de SQLAgentReaderRole e SQLAgentOperatorRole tornam-se, automaticamente, membros de SQLAgentUserRole. Isso significa que membros de SQLAgentUserRole e SQLAgentOperatorRole têm acesso a todos os proxies do SQL Server Agent concedidos à função SQLAgentUserRole e podem utilizá-los.

A tabela a seguir resume as permissões de de SQLAgentUserRole em objetos do SQL Server Agent.

Ação

Operadores

Trabalhos locais

(apenas trabalhos possuídos)

Agendas de trabalho

(apenas agendas possuídas)

Proxies

Criar/modificar/excluir

Não

Sim 1

Sim

Não

Exibir lista (enumerar)

Sim 2

Sim

Sim

Sim 3

Habilitar/desabilitar

Não

Sim

Sim

Não se aplica

Exibir propriedades

Não

Sim

Sim

Não

Executar/interromper/iniciar

Não se aplica

Sim

Não se aplica

Não se aplica

Exibir histórico de trabalho

Não se aplica

Sim

Não se aplica

Não se aplica

Excluir histórico de trabalho

Não se aplica

Não 4

Não se aplica

Não se aplica

Anexar/desanexar

Não se aplica

Não se aplica

Sim

Não se aplica

1 Não pode alterar a propriedade do trabalho.

2 Pode obter lista de operadores disponíveis para uso no sp_notify_operator e na caixa de diálogo Propriedades do Trabalho do Management Studio.

3 Lista de proxies disponível apenas na caixa de diálogo Propriedades da Etapa de Trabalho do Management Studio.

4 Membros de SQLAgentUserRole devem ter permissão EXECUTE em sp_purge_jobhistory concedida explicitamente para poderem excluir históricos de trabalhos que possuem. Não podem excluir históricos de nenhum outro trabalho.

Permissões de SQLAgentReaderRole

A funçãoSQLAgentReaderRole detém todas as permissões de SQLAgentUserRole, mais permissões para exibir a lista de trabalhos multiservidor disponíveis, suas propriedades e seus históricos. Os membros desta função também podem exibir a lista de todos os trabalhos e agendas de trabalho disponíveis, bem como suas propriedades, e não apenas aqueles que possuem. Membros de SQLAgentReaderRole não podem alterar a propriedade do trabalho para ganhar acesso a trabalhos que ainda não possuem. Somente o nó Trabalhos no Pesquisador de Objetos do SQL Server Management Studio é visível a membros de SQLAgentReaderRole.

Observação sobre segurançaObservação sobre segurança

Considere as implicações de segurança antes de conceder acesso de proxy a membros das funçõesdebanco de dados do SQL Server Agent. Membros de SQLAgentReaderRole tornam-se, automaticamente, membros de SQLAgentUserRole. Isso significa que membros de SQLAgentReaderRole têm acesso a todos os proxies do SQL Server Agent concedidos à função SQLAgentUserRole e podem utilizá-los.

A tabela a seguir resume as permissões de de SQLAgentReaderRole em objetos do SQL Server Agent.

Ação

Operadores

Trabalhos locais

Trabalhos multiservidor

Agendas de trabalho

Proxies

Criar/modificar/excluir

Não

Sim 1 (apenas trabalhos possuídos)

Não

Sim (somente agendas possuídas)

Não

Exibir lista (enumerar)

Sim 2

Sim

Sim

Sim

Sim 3

Habilitar/desabilitar

Não

Sim (apenas trabalhos possuídos)

Não

Sim (somente agendas possuídas)

Não se aplica

Exibir propriedades

Não

Sim

Sim

Sim

Não

Editar propriedades

Não

Sim (apenas trabalhos possuídos)

Não

Sim (somente agendas possuídas)

Não

Executar/interromper/iniciar

Não se aplica

Sim (apenas trabalhos possuídos)

Não

Não se aplica

Não se aplica

Exibir histórico de trabalho

Não se aplica

Sim

Sim

Não se aplica

Não se aplica

Excluir histórico de trabalho

Não se aplica

Não 4

Não

Não se aplica

Não se aplica

Anexar/desanexar

Não se aplica

Não se aplica

Não se aplica

Sim (somente agendas possuídas)

Não se aplica

1 Não pode alterar a propriedade do trabalho.

2 Pode obter lista de operadores disponíveis para uso no sp_notify_operator e na caixa de diálogo Propriedades do Trabalho do Management Studio.

3 Lista de proxies disponível apenas na caixa de diálogo Propriedades da Etapa de Trabalho do Management Studio.

4 Membros de SQLAgentReaderRole devem ter permissão EXECUTE em sp_purge_jobhistory concedida explicitamente para poderem excluir históricos de trabalhos que possuem. Não podem excluir históricos de nenhum outro trabalho.

Permissões de SQLAgentOperatorRole

A função SQLAgentOperatorRole é a mais privilegiada das funções de banco de dados fixas do SQL Server Agent. Detém todas as permissões de SQLAgentUserRole e SQLAgentReaderRole. Os membros desta função também podem exibir propriedades de operadores e proxies, bem como enumerar os proxies e alertas disponíveis no servidor.

Membros de SQLAgentOperatorRole têm permissões adicionais em trabalhos locais e agendas. Podem executar, interromper ou iniciar todos os trabalhos locais, bem como excluir o histórico de qualquer trabalho local no servidor. Também podem habilitar ou desabilitar todos os trabalhos locais e agendas no servidor. Para habilitar ou desabilitar trabalhos locais ou agendas, os membros desta função devem usar os procedimentos armazenados sp_update_job e sp_update_schedule. Apenas os parâmetros que especificam o nome do trabalho ou agenda ou o identificador e o parâmetro @enabled podem ser especificados por membros de SQLAgentOperatorRole. Se especificarem algum outro parâmetro, a execução desses procedimentos armazenados falhará. Membros de SQLAgentOperatorRole não podem alterar a propriedade do trabalho para ganhar acesso a trabalhos que ainda não possuem.

Os nós Trabalhos, Alertas, Operadores e Proxies no Pesquisador de Objetos do SQL Server Management Studio são visíveis a membros de SQLAgentOperatorRole. Só o nó Logs de Erros não é visível a membros desta função.

Observação sobre segurançaObservação sobre segurança

Considere as implicações de segurança antes de conceder acesso de proxy a membros das funçõesdebanco de dados do SQL Server Agent. Membros de SQLAgentOperatorRole tornam-se, automaticamente, membros de SQLAgentUserRole e SQLAgentReaderRole. Isso significa que membros de SQLAgentOperatorRole têm acesso a todos os proxies do SQL Server Agent concedidos às funções SQLAgentUserRole ou SQLAgentReaderRole e podem utilizá-los.

A tabela a seguir resume as permissões de SQLAgentOperatorRole em objetos do SQL Server Agent.

Ação

Alertas

Operadores

Trabalhos locais

Trabalhos multiservidor

Agendas de trabalho

Proxies

Criar/modificar/excluir

Não

Não

Sim 2 (apenas trabalhos possuídos)

Não

Sim (somente agendas possuídas)

Não

Exibir lista (enumerar)

Sim

Sim 1

Sim

Sim

Sim

Sim

Habilitar/desabilitar

Não

Não

Sim 3

Não

Sim 4

Não se aplica

Exibir propriedades

Sim

Sim

Sim

Sim

Sim

Sim

Editar propriedades

Não

Não

Sim (apenas trabalhos possuídos)

Não

Sim (somente agendas possuídas)

Não

Executar/interromper/iniciar

Não se aplica

Não se aplica

Sim

Não

Não se aplica

Não se aplica

Exibir histórico de trabalho

Não se aplica

Não se aplica

Sim

Sim

Não se aplica

Não se aplica

Excluir histórico de trabalho

Não se aplica

Não se aplica

Sim

Não

Não se aplica

Não se aplica

Anexar/desanexar

Não se aplica

Não se aplica

Não se aplica

Não se aplica

Sim (somente agendas possuídas)

Não se aplica

1 Pode obter lista de operadores disponíveis para uso no sp_notify_operator e na caixa de diálogo Propriedades do Trabalho do Management Studio.

2 Não pode alterar a propriedade do trabalho.

3 Membros de SQLAgentOperatorRole podem habilitar ou desabilitar trabalhos locais que não possuem, por meio do procedimento armazenado sp_update_job e especificando valores para os parâmetros @enabled e @job_id (ou @job_name). Se um membro desta função especificar algum outro parâmetro para esse procedimento armazenado, a execução do procedimento falhará.

4 Membros de SQLAgentOperatorRole podem habilitar ou desabilitar agendas que não possuem, por meio do procedimento armazenado sp_update_schedule e especificando valores para os parâmetros @enabled e @schedule_id (ou @name). Se um membro desta função especificar algum outro parâmetro para esse procedimento armazenado, a execução do procedimento falhará.

Atribuindo várias funções aos usuários

Membros da função de servidor fixa sysadmin têm acesso a toda a funcionalidade do SQL Server Agent. Se um usuário não for membro da função sysadmin, mas for membro de mais de uma função de banco de dados fixa do SQL Server Agent, é importante ter em mente o modelo de permissões concêntricas dessas funções. Como funções mais privilegiadas sempre detêm todas as permissões das funções menos privilegiadas, o usuário que for membro de mais de uma função terá, automaticamente, as permissões associadas à função mais privilegiada de que é membro.