Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Возвращает по одной строке для каждого разрешения или разрешения-исключения уровня столбца в базе данных. Для столбцов в представлении каталога содержится по одной строке на каждое разрешение, которое отличается от соответствующего разрешения уровня объекта. Если разрешение столбца совпадает с соответствующим разрешением объекта, строка для нее отсутствует, а разрешение применяется к объекту.
Important
Разрешения уровня столбца переопределяют разрешения уровня объекта на ту же сущность.
| Имя столбца | Тип данных | Description |
|---|---|---|
| class | tinyint | Указывает класс, на который существует разрешение. Дополнительные сведения см. в разделе sys.securable_classes (Transact-SQL). 0 = база данных; 1 = объект или столбец 3 = схема 4 = Участник базы данных 5 = сборка — применяется к: SQL Server 2008 (10.0.x) и более поздним версиям. 6 = Тип 10 = коллекция схем XML — Область применения: SQL Server 2008 (10.0.x) и более поздних версий. 15 = Тип сообщения — применяется к: SQL Server 2008 (10.0.x) и более поздним версиям. 16 = Контракт службы — применяется к: SQL Server 2008 (10.0.x) и более поздним версиям. 17 = Служба — применяется к: SQL Server 2008 (10.0.x) и более поздним версиям. 18 = привязка удаленной службы. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям. 19 = маршрут — применяется к: SQL Server 2008 (10.0.x) и более поздним версиям. 23 =Полнотекстовый каталог. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям. 24 = симметричный ключ. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям. 25 = сертификат — применяется к: SQL Server 2008 (10.0.x) и более поздних версий. 26 = асимметричный ключ. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям. 29 = Полный список стоп-слов. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям. 31 = список свойств поиска. Применяется к: SQL Server 2008 (10.0.x) и более поздним версиям. 32 = учетные данные в области базы данных. Применяется к: SQL Server 2016 (13.x) и более поздним версиям. 34 = внешний язык— применяется к: SQL Server 2019 (15.x) и более поздним версиям. |
| class_desc | nvarchar(60) | Описание класса, на который существует разрешение. DATABASE OBJECT_OR_COLUMN SCHEMA DATABASE_PRINCIPAL ASSEMBLY TYPE XML_SCHEMA_COLLECTION MESSAGE_TYPE SERVICE_CONTRACT SERVICE REMOTE_SERVICE_BINDING ROUTE FULLTEXT_CATALOG SYMMETRIC_KEYS CERTIFICATE ASYMMETRIC_KEY ПОЛНЫЙ СПИСОК СТОП-СПИСКОВ СПИСОК ДЛЯ ПОИСКА НЕДВИЖИМОСТИ УЧЕТНЫЕ ДАННЫЕ В ПРЕДЕЛАХ БАЗЫ ДАННЫХ ВНЕШНИЙ ЯЗЫК |
| major_id | int | Идентификатор предмета, на который существует разрешение, интерпретируется в соответствии с классом. Как правило, просто тип идентификатора, major_id который применяется к тому, что представляет класс. 0 = сама база данных >0 = идентификаторы объектов пользователя <0 = идентификаторы объектов для системных объектов |
| minor_id | int | Вторичный идентификатор предмета, на который существует разрешение, интерпретируется согласно классу. Часто значение равно нулю, minor_id так как для класса объекта отсутствует подкатегория. В противном случае это идентификатор столбца таблицы. |
| grantee_principal_id | int | Идентификатор участника базы данных, которому предоставлено разрешение. |
| grantor_principal_id | int | Идентификатор участника базы данных, который предоставил данное разрешение. |
| type | char(4) | Тип разрешения в базе данных. Список типов разрешений см. в следующей таблице. |
| permission_name | nvarchar(128) | Имя разрешения. |
| state | char(1) | Разрешение указано: D = запретить R = отменить G = предоставить W = параметр Grant With Grant |
| state_desc | nvarchar(60) | Описание состояния разрешения: DENY REVOKE GRANT GRANT_WITH_GRANT_OPTION |
Разрешения базы данных
Возможны следующие типы разрешений.
| Тип разрешения | Имя разрешения | Применяется к защищаемому объекту |
|---|---|---|
| AADS | ИЗМЕНИТЬ ЛЮБОЙ СЕССИЮ СОБЫТИЯ БАЗЫ ДАННЫХ | DATABASE |
| AAMK | ИЗМЕНИТЬ ЛЮБУЮ МАСКУ | DATABASE |
| AEDS | ИЗМЕНЕНИЕ ЛЮБОГО ВНЕШНЕГО ИСТОЧНИКА ДАННЫХ | DATABASE |
| AEFF | ИЗМЕНИТЬ ЛЮБОЙ ВНЕШНИЙ ФОРМАТ ФАЙЛА | DATABASE |
| AL | ALTER | РОЛЬ ПРИЛОЖЕНИЯ, СБОРКА, АСИММЕТРИЧНЫЙ КЛЮЧ, СЕРТИФИКАТ, КОНТРАКТ, БАЗА ДАННЫХ, ПОЛНОТЕКСТОВЫЙ КАТАЛОГ, ТИП СООБЩЕНИЯ, ОБЪЕКТ, УДАЛЕННАЯ ПРИВЯЗКА СЛУЖБЫ, РОЛЬ, МАРШРУТ, СХЕМА, СЛУЖБА, СИММЕТРИЧНЫЙ КЛЮЧ, ПОЛЬЗОВАТЕЛЬ, КОЛЛЕКЦИЯ СХЕМ XML |
| ALAK | Изменить любой асимметричный ключ | DATABASE |
| ALAR | ИЗМЕНИТЬ ЛЮБУЮ РОЛЬ ПРИЛОЖЕНИЯ | DATABASE |
| ALAS | ИЗМЕНИТЬ ЛЮБУЮ СБОРКУ | DATABASE |
| ALCF | ИЗМЕНИТЬ ЛЮБОЙ СЕРТИФИКАТ | DATABASE |
| ALDS | ИЗМЕНИТЬ ЛЮБОЕ ПРОСТРАНСТВО ДАННЫХ | DATABASE |
| ALED | Изменение любых уведомлений о событиях базы данных (ALTER ANY DATABASE EVENT NOTIFICATION) | DATABASE |
| ALFT | ИЗМЕНИТЬ ЛЮБОЙ ПОЛНОТЕКСТОВЫЙ КАТАЛОГ | DATABASE |
| ALMT | ИЗМЕНЯТЬ ЛЮБОЙ ТИП СООБЩЕНИЯ | DATABASE |
| ALRL | ИЗМЕНИТЬ ЛЮБУЮ РОЛЬ | DATABASE |
| ALRT | ИЗМЕНИТЬ ЛЮБОЙ МАРШРУТ | DATABASE |
| ALSB | ИЗМЕНИТЬ ЛЮБУЮ УДАЛЕННУЮ СВЯЗЬ СЕРВИСА | DATABASE |
| ALSC | ИЗМЕНЯТЬ ЛЮБОЙ КОНТРАКТ | DATABASE |
| ALSK | ИЗМЕНИТЬ ЛЮБОЙ СИММЕТРИЧНЫЙ КЛЮЧ | DATABASE |
| ALSM | ИЗМЕНИТЬ ЛЮБУЮ СХЕМУ | DATABASE |
| ALSV | ИЗМЕНЕНИЕ ЛЮБОЙ СЛУЖБЫ | DATABASE |
| ALTG | ИЗМЕНИТЬ ЛЮБОЙ ТРИГГЕР DDL БАЗЫ ДАННЫХ | DATABASE |
| ALUS | ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ | DATABASE |
| AUTH | AUTHENTICATE | DATABASE |
| BADB | РЕЗЕРВНОЕ КОПИРОВАНИЕ БАЗЫ ДАННЫХ | DATABASE |
| BALO | ЖУРНАЛ РЕЗЕРВНОГО КОПИРОВАНИЯ | DATABASE |
| CL | CONTROL | РОЛЬ ПРИЛОЖЕНИЯ, СБОРКА, АСИММЕТРИЧНЫЙ КЛЮЧ, СЕРТИФИКАТ, КОНТРАКТ, БАЗА ДАННЫХ, ПОЛНОТЕКСТОВЫЙ КАТАЛОГ, ТИП СООБЩЕНИЯ, ОБЪЕКТ, УДАЛЕННАЯ ПРИВЯЗКА СЛУЖБЫ, РОЛЬ, МАРШРУТ, СХЕМА, СЛУЖБА, СИММЕТРИЧНЫЙ КЛЮЧ, ТИП, ПОЛЬЗОВАТЕЛЬ, КОЛЛЕКЦИЯ СХЕМ XML |
| CO | CONNECT | DATABASE |
| CORP | РЕПЛИКАЦИЯ CONNECT | DATABASE |
| CP | CHECKPOINT | DATABASE |
| CRAG | СОЗДАТЬ АГГРЕГАТ | DATABASE |
| CRAK | СОЗДАНИЕ АСИММЕТРИЧНОГО КЛЮЧА | DATABASE |
| CRAS | СОЗДАНИЕ СБОРКИ | DATABASE |
| CRCF | СОЗДАТЬ СЕРТИФИКАТ | DATABASE |
| CRDB | СОЗДАТЬ БАЗУ ДАННЫХ | DATABASE |
| CRDF | СОЗДАТЬ ПО УМОЛЧАНИЮ | DATABASE |
| CRED | СОЗДАНИЕ УВЕДОМЛЕНИЯ О СОБЫТИЯХ БАЗЫ ДАННЫХ DDL | DATABASE |
| CRFN | СОЗДАТЬ ФУНКЦИЮ | DATABASE |
| CRFT | СОЗДАНИЕ КАТАЛОГА FULLTEXT | DATABASE |
| CRMT | СОЗДАТЬ ТИП СООБЩЕНИЯ | DATABASE |
| CRPR | СОЗДАТЬ ПРОЦЕДУРУ | DATABASE |
| CRQU | СОЗДАНИЕ ОЧЕРЕДИ | DATABASE |
| CRRL | СОЗДАТЬ РОЛЬ | DATABASE |
| CRRT | СОЗДАТЬ МАРШРУТ | DATABASE |
| CRRU | СОЗДАНИЕ ПРАВИЛА | DATABASE |
| CRSB | СОЗДАНИЕ ПРИВЯЗКИ К УДАЛЕННОЙ СЛУЖБЕ | DATABASE |
| CRSC | Создать договор | DATABASE |
| CRSK | СОЗДАНИЕ СИММЕТРИЧНОГО КЛЮЧА | DATABASE |
| CRSM | СОЗДАТЬ СХЕМУ | DATABASE |
| CRSN | СОЗДАТЬ СИНОНИМ | DATABASE |
| CRSO |
Применимо: SQL Server 2012 (11.x) и более поздних версий. СОЗДАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ |
DATABASE |
| CRSV | Создать сервис | DATABASE |
| CRTB | CREATE TABLE | DATABASE |
| CRTY | СОЗДАТЬ ТИП | DATABASE |
| CRVW | СОЗДАТЬ ПРЕДСТАВЛЕНИЕ | DATABASE |
| CRXS |
Область применения: SQL Server 2008 (10.0.x) и более поздних версий. СОЗДАТЬ КОЛЛЕКЦИЮ XML-СХЕМ |
DATABASE |
| DABO | УПРАВЛЕНИЕ МАССОВЫМИ ОПЕРАЦИЯМИ С БАЗОЙ ДАННЫХ | DATABASE |
| DL | DELETE | БАЗА ДАННЫХ, ОБЪЕКТ, СХЕМА |
| EAES | ВЫПОЛНИТЬ ЛЮБОЙ ВНЕШНИЙ СКРИПТ | DATABASE |
| EX | EXECUTE | АССЕМБЛЕР, БАЗА ДАННЫХ, ОБЪЕКТ, СХЕМА, ТИП, КОЛЛЕКЦИЯ СХЕМ XML |
| IM | IMPERSONATE | USER |
| IN | INSERT | БАЗА ДАННЫХ, ОБЪЕКТ, СХЕМА |
| RC | RECEIVE | OBJECT |
| RF | REFERENCES | АССЕМБЛЕР, АСИММЕТРИЧНЫЙ КЛЮЧ, СЕРТИФИКАТ, КОНТРАКТ, БАЗА ДАННЫХ, ПОЛНОТЕКСТОВЫЙ КАТАЛОГ, ТИП СООБЩЕНИЯ, ОБЪЕКТ, СХЕМА, СИММЕТРИЧНЫЙ КЛЮЧ, ТИП, КОЛЛЕКЦИЯ XML-СХЕМ |
| SL | SELECT | БАЗА ДАННЫХ, ОБЪЕКТ, СХЕМА |
| SN | SEND | SERVICE |
| SPLN | SHOWPLAN | DATABASE |
| SUQN | УВЕДОМЛЕНИЯ О ЗАПРОСЕ НА ПОДПИСКУ | DATABASE |
| TO | ВОЗЬМИТЕ ОТВЕТСТВЕННОСТЬ | АССЕМБЛЕР, АСИММЕТРИЧНЫЙ КЛЮЧ, СЕРТИФИКАТ, КОНТРАКТ, БАЗА ДАННЫХ, ПОЛНОТЕКСТОВЫЙ КАТАЛОГ, ТИП СООБЩЕНИЯ, ОБЪЕКТ, ПРИВЯЗКА УДАЛЁННЫХ СЕРВИСОВ, РОЛЬ, МАРШРУТ, СХЕМА, СЕРВИС, СИММЕТРИЧНЫЙ КЛЮЧ, ТИП, КОЛЛЕКЦИЯ XML-СХЕМ |
| UP | UPDATE | БАЗА ДАННЫХ, ОБЪЕКТ, СХЕМА |
| VW | ПРЕДСТАВЛЕНИЕ ОПРЕДЕЛЕНИЯ | РОЛЬ ПРИЛОЖЕНИЯ, СБОРКА, АСИММЕТРИЧНЫЙ КЛЮЧ, СЕРТИФИКАТ, КОНТРАКТ, БАЗА ДАННЫХ, ПОЛНОТЕКСТОВЫЙ КАТАЛОГ, ТИП СООБЩЕНИЯ, ОБЪЕКТ, УДАЛЕННАЯ ПРИВЯЗКА СЛУЖБЫ, РОЛЬ, МАРШРУТ, СХЕМА, СЛУЖБА, СИММЕТРИЧНЫЙ КЛЮЧ, ТИП, ПОЛЬЗОВАТЕЛЬ, КОЛЛЕКЦИЯ СХЕМ XML |
| VWCK | ПРОСМОТР ОПРЕДЕЛЕНИЯ КЛЮЧА ШИФРОВАНИЯ СТОЛБЦА | DATABASE |
| VWCM | ПРОСМОТР ОПРЕДЕЛЕНИЯ ГЛАВНОГО КЛЮЧА СТОЛБЦА | DATABASE |
| VWCT | ПРОСМОТР ИЗМЕНЕНИЙ | СТОЛ, ШЕМА |
| VWDS | ПРОСМОТР СОСТОЯНИЯ БАЗЫ ДАННЫХ | DATABASE |
РАЗРЕШЕНИЯ НА ОТМЕНУ и исключение столбцов
В большинстве случаев команда REVOKE удаляет запись GRANT или DENY из sys.database_permissions.
Однако разрешения GRANT или DENY для объекта можно ПРЕДОСТАВИТЬ или ЗАПРЕТить, а затем ОТМЕНИТЬ это разрешение для столбца. Это разрешение на исключение столбцов будет отображаться как REVOKE в sys.database_permissions. Рассмотрим следующий пример:
GRANT SELECT ON Person.Person TO [Sales];
REVOKE SELECT ON Person.Person(AdditionalContactInfo) FROM [Sales];
Эти разрешения будут отображаться в sys.database_permissions в виде одного GRANT (в таблице) и одного ОТЗЫВА (в столбце).
Important
REVOKE отличается от DENY, так как субъект Sales может по-прежнему иметь доступ к столбцу с помощью других разрешений. Если бы мы отрицали разрешения, а не отменяли их, Sales не сможет просматривать содержимое столбца, так как DENY всегда заменяет GRANT.
Permissions
Любой пользователь может видеть свои собственные разрешения. Для просмотра разрешений для другого пользователя необходимо иметь разрешение VIEW DEFINITION или ALTER ANY USER либо любое разрешение на доступ к данным пользователя. Для просмотра определяемых пользователем ролей необходимо иметь разрешение ALTER ANY ROLE или быть членом роли (например, public).
Видимость метаданных в представлениях каталога ограничена защищаемыми объектами, которыми владеет пользователь или которым пользователь получил некоторое разрешение. Дополнительные сведения см. в разделе Metadata Visibility Configuration.
Examples
A. Список всех разрешений субъектов базы данных
Следующий запрос перечисляет разрешения, явно предоставленные или отклоненные для участников базы данных.
Important
Разрешения фиксированных ролей базы данных не отображаются sys.database_permissions. Поэтому участники базы данных могут иметь дополнительные разрешения, не перечисленные здесь.
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id;
B. Перечисление разрешений на объекты схемы в базе данных
Следующий запрос объединяет sys.database_principals и sys.database_permissionssys.objects и sys.schemas для перечисления разрешений, предоставленных или запрещенных для определенных объектов схемы.
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id;
C. Вывод списка разрешений для определенного объекта
Предыдущий пример можно использовать для запроса разрешений, относящихся к одному объекту базы данных.
Например, рассмотрим следующие детализированные разрешения, предоставленные пользователю test базы данных в примере базы данныхAdventureWorksDW2025:
GRANT SELECT ON dbo.vAssocSeqOrders TO [test];
Найдите детализированные разрешения, назначенные dbo.vAssocSeqOrders:
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE o.name = 'vAssocSeqOrders'
AND s.name = 'dbo';
Возвращает выходные данные:
principal_id name type_desc authentication_type_desc state_desc permission_name ObjectName
5 test SQL_USER INSTANCE GRANT SELECT dbo.vAssocSeqOrders
См. также
- Securables
- Иерархия разрешений (ядро СУБД)
- Представления каталога безопасности (Transact-SQL)
- Представления каталога (Transact-SQL)