none
Compartilhar o servidor dando acesso apenas a um banco de dados. RRS feed

  • Pergunta

  • Boa tarde pessoal!

    Encontrei algum material no forum porem eu queria compartilhar o que fiz em meu servidor para compartilhar o mesmo com outra empresa.

    Gostaria a opnião de vocês para ter certeza de que isso resolve o problema desde usuário apenas conectar, visualizar informações somente do banco específico.

    O caso é o seguinte:

        Dar acesso completo ao banco de dados da empresa , no mesmo servidor SQL com outros bancos ( restritos ).

    Passo a passo:

    1) Fiz o restore do banco da empresa no servidor

    2) Criei o usuário com "roles" apenas public

    3) Na base de dados criada, Propriedade -> Files -> Onwer -> troquei de   instancia\administrador   para  usuário criado

    Neste momento o usuário passa a ser dbo_onwer do banco de dados

    4) Na instancia do SQL -> Propriedades -> Permissões -> Usuario:

       - Deny  -> alter any credential

       - Deny -> alter any linked server

       - Deny ->  View any database

    Na opinão de vocês, esse procedimento daria controle sobre esse usuário, deixando ele apenas administrar o banco de dados mapeado?

    Teria que fazer algo há mais?

    Se alguem puder me ajudar, ficaria muito grato!

    Antecipadamente,

    Obrigado.

    Aparecido Fonseca.

    terça-feira, 20 de maio de 2014 15:02

Respostas

  • Obrg Durval pelo retorno!

    Estou com dúvida de como fazer esses procedimentos:

    1) Na opção mencionada Securables  , tenho que procurar os objetos específicos. É isso?

    Primeiro preciso mencionar o login e depois as permissões. Tá certo?

    2) Na opção mencionada User Mapping , uma pergunta: mesmo não estando marcado o mapeamento dos demais banco para esse usuário, é preciso mesmo assim "mapear" e marcar como   "db_denydatareader" e "db_denydatawriter"

    3) Na opção mencionada Owned Schemas  , não encontrando essa ação. Meu servidor é SQL Server 2008 R2 inglês, faz diferença?

    Uma outra dúvida é o seguinte.. Pelo que já fiz no servidor (conforme mencionei na abertura deste post), não seria o suficiente?


    Obrigado pela atençao!

    Aparecido. 

    Aparecido,

    Segue às respostas:

    1) Se você pretende impedir que este usuário tenha acessos adicionais que possam afetar outros bancos também é necessário ações nas configurações da sua instância SQL, além do banco de dados indicado.

    Você deve conceder acesso apenas para às permissões que considerar necessárias para este usuário (acima eu te indiquei o mínimo, você pode adicionar outras caso precisar). Veja abaixo à janela de "Login Properties":

    2) Não necessariamente, mas eu já vi casos de mudanças no "login" que passaram à permitir o "user" à realizar algumas operações que não deveriam estar disponíveis, então procure ser explícito na concessão e na revogação de acessos para evitar problemas.

    3) Não tenho mais versões do SQL Server 2008 em meu ambiente e eu admito que não me recordo de como são estas configurações. Procurei alguma informação e encontrei o "Database Role Properties", veja o link abaixo:

    http://technet.microsoft.com/en-us/library/ms180305(v=sql.105).aspx

    Para facilitar, esta página de configuração é parte do Database "user", veja a imagem abaixo:

    Não esqueça de marcar como resposta todos os posts que ajudaram na solução !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 20 de maio de 2014 17:47

