MSSQL - Ocultar bancos de dados

2

Eu tenho um servidor MSSQL 2005 instalado e funcionando. Gostaria de poder ter a seguinte configuração:

database_one com user_one como db_owner
e database_two com user_two como db_owner

A parte complicada (pelo menos para mim) é que eu gostaria que database_one ficasse oculto de user_two e database_two a ser escondido de user_one .

Até agora, encontrei a permissão VIEW ANY DATABASE . Brincando com isso, parece que não importa como eu configurei as permissões mais específicas para um usuário, a permissão VIEW ANY DATABASE tem precedência.

Se eu executar DENY VIEW ANY DATABASE TO user_one , conectar-se como user_one mostrará apenas os bancos de dados do sistema master e tempdb , mesmo se user_one estiver configurado como db_owner de database_one.

Existe uma maneira de configurar as permissões para fazer o que eu quero?

    
por Johrn 15.01.2010 / 17:16

2 respostas

0

A visibilidade de sys.databases :

If the caller of sys.databases is not the owner of the database and the database is not master or tempdb, the minimum permissions required to see the corresponding row are ALTER ANY DATABASE or VIEW ANY DATABASE server-level permission, or CREATE DATABASE permission in the master database. The database to which the caller is connected can always be viewed in sys.databases.

Portanto, a visibilidade padrão é exatamente o que você está pedindo: cada usuário pode ver o master, tempdb e seu próprio banco de dados. Certifique-se de que user_one seja o proprietário de database_one (não apenas um membro da função db_owner!), Como em:

ALTER AUTHORIZATION ON DATABASE::database_one TO user_one;

Se a configuração estiver correta (user_one é o proprietário de database_one, user_dois é proprietário de database_two) e nenhuma permissão extra é concedida , você deve obter exatamente o que está solicitando. Especificamente, você não deve NEGAR nada, o fato de você ter que NEGAR uma permissão implica algo errado com seu teste (você concedeu permissões desnecessárias aos logins de user_one e user_two).

    
por 16.01.2010 / 00:42
1

Separar as instâncias de ajuda?

    
por 15.01.2010 / 21:16