web-dev-qa-db-ja.com

db_datareader、db_datawriter、およびdb_owner権限

まず、私はDBAではなく、すべての権限に精通していません。

私の質問は、1つのデータベースに対するdb_owner権限をユーザーに付与する場合です。完全に制御するには、db_datareaderおよびdb_datawriter権限も与える必要がありますか? db_ownerは、データベースであらゆる種類のクエリを実行するのに十分だと思いますか? (作成、削除、変更、選択およびその他すべてのもの)。

つまり、db_ownerを選択すると、db_datareaderdb_datawriterが自動的に含まれます。私は正しいですか?

6
Ozkan

データベースレベルの役割 によると:

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
...         ...             ...
4

dont db_owner権限を付与している場合は、db_datareaderおよびdb_datawriter権限を付与する必要があります。 BOLによる

db_owner:

Db_owner固定データベースロールのメンバーは、データベースのすべての構成およびメンテナンスアクティビティを実行でき、データベースを削除することもできます。

それぞれのロールのチェックボックスをオンにしても影響はありません

3
Shanky