Реализация безопасности на уровне строк в хранилище данных Microsoft Fabric
Область применения:✅ конечная точка аналитики SQL и хранилище в Microsoft Fabric
Безопасность на уровне строк (RLS) в хранилище Fabric и конечная точка аналитики SQL позволяет управлять доступом к строкам в таблице базы данных на основе ролей пользователей и предикатов. Дополнительные сведения см. в разделе "Безопасность на уровне строк" в хранилище данных Fabric.
В этом руководстве описаны шаги по реализации безопасности на уровне строк в хранилище Microsoft Fabric или конечной точке аналитики SQL.
Необходимые компоненты
Прежде чем начать, убедитесь, что у вас есть следующее:
- Рабочая область Fabric с активной емкостью или пробной емкостью.
- Конечная точка хранилища Fabric или аналитики SQL в Lakehouse.
- Права администратора, члена или участника в рабочей области или повышенные разрешения на конечную точку хранилища или аналитики SQL.
1. Подключение
- Войдите с помощью учетной записи с повышенными привилегиями в конечной точке хранилища или аналитики SQL. (Роль администратора или участника в рабочей области или разрешения на управление в конечной точке хранилища или аналитики SQL).
- Откройте рабочую область Fabric и перейдите к конечной точке хранилища или аналитики SQL, где необходимо применить безопасность на уровне строк.
2. Определение политик безопасности
Определите роли и предикаты, которые вы хотите использовать для управления доступом к данным. Роли определяют, кто может получать доступ к данным, и предикаты определяют критерии доступа.
Создайте предикаты безопасности. Предикаты безопасности — это условия, определяющие, к каким строкам пользователь может получить доступ. Вы можете создавать предикаты безопасности как встроенные табличные функции. В этом простом упражнении предполагается, что в таблице данных есть столбец,
UserName_column
содержащий соответствующее имя пользователя, заполненное системной функцией USER_NAME().-- Creating schema for Security CREATE SCHEMA Security; GO -- Creating a function for the SalesRep evaluation CREATE FUNCTION Security.tvf_securitypredicate(@UserName AS varchar(50)) RETURNS TABLE WITH SCHEMABINDING AS RETURN SELECT 1 AS tvf_securitypredicate_result WHERE @UserName = USER_NAME(); GO -- Using the function to create a Security Policy CREATE SECURITY POLICY YourSecurityPolicy ADD FILTER PREDICATE Security.tvf_securitypredicate(UserName_column) ON sampleschema.sampletable WITH (STATE = ON); GO
Замените
YourSecurityPolicy
имя политикиtvf_securitypredicate
на имя функцииsampleschema
предиката с именем схемы иsampletable
именем целевой таблицы.Замените
UserName_column
столбец в таблице, содержащей имена пользователей.Замените
WHERE @UserName = USER_NAME();
предложениемWHERE
, соответствующим требуемому фильтру безопасности на основе предиката. Например, это фильтрует данные, в которыхUserName
столбец, сопоставленный с@UserName
параметром, соответствует результату системной функции USER_NAME().Повторите эти действия, чтобы создать политики безопасности для других таблиц при необходимости.
3. Проверка безопасности на уровне строк
Войдите в Fabric как пользователь, который является членом роли с связанной политикой безопасности. Используйте следующий запрос, чтобы проверить значение, которое должно соответствовать в таблице.
SELECT USER_NAME()
Запросите таблицы базы данных, чтобы убедиться, что безопасность на уровне строк работает должным образом. Пользователи должны видеть только данные, удовлетворяющие предикату безопасности, определенному в их роли. Например:
SELECT * FROM sampleschema.sampletable
Аналогичные отфильтрованные результаты для пользователя будут отфильтрованы другими приложениями, используюющими проверку подлинности Microsoft Entra для доступа к базе данных. Дополнительные сведения см. в статье "Проверка подлинности Microsoft Entra" в качестве альтернативы проверке подлинности SQL в Microsoft Fabric.
4. Мониторинг и поддержание безопасности на уровне строк
Регулярно отслеживайте и обновляйте политики безопасности на уровне строк по мере развития требований безопасности. Следите за назначениями ролей и убедитесь, что у пользователей есть соответствующий доступ.