none
Schema, Roles, Login e usuario - melhor forma RRS feed

  • Pergunta

  • Olá amigos,

    Estou estudando a melhor forma de criar usuarios para as aplicações com suas atribuições, a duvida:

    1. Cenario:

    a. Tenho uma base de dados, chamado "Cav".
    b. Nesta base de dados, será armazenado tabelas dos sistemas web Extranet, Notes, Biblioteca, Curriculo, AlunoOnline.
    * as duvidas:
    c. Criar apenas um Login: "LCav" para acesso a esta base ou cada sistema ter um Login ? "LExtranet", "LCurriculo" etc ??
    d. Se eu criar apenas 1 login, irei criar usuarios especificos para cada sistema "uExtranet, "uNotes" etc ou devo ter 1 login para cada sistema relacionado a base e 1 usuario para cada tb?
    e. Sobre Schema - irei criar para cada usuario um especifico:
      I .Notes(Sistema) = notes(schema)
      II .Extranet(Sistema) = extranet(schema)
    etc
    f. Roles - Como é a melhor forma de utiliza-lo?
    g. Eu dou as permissões de insert, delete, update, select, execute SP na role AplicacaoWeb ou no Shema ? Pois os usuarios q estiver nesta roles só podera efetuar estas operações.

    Ai esta as minhas dúvidas.

    Agora o que penso é, cada usuario do sistema só poderá acessar o Shemma que ele faz parte com insert, update, delete, executar SP, View. O usuario que faz parte do schema "notes" não poderá alterar nenhuma informação do schema "curriculo" por padrão, por exemplo. Só se for atribuido uma permissão extra a ele sobre determinadas tabelas etc.

    É no roles que digo que quem possui-lo só podera da insert, update, delete etc?
    Irei criar dois roles "AplicacaoWeb" e "AplicacaoDesktop", assim os usuarios que vem dos sistemas web não poder fazer nada além de insert, update etc. como visualizar tabelas "sys."

    Aqui na empresa não existi uma politica de segurança, estou pesquisando a melhor forma para implementar estas politicas, como tb agora temos muitos sistemas web rodando em nossos servidores e não posso deixar vulneravel pois quandoda ____ eu que sobro para recuperar tudo.

    Muito obrigado a todos pela atenção!



    terça-feira, 16 de junho de 2009 19:05

Todas as Respostas

  • só para nivel de implementação neste threads achei um outro com informações do genero que Gustavo respondeu de forma bem clara:

    Criando schema e user...problema... ) http://social.msdn.microsoft.com/forums/pt-BR/transactsqlpt/thread/4e3983b7-4cad-4773-80c5-c089344c1e82/ )

    Estou lendo para somar conhecimento tb!
    terça-feira, 16 de junho de 2009 19:29
  • Olá amigos,

    alguem pode dar um caminho....

    Estive ontem fazendo alguns testes no roles dando permissão de select apenas, ai funcionava, não consegui da insert.
    ai voltei e tirei a opção de insert, mais continuou dando insert.. fiquei um pouco confuso.

    Algumas pessoas dizem que o modo visual é  bugado, é preferivel fazer via script. confirmam?
    quarta-feira, 17 de junho de 2009 11:59
  • Ol Anderson,

    Tanto no modo Script como no modo SSMS é confiável realizar qualquer operação, eu prefiro implementar meu gerenciamento por script por gosta muito de programar, de por a mão na massa.

    Para se trabalhar com Login, Schema, Role e User no SQL Server você precisa ter um conhecimento de cada um, dependendo da situação e política da empresa eles serão bem uteis.

    Quando se cria um LOGIN você apenas esta atribuindo um login para se conectar na instância do SQL Server, mas isso no quer dizer que ele poderá acessar qualquer um banco, pois o mesmo só tem permissão para acessar a instância ate o momento.

    O script a seguir mostra como criar um login.

    /*Criando login*/

    CREATE LOGIN [Anderson]

    WITH PASSWORD = '123456', DEFAULT_DATABASE = [DbCliente]

    Depois de criar o login você tem que criar um usuário para o login criado anteriormente, o código é o seguinte.

    /*Criando user para o login Heberton Vilela */

    CREATE USER [Anderson]

    FOR LOGIN [Anderson]

    WITH DEFAULT_SCHEMA = [dbo]

     

    Com as roles você tem que tomar muito cuidado ao trabalhar com elas, existem dois tipo de role no SQL Server, as de nível de Servidor e as de nível de banco de dados, sendo somente possível criar roles em nível de banco e não sendo possível criar as de nível de servidor.

    Mas você tanto pode atribuir o usuário para as role de nível de servidor como de banco, tenha cuidado com os privilégios que elas possui.

    Por exemplo.

    Se você der permissão para um usuário que na verdade deveria ter somente permissão de ler, e você colocar ele na
    role de servidor sysadmin, pode ter certeza que você ira ser demitido, pois a role sysadmin tem poderes totais no banco.

    O ideal que você crie uma role em nível de banco de dados conforme sua necessidade, digamos que você ira dividir os usuários em grupos um que poderá ler (select) e outro grupo somente para remover (delete).

    A solução para esse problema seria você criar duas role e da as permissões conforme dito anteriormente.

    O script para a solução acima é a seguinte.

    -- Criando uma role com owner (proprietário).

    USE nome_seu_banco

    GO

    CREATE ROLE Consultar AUTHORIZATION [Anderson]

    -- Criando uma role com owner (proprietário).

    USE nome_seu_banco

    GO

    CREATE ROLE Excluir AUTHORIZATION [Heberton]


    Uma outra solução seria executar a
    procedure do sistema sp_addrolemember.

    USE nome_seu_banco

    GO

    EXEC sp_addrolemember 'Consultar', 'Anderson'

    USE nome_seu_banco

    GO

    EXEC sp_addrolemember 'Consultar', 'Anderson'


    Depois de ter criado sua
    role você terá que atribuir a permissão que você queira, digo que tipo de permissão terá de executar, se vai ser 

    um SELECT, UPDATE, DELETE, em fim seja tanto comando DDL ou comandos DML.

    Para as devidas permissões segue o script logo abaixo.



    -- Script para da permissão de select na role Consultar

    USE nome_seu_banco

    GO

    GRANT SELECT TO [Consultar]

    -- Script para da permissão de delete para a role Excluir

    USE nome_seu_banco

    GO

    GRANT DELETE TO [Excluir]


    Depois de tudo isso acredito que você estará apto para determinar suas permissões .

    Qualquer dúvida pode postar, e espero que tenha ajudado.

    Heberton Melo
    http://www.dbarnacademic.ning.com

     

    • Sugerido como Resposta Heberton Melo quarta-feira, 29 de julho de 2009 20:58
    quarta-feira, 29 de julho de 2009 20:56