まず、私はDBAではなく、すべての権限に精通していません。
私の質問は、1つのデータベースに対するdb_owner
権限をユーザーに付与する場合です。完全に制御するには、db_datareader
およびdb_datawriter
権限も与える必要がありますか? db_owner
は、データベースであらゆる種類のクエリを実行するのに十分だと思いますか? (作成、削除、変更、選択およびその他すべてのもの)。
つまり、db_owner
を選択すると、db_datareader
、db_datawriter
が自動的に含まれます。私は正しいですか?
データベースレベルの役割 によると:
Db_owner固定データベースロールのメンバーは、データベースのすべての構成およびメンテナンスアクティビティを実行でき、データベースを削除することもできます。
このデータベースレベルのロールのメンバーは、データベースに対して必要なことをすべて実行できます。これには、SELECT、INSERT、UPDATE、DELETEデータも含まれます。
それでも、ユーザーをdb_ownerのメンバーにするときに、ユーザーにあまり多くの権限を与えていないことを確認する必要があります...
データベースでこのユーザーに接続し、このクエリを実行して、 sys.fn_my_permissions を使用して効果的なデータベースレベルの権限を確認できます。
SELECT *
FROM sys.fn_my_permissions(null, 'database')
--WHERE permission_name IN ('SELECT', 'UPDATE', 'DELETE', 'INSERT')
ORDER BY permission_name
Db_ownerのみの出力には、次の行が含まれます。
entity_name subentity_name permission_name
... ... ...
database DELETE
database INSERT
database SELECT
database UPDATE
... ... ...
dont db_owner権限を付与している場合は、db_datareaderおよびdb_datawriter権限を付与する必要があります。 BOLによる
db_owner:
Db_owner固定データベースロールのメンバーは、データベースのすべての構成およびメンテナンスアクティビティを実行でき、データベースを削除することもできます。
それぞれのロールのチェックボックスをオンにしても影響はありません