none
user apenas para uma tabela RRS feed

  • Pergunta

  • Boa tarde,


    Possuo um banco de dados numa instancia da qual não sou admin, apenas tenho permisão para mexer no meu banco de dados.
    Nem para criar um user tenho permissão.

    Neste momento tenho que disponibilizar uma tabela do meu banco de dados para inserção de dados. Estou a pensar pedir a criação de um user que só tenha acesso a essa tabela.

    Pretendia que o user só podes-se ver a uma tabela, que não pode-se aceder as restantes tabelas do banco de dados nem as opções inerentes, como stored procedures e assim.

    Isso é possível?

    Obrigado

    quarta-feira, 23 de janeiro de 2013 17:08

Respostas

  • Se voce der somente permissão de execute na procedure ele não vai ter como fazer alterações nela, se o usuario tiver permissão de writer ele pode alterar a sua proc.

    Na procedure voce só passa os parametros, não existe pass para a procedure ja que a autenticação é pelo usuario que voce vai dar acesso.

    uma exemplo de como começar:

    CREATE procedure [Nome da procedure] (@parametro1 varchar(100),@parametro2 int, etc)
    as
    begin
    /*
     Aqui vai o codigo que vai inserir
     no insert voce passa como valores os parametros da procedure, ex:
     
     insert into tabela (campo1, campo2)
     select @parametro1, @parametro2
    
    
    */
    END


    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta Jonas.8 quinta-feira, 24 de janeiro de 2013 13:33
    quinta-feira, 24 de janeiro de 2013 12:23
  • voce tem que passar onde esta a procedure (nome do servidor e nome do banco), o nome da procedure (sp_teste), os parametros que devem ser passados na procedure e o tamanho maximo dos campos (@nome varchar(100),@telefone int)

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta Jonas.8 quinta-feira, 24 de janeiro de 2013 13:33
    quinta-feira, 24 de janeiro de 2013 13:20

