none
Segurança SQL Server 2005 RRS feed

  • Pergunta

  • Olá a todos!!!

    Tenho o seguinte cenário:

    vários dbs em uma instância, os logins, na grande maioria eram sysadmin. Existem vários objetos criados (views, procedures, functions), todos no owner (dbo). Estou tentando organizar tudo isso e fiz o seguinte:
    - Criei login para cada pessoa;
    - Mapiei os logins com usuários em cada db;
    - Criei um role com a mesma caracteristica para cada db;
    - Incluí os usuários nas roles, (cada usuário no role de cada db).
    Ok, agora os usuários tem acesso somente de leitura, escrita e execução conforme o role criado.

    --Criando o role
    USE [Database]
    GO
    CREATE ROLE [acesso_nome_db]

    --GRANTs no role
    USE [Database]
    GO
    GRANT SELECT, INSERT, UPDATE, EXECUTE ON SCHEMA::[dbo] TO [acesso_nome_db]

    --Incluindo usuario nos roles dos dbs
    USE [Database]
    EXEC sp_addrolemember 'acesso_nome_db','usuario'

    Entretanto, as views que essas pessoas usavam não ficam mais disponiveis para eles alterarem. Como eu poderia liberar este acesso para eles de forma centralizada??? E também, como fazer que todos criem essas views de forma centralizada, ou seja, no mesmo esquema (dbo) onde já foram criadas as views anteriores e todos possam acessar para atualizar???  Desde já agradeço por mais essa ajuda.

    []´s

    PH

    • Editado phscuritiba terça-feira, 10 de março de 2009 17:33
    terça-feira, 10 de março de 2009 15:42

Respostas

  • Ph,

    Na verdade o seu problema esta em liberar o acesso a role, como também disponibilizar uma forma mais centralizada para trabalhar com todos os objetos?

    Como você esta trabalhando com o SQL Server 2005, poderia pensar em utilizar o conceito de Schema existente no SQL Server, mas para isso precisariamos entender um pouco mais a sua necessidade.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 10 de março de 2009 17:19
    Moderador
  • Olá PH,

    Parabéns pela atitude. É preciso ser "macho" para ir lá e retirar todos os privilégios e deixá-los na linha.
    Sempre terão aquelas aplicações mal feitas que precisam ser SA e normalmente são do analista amigo do presidente da empresa.

    Na linha do Jr. acredito que trabalhar com Schemas seja a saída. Se você colocar os usuários como Schema padrão igual a DBO, toda vez que eles criarem algum objeto que não seja qualificado (schema.objeto) automaticamente ele irá ser criado no Schema DBO. É necessário que eles tenham permissão de ALTER no SCHEMA além das demais permissões.

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

    Será que LEFT OUTER JOIN e RIGHT OUTER JOIN são sinôminos de *= e =* ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!422.entry


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 11 de março de 2009 03:59
  • Olá PH,

    Desculpe, mas como respondi pela madrugada fui um pouco desatento.
    De fato você está certo. A permissão de ALTER irá permitir que você tenha esse controle no Schema, mas irá conceder outras permissões indesejadas. Não conheço uma permissão especifica para que você possa fazer isso. Teríamos que estender as permissões e criar uma permissão para isso (EXECUTE AS), mas ficaria um pouco grosseiro.

    O problema é que não estou podendo postar o código nesse momento. Vamos ver o que os demais dizem.

    [ ]s,

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

    Será que LEFT OUTER JOIN e RIGHT OUTER JOIN são sinôminos de *= e =* ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!422.entry


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 11 de março de 2009 17:44

Todas as Respostas

  • Ph,

    Na verdade o seu problema esta em liberar o acesso a role, como também disponibilizar uma forma mais centralizada para trabalhar com todos os objetos?

    Como você esta trabalhando com o SQL Server 2005, poderia pensar em utilizar o conceito de Schema existente no SQL Server, mas para isso precisariamos entender um pouco mais a sua necessidade.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 10 de março de 2009 17:19
    Moderador
  • Olá PH,

    Parabéns pela atitude. É preciso ser "macho" para ir lá e retirar todos os privilégios e deixá-los na linha.
    Sempre terão aquelas aplicações mal feitas que precisam ser SA e normalmente são do analista amigo do presidente da empresa.

    Na linha do Jr. acredito que trabalhar com Schemas seja a saída. Se você colocar os usuários como Schema padrão igual a DBO, toda vez que eles criarem algum objeto que não seja qualificado (schema.objeto) automaticamente ele irá ser criado no Schema DBO. É necessário que eles tenham permissão de ALTER no SCHEMA além das demais permissões.

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

    Será que LEFT OUTER JOIN e RIGHT OUTER JOIN são sinôminos de *= e =* ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!422.entry


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 11 de março de 2009 03:59
  • Olá Gustavo,

    obrigado e também obrigado ao Jr. pela atenção. Gustavo, se eu der permissão de ALTER no SCHEMA, não deixarei eles criarem objetos também??? Não quero que eles criem obejtos no banco a não ser, VIEWS e que também possam alterar as VIEWS que já existem no DBO, somente isso, além de INSERT, UPDATE, EXECUTE é claro, como coloquei no script as permissões de INSERT, DELETE, UPDATE e EXECUTE já estão nos roles, estou somente com o problema das VIEWS. Desculpe se não entendi direito mas, fiquei com essa dúvida.

    []´s

    PH.
    quarta-feira, 11 de março de 2009 11:54
  • Olá PH,

    Desculpe, mas como respondi pela madrugada fui um pouco desatento.
    De fato você está certo. A permissão de ALTER irá permitir que você tenha esse controle no Schema, mas irá conceder outras permissões indesejadas. Não conheço uma permissão especifica para que você possa fazer isso. Teríamos que estender as permissões e criar uma permissão para isso (EXECUTE AS), mas ficaria um pouco grosseiro.

    O problema é que não estou podendo postar o código nesse momento. Vamos ver o que os demais dizem.

    [ ]s,

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

    Será que LEFT OUTER JOIN e RIGHT OUTER JOIN são sinôminos de *= e =* ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!422.entry


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 11 de março de 2009 17:44