locked
Shema e Roles RRS feed

  • Pergunta

  • Olá amigos,

    etou arrumando a casa, a ideia agora é unir todos os pequenos banco de dados que temos em 1 apenas;

    - Melhorar Performance

    - Centralizar a segurança

    - Otimizar estrategia de backup

    - Reduzir tempo de backup e principalmente em caso de danos não demorar para levantar;

     

     A DUVIDA,

    Irei separar as tabelas por Schemas, Seria em duas formas:

    1º. Cada sistema terá suas tabelas identificadas pelo schema;

    2. As tabelas globais irão utilizar um schema unico, tipo : GL;

    A duvida, tenho por exemplo dois sistemas, Inscrição Online = schema: IOL, e NOTES = schema: notes

    Digamos que o usuario da aplicação Inscrição online que tem como default o schema de sua aplicação = IOL, necessite consultar(SELECT) nas tabela(S) do outro schema, ex: notes, como faria este controle?

    Acredito: Adicionar ele no schema notes e dar apenas acesso a SELECT?

    Estou dando exemplo de dois schemas, mas será +/- 7 schemas total. Como criar uma estrategia deste nivel para os usuarios?

    Utilizar Roles seria uma forma? Como seria?

    Só usei a ROLES para centralizar o DML;

     

    OUTRA DUVIDA, para nivel de boas praticas, devemos ATRIBUIR o usuario ao schema ou a roles??

     

    Obrigado pela atenção,

    Abraço

     

     

    quinta-feira, 10 de junho de 2010 17:33

Respostas

  • Anderson;

     

    Acho que depende da quantidade de usuário que você terá, como são 7 schemas diferentes vamos presumir que você tenha apenas um usuário para cada schema e neste caso eu faria o controle a nível de usuário, dando grant de select mesmo.

    Agora se você tiver muitos usuários em algum desses schemas acho que a melhor solução seria realmente através de roles.

    Você ainda pode usar ao invés de grant em tabelas, criar views com permissão de impersonate e dar a permissão de select na view e não na tabela, isso também pode aumentar seu nível de segurança.


    http://ricardomura.spaces.live.com
    sexta-feira, 11 de junho de 2010 19:43

Todas as Respostas

  • Anderson,

    Os benefícios para o seu ambiente você já identificou e destacou, mas o que eu percebi que o seu problema agora esta relacionado com a segurança.

    É isso?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    quinta-feira, 10 de junho de 2010 17:43
    Moderador
  • Sim e não,

    porque não quero que o usuario de um aplicativo tenha acesso a outras tabelas(isso é resolvido pelo schema);

    Só poderá ter acesso se for necessario;

    Então, utilizando roles e schemas qual seria  a melhor forma para administrar este ambiente, digo em adicionar select a um usuario que pertence a outro shema, retirar futuramente.. e por ai vai

     

    Abraço

    quinta-feira, 10 de junho de 2010 17:46
  •  

     

    Opa,

    então, como forma organizacional fiz:

    1. Atribuo o login no banco(gerando o usuario);

    2. Crio a roles;

    3. Atribuo o usuario a ROles;

    4. Crio o schema;

    5. Atribuo a roles ao Schema e dou as devidas permissões, DML;

    Agora, como necessito que um usuario possa executar instruções DDL, criei uma Roles, "RLA_iol" e atribuir nele as permissões nivel banco para poder criar/ alterar tabela, view, SP.

    Neste caso atribuir o usuario a esta role acima para que o usuario possa fazer as operações DDL no schema, isso acontece tudo certinho,

    -----------------------

    o PRoblema: toda vez que o usuario clica para Criar tabela fica dando umas msg chata abaixo:

    you are not logger on as the database owner or system administrator. you might not be able to save changes to tables that you do not own.

    Certain edits require create table permission

    ------------------- tradução

    Você não está logger como administrador o proprietário do banco ou do sistema. talvez não seja capaz de salvar as alterações às tabelas que você não possui.

    Algumas edições exigem permissão criar tabela

    --------------------

    Ai o cara confirma tudo etc, faz os dados da tabela e ao salvar, outras msg chata e salva normal, pois ele tem permissão.

    O que fazer para tirar estas mensagens?

    Abraço

     

     

     

     

    sexta-feira, 11 de junho de 2010 14:05
  • Anderson;

     

    Acho que depende da quantidade de usuário que você terá, como são 7 schemas diferentes vamos presumir que você tenha apenas um usuário para cada schema e neste caso eu faria o controle a nível de usuário, dando grant de select mesmo.

    Agora se você tiver muitos usuários em algum desses schemas acho que a melhor solução seria realmente através de roles.

    Você ainda pode usar ao invés de grant em tabelas, criar views com permissão de impersonate e dar a permissão de select na view e não na tabela, isso também pode aumentar seu nível de segurança.


    http://ricardomura.spaces.live.com
    sexta-feira, 11 de junho de 2010 19:43