Autorisation VIEW ANY DATABASE
L'autorisation VIEW ANY DATABASE est une nouvelle autorisation au niveau du serveur. Une connexion qui reçoit cette autorisation peut afficher les métadonnées qui décrivent toutes les bases de données qu'elle en soit ou non la propriétaire ou qu'elle ait ou non le droit de l'utiliser.
L'autorisation VIEW ANY DATABASE régit l'exposition des métadonnées dans les vues sys.databases et sys.sysdatabases, et la procédure stockée système sp_helpdb.
Par défaut, l'autorisation VIEW ANY DATABASE est octroyée au rôle public. C'est pourquoi, par défaut, chaque utilisateur qui se connecte à une instance de SQL Server peut voir toutes les bases de données de cette instance. Pour vérifier ce comportement, exécutez la requête suivante :
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
Pour octroyer l'autorisation VIEW ANY DATABASE à une connexion spécifique, exécutez la requête suivante :
GRANT VIEW ANY DATABASE TO <login>;
Les métadonnées qui décrivent les bases de données master et tempdb sont toujours visibles pour le rôle public.
Les membres du rôle serveur fixe sysadmin peuvent toujours voir les métadonnées de toutes les bases de données.
Les propriétaires des bases de données peuvent toujours voir les lignes correspondant à leurs bases de données dans la vue sys.databases.
L'octroi des autorisations CREATE DATABASE et ALTER ANY DATABASE à une connexion donne accès aux métadonnées des bases de données.
[!REMARQUE]
L'autorisation CREATE DATABASE est implicitement octroyée au rôle serveur fixe dbcreator.
[!REMARQUE]
Si vous octroyez des autorisations CREATE DATABASE et ALTER ANY DATABASE à une connexion sans refuser VIEW ANY DATABASE, la connexion peut voir toutes les lignes de la vue sys.databases.
Pour limiter la visibilité aux métadonnées de base de données, refusez l'autorisation VIEW ANY DATABASE. La connexion ne pourra plus voir que les métadonnées des bases de données master, tempdb et des bases de données qui lui appartiennent. Pour plus d'informations, consultez DENY – refus d'autorisations de serveur (Transact-SQL).