Acompanhe minha pergunta " Para que serve o proprietário do trabalho SqlServerAgent? "
Basicamente, estou tentando entender como criar um login de usuário com menos privilégios para trabalhos SQLServerAgent de manutenção de CRUD com base nos planos de manutenção do SQL Server.
Acabei de verificar no SQL Server 2008 R2 que SQLAgentOperatorRole, que é a função mais privilegiada entre as funções de banco de dados fixas do SQL Server Agent , não tem acesso (nem mesmo para visualizar):
- a
Management\Maintenance Plans
- (bem como) para
Management\Data Collection
,Management\Resource Governor
)
- (bem como) para
o que o torna silenciosamente inútil para manutenção de jobs SQLServerAgent baseados em planos de manutenção (meu caso) ...
Então, como criar um usuário que mantenha e execute tarefas do SQLServer Agent, bem como planos de manutenção de gerenciamento de CRUD?
Além disso, gostaria de entender melhor a frase do msdn " Give Others Ownership of a Job ":
Atribuir um trabalho a outro login não garante que o novo proprietário tenha permissão suficiente para executar o trabalho com sucesso
O que garante que o usuário com função não sysadmin como proprietário de um trabalho tenha permissões suficientes para executar um trabalho do SQL Server Agent com êxito?
Relativamente aos planos de manutenção não existe implementação de CRUD. Conforme declarado no BOL aqui :
Você pode conseguir configurar o controle granular concedendo acesso aos procedimentos armazenados usados para criar planos de manutenção (na parte inferior do artigo que vinculei acima):
Eu repensaria a necessidade comercial disso antes de ir para esse nível. Você deve entender que os objetos usados e as permissões necessárias para os planos de manutenção podem mudar entre a versão principal ou até mesmo service packs e atualizações cumulativas.
Se houver uma necessidade comercial extrema para isso, provavelmente criaria uma conta dedicada estritamente para isso e não concederia as permissões à conta de usuário do dia-a-dia. Então, espero estar suportando apenas Enterprise Editions e usar o SQL Server Audit para rastrear o uso dessa conta.
Embora você também precise confiar o nível de permissões ao indivíduo a quem está fornecendo, seja uma aula de treinamento antes de fornecer as informações da conta ou até mesmo fazer com que seu departamento de RH crie uma política de segurança para acesso privilegiado. Se eu não me sentir confortável em dar acesso privilegiado a alguém, pode ter certeza de que isso será expresso (por e-mail) à gerência, permitindo que eles tomem a decisão final (por e-mail). Eu salvaria aquele pequeno e-mail como documentação sobre por que forneci o acesso (para fins de auditoria).
Nos planos de manutenção
Normalmente, deixo minha manutenção ser executada como a conta do agente e normalmente as mantenho de propriedade da SA, portanto, quando saio ou me torno um consultor, as coisas ainda funcionam. Quando ajudo um cliente na manutenção/gestão faço o mesmo. Você vê que, para executar a manutenção, precisa de mais do que apenas permissões CRUD. Você está fazendo backups (operador de backup), reconstrução de índice e atualizações de estatísticas (DDL Admin, Alter ou DBO), reciclagens de log de erro potencialmente (não tenho certeza aqui, talvez setupadmin, definitivamente SA), etc.
Para manutenção, é um processo que você possui, configura e confia. Como uma ferramenta de monitoramento, não vejo problema em executar a manutenção como administrador do sistema.
Também sugiro que você verifique a solução de manutenção de Ola Hallengren . Os planos de manutenção são bons e servem a um propósito, mas ele trabalhou muito em sua solução de manutenção e funcionou bem.
Sobre:
Acredito que o que o autor da documentação está abordando é provavelmente o problema com o qual sua primeira pergunta trata. Se você tornar "Domain\JoeBlow" o proprietário do trabalho e esse usuário tiver o privilégio mínimo correto para, digamos, um usuário de contabilidade, esse login certamente não terá permissões suficientes para fazer o que o trabalho precisa - o trabalho falha nesse caso.