Permiso VIEW ANY DATABASE

VIEW ANY DATABASE es un nuevo permiso de servidor. Si se otorga este permiso a un inicio de sesión, se podrán ver los metadatos que describen todas las bases de datos, independientemente de si el inicio de sesión es o no el propietario de una determinada base de datos o puede utilizarla realmente.

El permiso VIEW ANY DATABASE regula la exposición de metadatos en las vistas sys.databases y sys.sysdatabases, así como en el procedimiento almacenado del sistema sp_helpdb.

El permiso VIEW ANY DATABASE se concede de forma predeterminada a la función public. Por lo tanto, de manera predeterminada, cada usuario que se conecta a una instancia de SQL Server puede ver todas las bases de datos de esa instancia. Para comprobar este comportamiento, ejecute la siguiente consulta:

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

Para conceder el permiso VIEW ANY DATABASE a un inicio de sesión específico, ejecute la consulta siguiente:

GRANT VIEW ANY DATABASE TO <login>; 

Los metadatos que describen las bases de datos master y tempdb siempre están visibles para public.

Los miembros de la función fija de servidor sysadmin siempre pueden ver todos los metadatos de bases de datos.

Los propietarios de las bases de datos siempre pueden ver las filas de sys.databases de las bases de datos que les pertenecen.

La concesión de los permisos CREATE DATABASE y ALTER ANY DATABASE a un inicio de sesión le confieren acceso a los metadatos de la base de datos.

[!NOTA]

El permiso CREATE DATABASE es implícito a la función fija de servidor dbcreator.

[!NOTA]

Si concede los permisos CREATE DATABASE y ALTER ANY DATABASE a un inicio de sesión y no le deniega VIEW ANY DATABASE, el inicio de sesión podrá ver todas las filas de sys.databases.

Para limitar la visibilidad de los metadatos de la base de datos, se debe denegar el permiso VIEW ANY DATABASE a un inicio de sesión. Una vez denegado este permiso, un inicio de sesión sólo podrá ver los metadatos de master, tempdb y las bases de datos de las que sea propietario. Para obtener más información, vea DENY (permisos de servidor de Transact-SQL).