Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Безопасность Column-Level позволяет пользователям управлять доступом к столбцам таблицы на основе контекста выполнения задач или членства в группах.
Безопасность на уровне столбцов упрощает проектирование и кодирование безопасности в приложении, что позволяет ограничить доступ к столбцам для защиты конфиденциальных данных. Например, убедитесь, что определенные пользователи могут получить доступ только к определенным столбцам таблицы, соответствующей их отделу. Логика ограничения доступа реализована на уровне базы данных, а не в отрыве от данных на другом уровне приложений. База данных применяет ограничения доступа при каждом попытке доступа к данным с любого уровня. Это ограничение делает безопасность более надежной и надежной, уменьшая область поверхности общей системы безопасности. Кроме того, безопасность на уровне столбцов устраняет необходимость внедрения представлений для фильтрации столбцов при применении ограничений доступа для пользователей.
Вы можете реализовать безопасность на уровне столбцов с помощью синтаксиса GRANT Object Permissions T-SQL. С помощью этого механизма поддерживаются как аутентификация SQL, так и аутентификация Microsoft Entra ID (ранееAzure Active Directory).
Рассмотрите также возможность включения безопасности на уровне строк в таблицах на основе фильтра по условию WHERE
.
Синтаксис
Синтаксис инструкции GRANT
для разрешений объекта позволяет предоставлять разрешения спискам столбцов с разделителями-запятыми в таблице.
GRANT <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO <database_principal> [ ,...n ]
[ WITH GRANT OPTION ]
[ AS <database_principal> ]
<permission> ::=
SELECT
| UPDATE
<database_principal> ::=
Database_user
| Database_role
| Database_user_mapped_to_Windows_User
| Database_user_mapped_to_Windows_Group
Примеры
В следующем примере показано, как ограничить доступ пользователя TestUser
к столбцу SSN
таблицы Membership
:
Создайте таблицу Membership
с столбцом SSN
, используемым для хранения номеров социального страхования:
CREATE TABLE Membership
(MemberID int IDENTITY,
FirstName varchar(100) NULL,
SSN char(9) NOT NULL,
LastName varchar(100) NOT NULL,
Phone varchar(12) NULL,
Email varchar(100) NULL);
Разрешить TestUser
доступ ко всем столбцам , кроме для столбца SSN
с конфиденциальными данными:
GRANT SELECT ON Membership(MemberID, FirstName, LastName, Phone, Email) TO TestUser;
Запросы, выполняемые с помощью TestUser
, завершаются ошибкой, если они включают столбец SSN
:
SELECT * FROM Membership;
С возникшей ошибкой:
Msg 230, Level 14, State 1, Line 12
The SELECT permission was denied on the column 'SSN' of the object 'Membership', database 'CLS_TestDW', schema 'dbo'.
Случаи использования
Некоторые примеры использования безопасности на уровне столбцов сегодня:
- Фирма по финансовым услугам позволяет только руководителям учетных записей иметь доступ к номерам социального страхования клиентов (SSN), номерам телефонов и другим персональным данным.
- Поставщик медицинских услуг позволяет только врачам и медсестрам иметь доступ к конфиденциальным медицинским записям, не позволяя членам отдела выставления счетов просматривать эти данные.