none
Permissão de exec em procedure RRS feed

  • Pergunta

  • Pessoal,

    Ao darmos permissão de select em uma view, não é necessário setar permissão para as tabelas associadas; como funciona a permissão de exec em uma procedure? ao setar permissão de exec em uma procedure, é necessário setar permissões individuais nos objetos utilizados pela Stored Procedure? alguém terial algum link falando a respeito?

    Obrigado!!
    quarta-feira, 30 de setembro de 2009 19:05

Respostas


  • Specifies the statements inside the module executes in the context of the current owner of the module. If the module does not have a specified owner, the owner of the schema of the module is used.

    Especifica que o comando dentro do Módulo executa no contexto do propretário do módulo. Se o módulo não tem um proprietário especificado, o proprietário do SCHEMA do módulo é usado.


    Ou seja

    Vai depender se o proprietário da SP é o mesmo proprietário do SCHEMA e se as tabelas estão dentro de um determinado SCHEMA



    Espero ter ajudado


    Anderson - DBA/MCP/MCTS/MCITP/MCT - Sua pergunta foi respondida ? Marque-a como tal! www.myspace.com/andersondpa
    • Marcado como Resposta sergioduarte quarta-feira, 30 de setembro de 2009 21:07
    quarta-feira, 30 de setembro de 2009 21:02

Todas as Respostas

  • Sergio, quando você atribui a permissao de exec em uma procedure o usuário automaticamente recebe os provilegios sobre os objetos utilizados na mesma. Ex se uma proc insere dados em um tabela e mesmo que um usuário tiver "deny data writer" em uma tabela ele vai conseguir inserir. Para contornar essa caracteristica você pode dar uma olhada na clausula "execute as " no books online onde você indica em que contexto a procedure sera executada no de quem criou, no quem está executando ou ainda especificar outro usuário.
    Att. Leandro Hexsel Bugalho
    • Sugerido como Resposta Leandro Bugalho quarta-feira, 30 de setembro de 2009 19:45
    quarta-feira, 30 de setembro de 2009 19:45
  • Sergio,

    Sim, é necessário que o usuário tenha permissão de exec da procedure e também das tables!!!!
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quarta-feira, 30 de setembro de 2009 19:53
  • Boa tarde Pessoal,

    De acordo com o Leandro, não é necessário definir permissões adicionais para as tabelas referenciadas pela SP e de acordo com o Junior, é necessário setar a permissão; qual informação está correta?

    Obrigado!!

    quarta-feira, 30 de setembro de 2009 20:03
  • Boa tarde Sérgio


    Está talvez esteja havendo uma falha de comunicação o que acontece é o seguinte: o que o Leandro tenha tentado te dizer é que vc pode executar a procedure com o CONTEXTO de um OUTRO USUÁRIO, mas caso esse não seja o seu caso vc TEM QUE TER AS PERMISSÕES na table também.

    Exemplo


    PROCEDURE dbo.usp_teste (referencia as tabelas T1 e T2)

    O usuário tem apenas permissão de EXEC na procedure, então ele não conseguirá inserir os registros na tabela se não tiver permissão nas tabelas.

    Se a procedure for tiver o EXECUTE AS OWNER por exemplo (sugerido pelo Leandro) , o usuário que tem permissao de EXEC na SP herdará os direitos do OWNER entao neste caso, conseguirá fazer a inserção dos registros.



    Espero ter ajudado
    Anderson - DBA/MCP/MCTS/MCITP/MCT - Sua pergunta foi respondida ? Marque-a como tal! www.myspace.com/andersondpa
    quarta-feira, 30 de setembro de 2009 20:21
  • Boa tarde Anderson,

    Mesmo que o Owner da Stored Procedure (alterando o contexto) não seja owner das tabelas, ele irá conseguir inserir?


    Obrigado!
    quarta-feira, 30 de setembro de 2009 20:24
  • Isso vai depender Sérgio


    Books Online

    OWNER

    Specifies the statements inside the module executes in the context of the current owner of the module. If the module does not have a specified owner, the owner of the schema of the module is used.




    Abraços


    Anderson - DBA/MCP/MCTS/MCITP/MCT - Sua pergunta foi respondida ? Marque-a como tal! www.myspace.com/andersondpa
    quarta-feira, 30 de setembro de 2009 20:48
  • Boa tarde,

    O texto diz apenas (no meu entendimento) que os comandos que estão dentro da stored procedure irão executar sob o contexto do Owner; A dúvida é se, caso o owner da sp não tenha permissão nas tabelas base,  ele irá conseguir inserir os registros? irei dar uma pesquisada a respeito e fazer alguns testes.

    Obrigado!!

    quarta-feira, 30 de setembro de 2009 20:55

  •   Se o usuário criador da proc não tiver permissão ele nem conseguirá criar a proc
    Carlos Eduardo Pieren - MCP
    quarta-feira, 30 de setembro de 2009 20:59

  • Specifies the statements inside the module executes in the context of the current owner of the module. If the module does not have a specified owner, the owner of the schema of the module is used.

    Especifica que o comando dentro do Módulo executa no contexto do propretário do módulo. Se o módulo não tem um proprietário especificado, o proprietário do SCHEMA do módulo é usado.


    Ou seja

    Vai depender se o proprietário da SP é o mesmo proprietário do SCHEMA e se as tabelas estão dentro de um determinado SCHEMA



    Espero ter ajudado


    Anderson - DBA/MCP/MCTS/MCITP/MCT - Sua pergunta foi respondida ? Marque-a como tal! www.myspace.com/andersondpa
    • Marcado como Resposta sergioduarte quarta-feira, 30 de setembro de 2009 21:07
    quarta-feira, 30 de setembro de 2009 21:02
  • Valeu Anderson!!

    quarta-feira, 30 de setembro de 2009 21:07