Existe uma diferença entre conceder um usuário SELECT e adicioná-lo à função db_datareader?

9

Foi-me pedido para conceder SELECT, INSERTe UPDATEpara um determinado usuário para todas as tabelas em um banco de dados. Acabei adicionando db_datareadere concedendo o usuário INSERTe UPDATEno nível do banco de dados.

Mas isso me fez pensar: qual é a diferença (se houver) entre conceder uma SELECTpermissão de usuário no nível do banco de dados ou adicioná-las à db_datareaderfunção? E existe alguma prática recomendada de uma maneira ou de outra?

Kenneth Fisher
fonte

Respostas:

7

Rick Byham tem uma publicação da WIKI mostrando as funções de servidor fixo e banco de dados fixo e como eles são mapeados. Você pode procurar aqui: http://social.technet.microsoft.com/wiki/contents/articles/database-engine-fixed-server-and-fixed-database-roles.aspx

O gráfico mostra que a função db_datareader é idêntica à GRANT SELECT ON [banco de dados]. Portanto, ainda é bom usá-lo, mas a recomendação é deixar essas funções para os comandos mais granulares. Algumas das outras funções fixas do banco de dados são definidas com menos clareza para a maioria das pessoas. O uso dos comandos explícitos resulta em maior clareza ao relatar direitos.

Obviamente, você sabe como conceder permissões mais refinadas. Eu estou tentando me libertar dos papéis antigos sempre que possível, mas db_owner (por exemplo) é um hábito difícil de se romper.

RLF
fonte