Existe-t-il une différence entre l'octroi de SELECT à un utilisateur et son ajout au rôle db_datareader?

9

On m'a demandé d'accorder SELECT, INSERTet UPDATEà un utilisateur donné, toutes les tables d'une base de données. J'ai fini par ajouter l'utilisateur db_datareaderet lui accorder INSERTet UPDATEau niveau de la base de données.

Mais cela m'a fait réfléchir, quelle est la différence (le cas échéant) entre l'octroi d'une SELECTautorisation utilisateur au niveau de la base de données ou leur ajout au db_datareaderrôle? Et existe-t-il une meilleure pratique dans un sens ou dans l'autre?

Kenneth Fisher
la source

Réponses:

7

Rick Byham a une publication WIKI montrant le serveur fixe et les rôles de base de données fixes et comment ils sont mappés. Vous pouvez consulter ici: http://social.technet.microsoft.com/wiki/contents/articles/database-engine-fixed-server-and-fixed-database-roles.aspx

Le graphique montre que le rôle db_datareader est identique à GRANT SELECT ON [base de données]. Il est donc toujours bon à utiliser, mais la recommandation est de s'éloigner de ces rôles pour les commandes plus granulaires. Certains des autres rôles de base de données fixes sont moins clairement définis pour la plupart des gens. L'utilisation des commandes explicites permet une plus grande clarté lors de la déclaration des droits.

De toute évidence, vous savez comment accorder des autorisations plus fines. J'essaie de rompre avec les anciens rôles chaque fois que possible, mais db_owner (par exemple) est une habitude difficile à rompre.

RLF
la source