Реализация безопасности на уровне строк

Применимо к:✅ Конечная точка аналитики SQL и хранилище в Microsoft Fabric

Безопасность на уровне строк (RLS) в хранилище Fabric и конечная точка аналитики SQL позволяет управлять доступом к строкам в таблице базы данных на основе ролей пользователей и предикатов. Дополнительные сведения см. в разделе "Безопасность на уровне строк" в хранилище данных Fabric.

В этом руководстве описаны шаги по реализации безопасности на уровне строк в хранилище Microsoft Fabric или конечной точке аналитики SQL.

Prerequisites

Прежде чем начать, убедитесь, что у вас есть следующее:

  1. Рабочая область Fabric с активной мощностью или пробной вместимостью.
  2. Конечная точка хранилища Fabric или SQL-аналитики в Lakehouse.
  3. Либо права администратора, члена или участника в рабочей области, либо повышенные разрешения на конечную точку хранилища или аналитики SQL.

1. Подключение

  1. Войдите с помощью учетной записи с повышенными привилегиями в конечной точке хранилища или аналитики SQL. (Роль администратора, участника или сотрудника в рабочем пространстве или управление разрешениями в конечной точке хранилища или SQL-аналитики).
  2. Откройте рабочую область Fabric и перейдите к конечной точке хранилища или аналитики SQL, где необходимо применить безопасность на уровне строк.

2. Определение политик безопасности

  1. Определите роли и предикаты, которые вы хотите использовать для управления доступом к данным. Роли определяют, кто может получать доступ к данным, и предикаты определяют критерии доступа.

  2. Создайте предикаты безопасности. Предикаты безопасности — это условия, определяющие, к каким строкам пользователь может получить доступ. Вы можете создавать предикаты безопасности в виде встроенных табличных функций.

    -- 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()
    OR USER_NAME() = 'BatchProcess@contoso.com';
    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 
    
  3. Замените YourSecurityPolicy на имя вашей политики, tvf_securitypredicate на имя вашей функции-предиката, sampleschema на имя вашей схемы и sampletable на имя вашей целевой таблицы.

  4. В этом упражнении предполагается, что в таблице данных есть столбец, UserName_column, содержащий соответствующее имя пользователя, заполненный системной функцией USER_NAME(). Замените UserName_column на столбец в вашей таблице, который содержит имена пользователей.

  5. Замените WHERE @UserName = USER_NAME(); предложением WHERE , соответствующим требуемому фильтру безопасности на основе предиката. Например, это фильтрует данные, в которых UserName столбец, сопоставленный с @UserName параметром, соответствует результату системной функции USER_NAME().

    • WHERE При необходимости инструкция также включает исключение для имени пользователя удостоверения с управляемой идентичностью, которое обрабатывает перемещение данных, напримерBatchProcess@contoso.com.
  6. Повторите эти действия, чтобы создать политики безопасности для других таблиц при необходимости.

3. Проверка безопасности на уровне строк

  1. Войдите в Fabric как пользователь, который является членом роли с связанной политикой безопасности. Используйте следующий запрос, чтобы проверить значение, которое должно соответствовать в таблице.

    SELECT USER_NAME() 
    
  2. Запросите таблицы базы данных, чтобы убедиться, что безопасность на уровне строк работает должным образом. Пользователи должны видеть только данные, удовлетворяющие предикату безопасности, определенному в их роли. Рассмотрим пример.

    SELECT * FROM sampleschema.sampletable
    
  3. Аналогичные отфильтрованные результаты для пользователя будут отфильтрованы другими приложениями, используюющими проверку подлинности Microsoft Entra для доступа к базе данных. Дополнительные сведения см. в статье "Проверка подлинности Microsoft Entra" в качестве альтернативы проверке подлинности SQL в Microsoft Fabric.

4. Мониторинг и поддержание безопасности на уровне строк

Регулярно отслеживайте и обновляйте политики безопасности на уровне строк по мере развития требований безопасности. Следите за назначениями ролей и убедитесь, что у пользователей есть соответствующий доступ.