none
Permissão - Control Server RRS feed

  • Pergunta

  • Galera, Boa Tarde !

    Irei explicar o problema:

    Estou criando um procedure e preciso utilizar o XP_cmdshell, para mover um arquivo de uma pasta para outra. O problema é que o usuário que executará essa procedure, não faz parte da permissão de servidor "SYSADMIN" e consequemente não conseguirá concluir a execução da procedure com exito. Oque eu fiz:

    1. Concedi permissão "Control Server": GRANT CONTROL SERVER TO [dom\login]

    2. Criei a credencial :  EXEC sp_xp_cmdshell_proxy_account  'dom\login','senha'

    Ai funcionou, mas essa permissão(Control Server) e muito parecido com o SysAdmin, então para minimizar gostaria que o Login enxergasse somente o base de dados que executará a procedure. Existe essa possibilidade, já que a permissão control server possui essa flexibilidade ?

    quinta-feira, 28 de novembro de 2013 19:58

Respostas

  • Olá Getúlio, complementando a fala de Galvão, se seu objetivo não é de conceder privilégios além de apenas executar uma simples stored procedure, não existe a necessidade de usar a permissão CONTROL SERVER já que a mesma está a nível de instância e não de Database. Sugiro que siga os seguintes passos abaixo:

    1 - criar o login no SQL Server usando uma conta criada no AD setando pra Base que precisa de acesso;

    2 - criar um credencial no servidor;

    3 - criar um proxies no serviço SQL Agent usando a credencial criada anteriormente no Operating System (cmdExec);

    4 - criar uma ROLE (grp_StoredProcedure) e dar as permissões de EXECUTE pra Stored Procedure;

    5 - adicionar o login criado como menbro desta ROLE (grp_StoredProcedure);

    6 - solicitar do administrador da rede adicionar a conta do AD usada para criar o login no SQL Server nas pastas que participaram da operação (Permissão de Read/Writer).

    Desta forma terá a certeza que o login irá executar apenas o que deve, ou seja, EXEC sp_suaprocedure em seu ambiente de dados. Acredito que essa dica lhe ajude no seu propósito.

    Posta aqui depois um feedback dos resultados obtidos.

    Abraços e boa sorte!

    **Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
    **Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.** 


    segunda-feira, 2 de dezembro de 2013 18:06

Todas as Respostas

  • Getulio,

    Basta você configurar nas propriedades deste login quais os bancos de dados ele terá permissão de acesso.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    sexta-feira, 29 de novembro de 2013 13:04
    Moderador
  • Olá Getúlio, complementando a fala de Galvão, se seu objetivo não é de conceder privilégios além de apenas executar uma simples stored procedure, não existe a necessidade de usar a permissão CONTROL SERVER já que a mesma está a nível de instância e não de Database. Sugiro que siga os seguintes passos abaixo:

    1 - criar o login no SQL Server usando uma conta criada no AD setando pra Base que precisa de acesso;

    2 - criar um credencial no servidor;

    3 - criar um proxies no serviço SQL Agent usando a credencial criada anteriormente no Operating System (cmdExec);

    4 - criar uma ROLE (grp_StoredProcedure) e dar as permissões de EXECUTE pra Stored Procedure;

    5 - adicionar o login criado como menbro desta ROLE (grp_StoredProcedure);

    6 - solicitar do administrador da rede adicionar a conta do AD usada para criar o login no SQL Server nas pastas que participaram da operação (Permissão de Read/Writer).

    Desta forma terá a certeza que o login irá executar apenas o que deve, ou seja, EXEC sp_suaprocedure em seu ambiente de dados. Acredito que essa dica lhe ajude no seu propósito.

    Posta aqui depois um feedback dos resultados obtidos.

    Abraços e boa sorte!

    **Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
    **Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.** 


    segunda-feira, 2 de dezembro de 2013 18:06
  • Boa Tarde, Jerfeson !!!

    Véio, o meu maior problema não seria executar a procedure, e sim conceder a permissão para quem irá executa-lá, pois no Script da procedure possui o comando XP_cmdshell que utilizo para encontrar e manipular arquivos entre diretórios e conforme pesquisa somente as permissões de instância "SysAdmin" e "Control Server" podem utilizá -las, sendo que a segunda existe restrições que podem ser aplicadas. O minha dúvida seria como conceder a permissão ao login para que execute a procedure que contém em seu Script o "XP_cmdshell" sem conceder permissões desnecessárias.  

    segunda-feira, 2 de dezembro de 2013 18:47
  • Getúlio, o roteiro acima explicita bem o que precisa ser feito. Seguindo as etapas comentadas, você obterá o que deseja pra o login.

    http://technet.microsoft.com/pt-br/library/aa337562.aspx

    http://technet.microsoft.com/pt-br/library/ms190703.aspx

    http://technet.microsoft.com/pt-br/library/ms188763%28v=sql.105%29.aspx

    http://technet.microsoft.com/pt-br/library/ms187936.aspx

    http://technet.microsoft.com/pt-br/library/ms187936.aspx

    http://msdn.microsoft.com/pt-br/library/ms188371.aspx

    http://technet.microsoft.com/pt-br/library/ms190264.aspx

    Siga esses links na sequência que eles mostram como criar cada etapa. Sugiro dar uma olhada mais apurada também no Books Online. A etapa 6 apenas solicite que o administrador da rede adicione a conta criada no AD nas pastas que irão participar da operação, levando em consideração que em ambas a conta terá que ter privilégios de leitura e escrita.

    Ressalto que de acordo com o cenário descrito não seria necessário inserir o login como membro sysadmin nem permissão de CONTROL SERVER.

    quarta-feira, 4 de dezembro de 2013 14:59