データベース内のすべてのテーブルについて、特定のユーザーにSELECT
、INSERT
、UPDATE
を付与するように依頼されました。ユーザーをdb_datareader
に追加し、データベースレベルでINSERT
とUPDATE
を付与しました。
しかし、それでデータベースレベルでユーザーにSELECT
権限を付与するか、またはdb_datareader
ロールに追加することの違いは(あるとすれば)何だと思いましたか。そして、何らかの方法でベストプラクティスはありますか?
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(たとえば)は破るのが難しい習慣です。