VIEW ANY DATABASE 権限
VIEW ANY DATABASE 権限は、新しいサーバーレベルの権限です。この権限を与えられたログインは、特定のデータベースを所有しているか、または実際にそのデータベースを使用できるかにかかわらず、すべてのデータベースを説明するメタデータを参照できます。
VIEW ANY DATABASE 権限により、sys.databases ビュー、sys.sysdatabases ビュー、および sp_helpdb システム ストアド プロシージャのメタデータの公開が制限されます。
既定では、VIEW ANY DATABASE 権限は public ロールに与えられます。そのため、既定では SQL Server のインスタンスに接続しているすべてのユーザーが、インスタンスのすべてのデータベースを参照できます。この動作を確認するには、次のクエリを実行します。
SELECT l.name as grantee_name, p.state_desc, p.permission_name
FROM sys.server_permissions AS p JOIN sys.server_principals AS l
ON p.grantee_principal_id = l.principal_id
WHERE permission_name = 'VIEW ANY DATABASE' ;
GO
VIEW ANY DATABASE 権限を特定のログインに与えるには、次のクエリを実行します。
GRANT VIEW ANY DATABASE TO <login>;
master データベースと tempdb データベースのメタデータは、常に public ロールに対して公開されます。
sysadmin 固定サーバー ロールのメンバーは、常にすべてのデータベースのメタデータを参照できます。
データベース所有者は、所有しているデータベースの行を常に sys.databases で参照できます。
CREATE DATABASE 権限と ALTER ANY DATABASE 権限をログインに与えると、データベースのメタデータにアクセスできるようになります。
注 |
---|
dbcreator 固定サーバー ロールには、既定で CREATE DATABASE 権限が与えられます。 |
注 |
---|
あるログインに CREATE DATABASE 権限と ALTER ANY DATABASE 権限を与え、そのログインの VIEW ANY DATABASE 権限を拒否しなかった場合、そのログインは sys.databases のすべての行を参照できます。 |
データベースのメタデータの公開を制限するには、ログインの VIEW ANY DATABASE 権限を拒否します。この権限が拒否された後、ログインがメタデータを参照できるのは、master データベース、tempdb データベース、およびログインが所有しているデータベースのみになります。詳細については、「DENY (サーバーの権限の拒否) (Transact-SQL)」を参照してください。