web-dev-qa-db-ja.com

SELECTにユーザーを許可することと、ユーザーをdb_datareaderロールに追加することの間に違いはありますか?

データベース内のすべてのテーブルについて、特定のユーザーにSELECTINSERTUPDATEを付与するように依頼されました。ユーザーをdb_datareaderに追加し、データベースレベルでINSERTUPDATEを付与しました。

しかし、それでデータベースレベルでユーザーにSELECT権限を付与するか、またはdb_datareaderロールに追加することの違いは(あるとすれば)何だと思いましたか。そして、何らかの方法でベストプラクティスはありますか?

9
Kenneth Fisher

Rick Byhamが、固定サーバーと固定データベースの役割とそれらのマッピング方法を示すWIKI投稿を公開しています。ここを見ることができます: http://social.technet.Microsoft.com/wiki/contents/articles/database-engine-fixed-server-and-fixed-database-roles.aspx

グラフは、db_datareaderロールが[データベース]をGRANT SELECT ONするために同一であることを示しています。したがって、使用することは問題ありませんが、これらのロールからより細かいコマンドに移行することをお勧めします。他の固定データベースロールの一部は、ほとんどの人にとって明確に定義されていません。明示的なコマンドを使用すると、権利を報告する際により明確になります。

当然のことながら、きめ細かい権限を付与する方法を知っています。私は可能な限り古いロールから脱却しようとしていますが、db_owner(たとえば)は破るのが難しい習慣です。

7
RLF