Recentemente queria compartilhar os direitos de acesso regulares com um usuário de um servidor e eu percebi que um simples CREATE USER
e GRANT ALL ON DATABASE
comandos não deixá-lo correr um simples SELECT
sobre os dados.
Gostaria de conceder direitos a todas as tabelas de um determinado banco de dados para um usuário especificado, mas não tenho certeza se é a melhor ideia conceder a ele acesso a todo o esquema, public
pois não sei se isso permitiria algum tipo de privilégio escalação. Existe alguma outra maneira?
GRANT SELECT ON TableName TO [Domain\User]
? Normalmente, apenas atribuo usuários àdb_datareader
função se tudo o que eles precisam é acesso de leitura a todas as tabelas, mas não tenho certeza de quão granular você deseja ser.Respostas:
O privilégio de
DATABASE
conceder apenas direitos gerais de conexão ao banco de dados e não mais. Um usuário com apenas esse privilégio pode ver apenas o que o público em geral tem permissão para ver.Para conceder acesso de leitura a todas as tabelas , você também precisa de privilégios em todos os esquemas e tabelas:
Você também pode definir privilégios padrão para futuros esquemas e tabelas. Executar para cada função que cria objetos em seu banco de dados
Mas você realmente precisa entender o conceito inteiro primeiro.
E quase sempre é melhor agrupar privilégios em funções de grupo e conceder / revogar a função de grupo para / de funções de usuário. Palavras-chave:
fonte
myusr
um erro de digitação? Não deveria sermyuser
?