locked
Dúvidas Permissões RRS feed

  • Pergunta

  • Bom dia,

    Sou no com SQL e estou com duas dúvidas referente a permissões no SQL 2005:
    1) Liberar acesso ao usuário para utilizar o SQL Profiler sem ser administrador do banco;

    2) Usuário visualizar somente os bancos que tem permissão de acesso.

    Obrigado.
    quarta-feira, 18 de novembro de 2009 13:40

Respostas

  • Boa Tarde Luiz,

    Sugiro tratarmos o problema em uma thread só (de preferência essa) para mantermos o fórum organizado.

    Uma vez que a permissão de ALTER TRACE é um Server Securable e não um Database Securable não creio que haja como fazer essa limitação por banco. Eu pelo menos desconheço.

    Normalmente a permissão de TRACE é uma permissão "forte" já que você poderá visualizar tudo o que chega no banco de dados (inclusive senhas, cartões de crédito, etc). É realmente necessário concedê-la ?

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    A Impedância, o Mapeamento Objeto Relacional e Implementações – Parte II
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!814.entry
    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 18 de novembro de 2009 18:03
  • Luiz,

    Nesse caso, você terá que trabalhar com a permissão à role VIEW ANY DATABASE.
    Essa role não existia no sql2000, mas no sql2005 já existe...
    Por exemplo : GRANT VIEW ANY DATABASE TO <login>. Este comando dará permissão ao login para que ele enxergue metadados. (tab sys.databases e sys.sysdatabases).
    Essa permissão já é dada por default.
    Então você terá que usar o comando DENY para negá-la.
    Mesmo o db_owner  de um banco, não será mais capaz de ver os databases que não possui.
    Depois de negar essa permissão, um logon só visualiza metadados de master, tempdb e os bancos de dados que  possui.
    Eu nunca cheguei a usar essa role. Então por favor me informe o resultado depois.

    Eduardo
    quinta-feira, 19 de novembro de 2009 11:28

Todas as Respostas

  • Bom dia,

    Sou no com SQL e estou com duas dúvidas referente a permissões no SQL 2005:
    1) Liberar acesso ao usuário para utilizar o SQL Profiler sem ser administrador do banco;

    2) Usuário visualizar somente os bancos que tem permissão de acesso.

    Obrigado.
    Olá pessoal,

    Consegui a dúvida 1, basta executar a seguinte query: 
    USE master 
    GO

    GRANT ALTER TRACE TO sgp
    GO

    Falta só a segunda, alguem sabe?
    quarta-feira, 18 de novembro de 2009 14:15
  • Boa Tarde Luiz,

    Sugiro tratarmos o problema em uma thread só (de preferência essa) para mantermos o fórum organizado.

    Uma vez que a permissão de ALTER TRACE é um Server Securable e não um Database Securable não creio que haja como fazer essa limitação por banco. Eu pelo menos desconheço.

    Normalmente a permissão de TRACE é uma permissão "forte" já que você poderá visualizar tudo o que chega no banco de dados (inclusive senhas, cartões de crédito, etc). É realmente necessário concedê-la ?

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    A Impedância, o Mapeamento Objeto Relacional e Implementações – Parte II
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!814.entry
    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 18 de novembro de 2009 18:03
  • olá...estamos aqui somente nesta thread agora.

    Estou utilizando oi SQL 2005. o Alter trace, já deleguei a permissão.

    O q não estou conseguindo é que cada usuário visualize apenas os bancos que tem permissão de acesso. COmo posso fazer isso?

    Obrigado.

    OBS.: Concentrado só nesta thread.
    quarta-feira, 18 de novembro de 2009 18:08
  • Luiz,

    Abra o sql management studio, expanda Security, e crie um login para cada usuário de cada banco diferente.
    Em general, defina como banco default o banco ao qual o usuário for ter acesso. Geralmente eu crio como conta de acesso SQL.
    Em User Mapping, marque a flag do banco ao qual o usuário terá acesso. E abaixo, marque a opção dbowner ou a permissão que você deseja dar.

    A seguir, expanda Databases, expanda o banco ao qual você dará o acesso, Expanda Security e crie novo usuário.
    Linke o novo usuário ao login que você criou.

    Depois disso, você pode testar abrindo o SQL management studio com o usuário que você criou. Você vai notar que só vai conseguir expandir o banco ao qual você deu permissão.

    Eduardo
    quarta-feira, 18 de novembro de 2009 19:38
  • efcampos,

    Fiz esses procedimentos e funcionou beleza. O que não quero é que o usuário enxergo o banco, mesmo sem acesso, no management studio e enxergue apenas os que ele tem direito.

    Ex.: User 1, User 2 / DB1,Db2,Db3

    User 1 enxerga apenas DB1 e não enxerga o DB2 nem DB3 e User 2 enxerga DB2 e DB 3 e não enxerga o DB1.

    Deu pra entender o q quero?
    quarta-feira, 18 de novembro de 2009 19:45
  • Luiz,

    Nesse caso, você terá que trabalhar com a permissão à role VIEW ANY DATABASE.
    Essa role não existia no sql2000, mas no sql2005 já existe...
    Por exemplo : GRANT VIEW ANY DATABASE TO <login>. Este comando dará permissão ao login para que ele enxergue metadados. (tab sys.databases e sys.sysdatabases).
    Essa permissão já é dada por default.
    Então você terá que usar o comando DENY para negá-la.
    Mesmo o db_owner  de um banco, não será mais capaz de ver os databases que não possui.
    Depois de negar essa permissão, um logon só visualiza metadados de master, tempdb e os bancos de dados que  possui.
    Eu nunca cheguei a usar essa role. Então por favor me informe o resultado depois.

    Eduardo
    quinta-feira, 19 de novembro de 2009 11:28
  • Eduardo,

    É isso mesmo, com este comando só visualiza os bancos master e tempdb, mesmo sendo owner de outro banco.

    Valeu.
    quinta-feira, 19 de novembro de 2009 14:00