現在、標準のActive Directoryアカウント「ドメインユーザー」によって会社の全員に対するSELECTを拒否するように設定されているテーブルSuperSecretDataがあります。しかし、いくつかの特定の個人ユーザーは、そこからSELECTできる必要があります。これを達成する適切な方法は何ですか?
DENYはGRANTをオーバーライドし、継承されたDENYは直接GRANTをオーバーライドします。また、スキーマレベルまたはデータベースレベルのDENYは、オブジェクトレベルのGRANTをオーバーライドします。
したがって、DENYを直接オーバーライドすることはできません。
SuperSecretDataと同じユーザーが所有するビュー、シノニム、またはストアドプロシージャを作成し、それらへのアクセスを許可できます。
sQLサーバー上のほぼすべてのエンティティに対してSELECTを "ドメインユーザー"に付与するより良い方法はありますか。
はい。組み込みの役割は使用せず、常にスキーマレベルの付与を使用してください。その後、セキュリティを強化するために個別のスキーマを作成できます。例えば
grant select on schema::dbo to ...
組み込みの役割の代わりに
alter role db_datareader add . . .
またはデータベースレベルの付与
grant select to ...