¿Hay alguna diferencia entre otorgar SELECT a un usuario y agregarlos a la función db_datareader?

9

Se me pidió que otorgara SELECT, INSERTy UPDATEa un usuario determinado, todas las tablas en una base de datos. Acabé añadiendo al usuario db_datareadery la concesión de ellos INSERTy UPDATEen el nivel de base de datos.

Pero eso me hizo pensar, ¿cuál es la diferencia (si la hay) entre otorgar un SELECTpermiso de usuario a nivel de base de datos o agregarlos al db_datareaderrol? ¿Y hay alguna mejor práctica de una manera u otra?

Kenneth Fisher
fuente

Respuestas:

7

Rick Byham tiene una publicación WIKI que muestra el servidor fijo y los roles fijos de la base de datos y cómo se asignan. Puedes mirar aquí: http://social.technet.microsoft.com/wiki/contents/articles/database-engine-fixed-server-and-fixed-database-roles.aspx

El gráfico muestra que la función db_datareader es idéntica a GRANT SELECT ON [base de datos]. Por lo tanto, todavía está bien usarlo, pero la recomendación es alejarse de esos roles a los comandos más granulares. Algunos de los otros roles fijos de la base de datos están menos claramente definidos para la mayoría de las personas. El uso de los comandos explícitos da como resultado una mayor claridad al informar los derechos.

Obviamente, usted sabe cómo otorgar permisos de grano fino. Estoy tratando de liberarme de los viejos roles siempre que sea posible, pero db_owner (por ejemplo) es un hábito difícil de romper.

RLF
fuente