Todas as Respostas

  • Aparecido,

    No logins (instancia SQL -> Security -> Logins), na área "Securables" você pode permitir acesso apenas para:

    - "Authenticate server"

    - "Connect SQL"

    - "Alter any database"

    As demais permissões você, por segurança, pode negar utilizando DENY.

    Na área "User Mapping", você pode selecionar este banco e definir à role como "db_owner", para os demais bancos você pode explicitamente selecionar às roles "db_denydatareader" e "db_denydatawriter".

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

    No users (Banco de dados -> Security -> Users), na área "Owned Schemas" defina este usuário como "db_owner".

    Para acessos específicos do banco, então recomendo que você adote o mesmo padrão utilizado para os demais, afim de reduzir problemas de administração e acessos.

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    terça-feira, 20 de maio de 2014 15:35
  • Obrg Durval pelo retorno!

    Estou com dúvida de como fazer esses procedimentos:

    1) Na opção mencionada Securables  , tenho que procurar os objetos específicos. É isso?

    Primeiro preciso mencionar o login e depois as permissões. Tá certo?

    2) Na opção mencionada User Mapping , uma pergunta: mesmo não estando marcado o mapeamento dos demais banco para esse usuário, é preciso mesmo assim "mapear" e marcar como   "db_denydatareader" e "db_denydatawriter"

    3) Na opção mencionada Owned Schemas  , não encontrando essa ação. Meu servidor é SQL Server 2008 R2 inglês, faz diferença?

    Uma outra dúvida é o seguinte.. Pelo que já fiz no servidor (conforme mencionei na abertura deste post), não seria o suficiente?


    Obrigado pela atençao!

    Aparecido. 

    terça-feira, 20 de maio de 2014 16:30
  • Obrg Durval pelo retorno!

    Estou com dúvida de como fazer esses procedimentos:

    1) Na opção mencionada Securables  , tenho que procurar os objetos específicos. É isso?

    Primeiro preciso mencionar o login e depois as permissões. Tá certo?

    2) Na opção mencionada User Mapping , uma pergunta: mesmo não estando marcado o mapeamento dos demais banco para esse usuário, é preciso mesmo assim "mapear" e marcar como   "db_denydatareader" e "db_denydatawriter"

    3) Na opção mencionada Owned Schemas  , não encontrando essa ação. Meu servidor é SQL Server 2008 R2 inglês, faz diferença?

    Uma outra dúvida é o seguinte.. Pelo que já fiz no servidor (conforme mencionei na abertura deste post), não seria o suficiente?


    Obrigado pela atençao!

    Aparecido. 

    Aparecido,

    Segue às respostas:

    1) Se você pretende impedir que este usuário tenha acessos adicionais que possam afetar outros bancos também é necessário ações nas configurações da sua instância SQL, além do banco de dados indicado.

    Você deve conceder acesso apenas para às permissões que considerar necessárias para este usuário (acima eu te indiquei o mínimo, você pode adicionar outras caso precisar). Veja abaixo à janela de "Login Properties":

    2) Não necessariamente, mas eu já vi casos de mudanças no "login" que passaram à permitir o "user" à realizar algumas operações que não deveriam estar disponíveis, então procure ser explícito na concessão e na revogação de acessos para evitar problemas.

    3) Não tenho mais versões do SQL Server 2008 em meu ambiente e eu admito que não me recordo de como são estas configurações. Procurei alguma informação e encontrei o "Database Role Properties", veja o link abaixo:

    http://technet.microsoft.com/en-us/library/ms180305(v=sql.105).aspx

    Para facilitar, esta página de configuração é parte do Database "user", veja a imagem abaixo:

    Não esqueça de marcar como resposta todos os posts que ajudaram na solução !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 20 de maio de 2014 17:47
  • 1) Na opção mencionada Securables  , tenho que procurar os objetos específicos. É isso?

    R: Nesta opção você pode escolher por Servidor, Objeto ou tipo de objeto

    2) Na opção mencionada User Mapping , uma pergunta: mesmo não estando marcado o mapeamento dos demais banco para esse usuário, é preciso mesmo assim "mapear" e marcar como   "db_denydatareader" e "db_denydatawriter"

    R: Aqui eu te daria a opção de criar um Schema e ai sim conceder as permissões ou retire a permissão sysadmin

    3) Na opção mencionada Owned Schemas  , não encontrando essa ação. Meu servidor é SQL Server 2008 R2 inglês, faz diferença?

    R: A linguagem não teria nenhuma diferença no layout do produto

    terça-feira, 20 de maio de 2014 18:01
  • Certinho Durval...

    Encontrei as telas e como fazer as rotinas com esse seu passa a passo agora!

    Muito obrigado pela ajuda.

    Att,

    Aparecido.

    terça-feira, 20 de maio de 2014 18:19