Разрешение VIEW ANY DATABASE
VIEW ANY DATABASE — это новое разрешение уровня сервера. Имя входа, которому предоставлено это разрешение, может просматривать метаданные, описывающие все базы данных, независимо от того, кому они принадлежат, и имеет ли имя входа доступ к этим базам данных.
Разрешение VIEW ANY DATABASE регулирует возможность просмотра метаданных в представлениях sys.databases и 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 для имени входа подразумевает доступ к метаданным таблицы.
Примечание |
---|
Разрешение CREATE DATABASE неявно предоставлено предопределенной роли сервера dbcreator. |
Примечание |
---|
Если предоставить имени входа разрешения CREATE DATABASE и ALTER ANY DATABASE и не отменить разрешение VIEW ANY DATABASE, имя входа сможет увидеть все строки представления sys.databases. |
Чтобы ограничить видимость метаданных, запретите разрешение VIEW ANY DATABASE для имени входа. После отказа в этом разрешении для имени входа доступны только метаданные баз данных master, tempdb и баз данных, владельцем которых оно является. Дополнительные сведения см. в разделе DENY, запрет разрешений на сервере (Transact-SQL).
См. также