Autorizzazione VIEW ANY DATABASE
L'autorizzazione VIEW ANY DATABASE è una nuova autorizzazione a livello server. Un account di accesso dotato di questa autorizzazione è in grado di visualizzare i metadati che descrivono tutti i database, indipendentemente dal fatto che l'account possieda o possa effettivamente utilizzare un determinato database.
L'autorizzazione VIEW ANY DATABASE regola l'esposizione dei metadati nelle viste sys.databases e sys.sysdatabases e nella stored procedure di sistema sp_helpdb.
Per impostazione predefinita, l'autorizzazione VIEW ANY DATABASE viene concessa al ruolo public. Pertanto, per impostazione predefinita, ogni utente che si connette a un'istanza di SQL Server è in grado di visualizzare tutti i database nell'istanza. Per verificare questo comportamento, eseguire la query seguente:
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
Per concedere l'autorizzazione VIEW ANY DATABASE a un account di accesso specifico, eseguire la query seguente:
GRANT VIEW ANY DATABASE TO <login>;
I metadati che descrivono i database master e tempdb sono sempre visibili a public.
I membri del ruolo predefinito del server sysadmin possono sempre visualizzare tutti i metadati del database.
I proprietari del database possono sempre visualizzare le righe in sys.databases per i database di loro proprietà.
La concessione delle autorizzazioni CREATE DATABASE e ALTER ANY DATABASE a un account di accesso consente di accedere ai metadati del database.
[!NOTA]
L'autorizzazione CREATE DATABASE è implicita nel ruolo predefinito del server dbcreator.
[!NOTA]
Se si concedono le autorizzazioni CREATE DATABASE e ALTER ANY DATABASE a un account di accesso senza negare l'autorizzazione VIEW ANY DATABASE, l'account di accesso potrà visualizzare tutte le righe in sys.databases.
Per limitare la visibilità dei metadati del database, negare a un account di accesso l'autorizzazione VIEW ANY DATABASE. Dopo che questa autorizzazione è stata negata, un account di accesso potrà visualizzare solo i metadati dei database master e tempdb e dei database di sua proprietà. Per ulteriori informazioni, vedere DENY - autorizzazioni per server (Transact-SQL).