sys.tables
/ へのアクセスを無効にする最良の方法を探していますInformation Schema
SQL Serverのユーザー/グループのます。
見つけた は2008年からこのスレッド
次のようにアクセスを拒否する方法を示します[sys].[something]
。
DENY SELECT ON [sys].[columns] TO DenySystemTableSelectRole
GO
DENY SELECT ON [sys].[tables] TO DenySystemTableSelectRole
GO
DENY SELECT ON [sys].[syscolumns] TO DenySystemTableSelectRole
GO
DENY SELECT ON [sys].[sysobjects] TO DenySystemTableSelectRole
GO
しかし、アクセスを無効にする方法はありませんInformation Schema
:
DENY SELECT ON INFORMATION_SCHEMA.TABLES To DenySystemTableSelectRole
これは機能しないようです。
information_schemaへのアクセスを無効にするにはどうすればよいですか?
そして、すべてへのアクセスを無効にする簡単な方法がありますsys
/information_schema
?
更新: 実際には、次のステートメントの両方を実行することはできません。
DENY SELECT ON [sys] TO reducedDBO
GO
DENY SELECT ON INFORMATION_SCHEMA To reducedDBO
GO
ユーザーが存在する特定のDBでそれらを実行しようとし、「マスター」でも試しました。
私はまだ実行できます:
SELECT * from
INFORMATION_SCHEMA.TABLES
->まだ結果を返します
SELECT * from
sys.TABLES
->もう結果なし
SCHEMA::
クエリに含めると、セキュリティ保護可能なオブジェクトを作成できるようになりました
DENY SELECT ON SCHEMA::[sys] TO reducedDBO
GO
DENY SELECT ON SCHEMA::INFORMATION_SCHEMA To reducedDBO
GO
しかし、今でもDBからすべての情報を選択できます。
Management Studio 2008のユーザーのプロパティウィンドウで「セキュリティ保護可能な」タブを確認したところ、次のようになりました。
sys.tablesの選択をブロックするエントリ
スキーマ:sys、名前:テーブル、タイプ:ビュー
sys.tablesのアクセス許可:Permission:Select、Grantor:dbo、Denyがチェックされます
選択をブロックしないエントリ
スキーマ:、名前:INFORMATION_SCHEMA、タイプ:スキーマ
INFORMATION_SCHEMAの権限:Permission:Select、Grantor:dbo、Denyはチェックされません(チェックしようとしましたが、チャンスはありません。)
Permission:Select、Grantor:INFORMATION_SCHEMA、Denyがチェックされます
GUIでアクセス許可を設定しようとしましたが、アクセス許可の設定がマスターDBでのみ可能であるという同じエラーが表示されます。しかし、マスターDBセキュリティにユーザー/ログインを追加していません。
解決:
のdeny
作業を行うことができる唯一の方法は、ユーザーをmaster-dbinformation_schema
に追加し、マスターで実行することでしたdeny select
:
DENY SELECT ON [sys].[tables] TO reducedDBO
GO
DENY SELECT ON INFORMATION_SCHEMA.TABLES To reducedDBO
GO
また、このコードのように、単一のテーブルに対してのみ実行できます。