Todas as Respostas

  • Voce pode criar uma view ou uma procedure baseado nesta tabela e dar acesso somente a view e a procedure. Ou então utilizar schemas, onde voce teria 1 schema somente para esta tabela e daria acesso neste schema.

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 23 de janeiro de 2013 19:33
  • Hum..porque é o seguinte. O meu cliente tem uma aplicção dele que vai ter que gravar dados numa tabela do meu banco de dados. Eu não queria dar para ele um user no meu banco de dados, senão ele pega o SSMS (Sql Server Management Studio) e acede ao meu banco de dados e ve as minhas outras tabelas e meu s procedure stored.

    Queria simplesmente arrnjar forma de ele gravar os dados na tabela mas sem ter acesso ao resto do banco.

    Neste momento, com o conhecimento que tenho, ia passar para ele o nome da instancia um user e uma password. MAs assim ele pega o SSMS e ve tudo :/

    Tem forma de fazer o que pretendo?

    Obrigado

    quarta-feira, 23 de janeiro de 2013 23:01
  • Se a unica coisa que o usuario vai fazer é inserir dados em uma tabela, voce pode criar uma procedure que contenha a logica de inserção, passando como parametro os campos que vão ser inseridos e voce daria somente a permissão para ele de execute nesta procedure.

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 24 de janeiro de 2013 11:23
  • então crio um sp e dou ao cliente os parametros, ele no programa dele (em java) carrega os parâmetros para o sp.

    Mas tenho que criar algum user para isso? Ou pode usar o user que já tenho criado? Ele saberá alguma vez qual será esse user?

    Obrigado


    • Editado Jonas.8 quinta-feira, 24 de janeiro de 2013 11:44
    quinta-feira, 24 de janeiro de 2013 11:44
  • isso mesmo, crie a SP que ele irá utilizar no programa para fazer o insert. Em relação ao user depende, o usuario que vai se autenticar no programa dele no SQL é que vai precisar ter acesso a esta procedure, no usuario que o aplicativo vai rodar esta procedure ela tem que ter a permissão de execute na procedure, se ja existe um usuario que ele use para fazer alguma coisa de banco de dados só dar permissão para este usuario na procedure.

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 24 de janeiro de 2013 11:55
  • Então sendo assim vou usar o user que tenho, que apenas tem permissão de reader e de writer. Com sp ele nunca terá possibilidade de mexer nas outras tabelas, pois ele nunca chegará a aceder ao código do sp, certo?

    Eu não percebo muito de sp´s. Mas pelo que pesquisei eu só passo os parâmetros, não preciso de passar o nome do user e a respectiva pass que o sp vai utilizar, pois não?

    Sem querere abusar, se pudesse passar exemplos de sp agradecia.

    Obrigado

    quinta-feira, 24 de janeiro de 2013 12:08
  • Se voce der somente permissão de execute na procedure ele não vai ter como fazer alterações nela, se o usuario tiver permissão de writer ele pode alterar a sua proc.

    Na procedure voce só passa os parametros, não existe pass para a procedure ja que a autenticação é pelo usuario que voce vai dar acesso.

    uma exemplo de como começar:

    CREATE procedure [Nome da procedure] (@parametro1 varchar(100),@parametro2 int, etc)
    as
    begin
    /*
     Aqui vai o codigo que vai inserir
     no insert voce passa como valores os parametros da procedure, ex:
     
     insert into tabela (campo1, campo2)
     select @parametro1, @parametro2
    
    
    */
    END


    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta Jonas.8 quinta-feira, 24 de janeiro de 2013 13:33
    quinta-feira, 24 de janeiro de 2013 12:23
  • A ver se eu entendi. Imaginemos que eu crio o seguinte sp: 

    CREATE procedure sp_teste (@nome varchar(100),@telefone int)
    as
    begin
    /*
     Aqui vai o codigo que vai inserir
     no insert voce passa como valores os parametros da procedure, ex:
     
     insert into tabela_numeros values(nome, telefone)
    
    */
    END

    Que dados é que passo para o meu cliente para que ele possa usar este sp no programa dele?

    Obrigado


    • Editado Jonas.8 quinta-feira, 24 de janeiro de 2013 13:17
    quinta-feira, 24 de janeiro de 2013 13:17
  • voce tem que passar onde esta a procedure (nome do servidor e nome do banco), o nome da procedure (sp_teste), os parametros que devem ser passados na procedure e o tamanho maximo dos campos (@nome varchar(100),@telefone int)

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta Jonas.8 quinta-feira, 24 de janeiro de 2013 13:33
    quinta-feira, 24 de janeiro de 2013 13:20
  • então seria:

    nome do servidor: centralhidro

    nome do banco: sector_um

    nome do sp: sp_teste

    parametros: @nome varchar(100),@telefone int

    Correcto?

    quinta-feira, 24 de janeiro de 2013 13:25
  • Isso mesmo.

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 24 de janeiro de 2013 13:30
  • então posso estar descansado, porque o meu cliente saberá o nome da instância e do banco, mas nunca conseguirá entrar pois não sabe o nome dos users, certo?

    Me explica uma coisa, todos os users do banco tem acesso aos sp, ou existe a opção de associar sp aos users?

    Obrigado

    quinta-feira, 24 de janeiro de 2013 13:33
  • Se voce não der mais nenhuma permissão alem de execute na procedure é isto mesmo.

    No management studio clicando com o botão direito em propriedade e depois indo em permissions voce consegue adicionar usuarios ou grupos a SP.

    Depende da permissão do user para visualizar as SPs, a maioria até consegue visualizar mas não consegue executar ou modificar.


    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 24 de janeiro de 2013 13:45
  • era uma curiosidade, pois nesta caso estou descansado. Pois o meu cliente nunca saberá como entrar no banco, pois não sabe os users, correcto?

    Obrigado pela grande ajuda :)

    quinta-feira, 24 de janeiro de 2013 13:58