Безопасность на уровне таблиц, столбцов и строк в OneLake

Роли безопасности OneLake определяют, кто имеет доступ к данным в ваших элементах Fabric. Иногда предоставление или отказ в доступе к целому предмету — это слишком грубо. Возможно, придётся скрывать чувствительные столбцы, ограничивать видные строки пользователем или показывать только определённые таблицы. Внутри роли вы можете уточнять доступ на трёх уровнях детализации: безопасность на уровне объекта для таблиц и папок, безопасность на уровне столбцов (CLS) для отдельных столбцов и безопасность на уровне строк (RLS) для отдельных строк.

В этой статье объясняется, что делает каждый элемент управления и как OneLake обеспечивает его применение. Чтобы написать эти элементы контроля, см. раздел «Создание и управление ролями безопасности OneLake».

Роли безопасности OneLake используют модель предоставления прав доступа для предоставления доступа к данным. Вы не можете отказать в доступе, предоставленном через другую модель роли или разрешения. По этой причине эти элементы управления не ограничивают доступ для пользователей с ролями Admin, Member и Contributor на уровне рабочего пространства.

Безопасность таблиц и папок

Безопасность на уровне таблиц и папок, также называемая объектной безопасностью (OLS), позволяет предоставлять доступ к определённым таблицам или папкам в элементе данных. С помощью OLS вы создаёте права на структурированные и неструктурированные данные на уровне папок. Поскольку таблицы Delta Parquet в OneLake представлены в виде папок, вы можете защитить таблицы так же, как папки. Схемы — это тоже папки, так что их можно защитить так же.

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

Средства безопасности OneLake обеспечивают защиту на уровне столбцов и строк одним из двух способов:

  • Таблицы фильтров: Пользователь, который делает запросы к таблице с помощью движка Fabric, например Spark notebooks или авторизованного стороннего движка, видит только те столбцы или строки, которые разрешены правилами CLS или RLS.
  • Блочные таблицы: Пользователь, который запрашивает таблицу с помощью неавторизованного стороннего движка, не может прочитать таблицу.

Средства безопасности OneLake позволяют принудительно применять правила CLS и RLS к таблицам Delta Parquet или виртуализированным таблицам Iceberg. Правила, применяемые к другим типам таблиц, блокируют доступ ко всей таблице для участников роли.

Если правило CLS или RLS не совпадает с таблицей, на которой оно определёно, запрос не проходит и не возвращает данных. Например, несоответствие возникает, когда правило ссылается на столбца, которого нет в таблице.

Безопасность на уровне столбцов

Безопасность на уровне столбцов (CLS) предоставляет доступ к выбранным столбцам в таблице вместо полной таблицы. Данные в столбцах, которые вы удаляете из разрешённого списка, не видны пользователям.

Для таблиц, отфильтрованных с помощью CLS, применяются следующие поведения:

  • Если пользователь запускает select * запрос в таблице, где у него есть доступ только к некоторым столбцам, правила CLS ведут себя по-разному в зависимости от движка Fabric:
    • Spark notebooks: запрос проходит успешно и показывает только разрешённые столбцы.
    • SQL analytics endpoint: запрос возвращает ошибку и блокирует доступ к столбцам, к которым пользователь не может получить доступ.
    • Семантические модели: запрос возвращает ошибку и блокирует доступ к столбцам, к которым пользователь не может получить доступ.
  • Название защищённой колонки может быть видно в некоторых случаях, но значения данных никогда не отображаются.

Безопасность на уровне строк

Безопасность на уровне строк (RLS) определяет ограничения по данным на уровне строк для табличных данных, хранящихся в OneLake. Вы определяете роли, содержащие правила фильтрации строк данных для членов роли. Когда участник роли RLS делает запрос к данным, OneLake оценивает правила RLS и возвращает только разрешённые строки. Строки — это понятие, релевантное только табличным данным, поэтому вы не можете определить RLS для папок без таблицы или неструктурированных данных.

Для таблиц, отфильтрованных с помощью RLS, применимы следующие поведения:

  • Доступ к таблице может быть заблокирован, если инструкция RLS содержит синтаксические ошибки, которые препятствуют его оценке.

Для синтаксиса, используемого для написания правил RLS, см. ссылку на синтаксис безопасности на уровне строк.

Роли RLS не поддерживают динамические и многотабличные запросы.

Объедините безопасность на уровне строк и на уровне столбцов

Безопасность на уровне строк и на уровне столбцов можно использовать вместе для ограничения доступа пользователей к таблице. Однако обе политики должны применяться с использованием единой роли безопасности OneLake. В этом сценарии доступ к данным ограничен в соответствии с правилами, заданными в одной роли.

Безопасность OneLake не поддерживает сочетание двух или нескольких ролей, в которых один содержит правила RLS, а другой — правила CLS. Пользователи, пытающиеся получить доступ к таблицам, которые являются частью неподдерживаемой комбинации ролей, получают ошибки запроса.