ClickHouse/docs/ru/sql-reference/statements/create/row-policy.md
Anna 13b292865f
DOCSUP-2029: Split create.md (#13302)
* Split create.md into separated files

* Fixed links

* Fixed a typo

* Fixed links

* Fixed link

Co-authored-by: Anna Devyatova <annadevyatova@yandex-team.ru>
2020-08-06 20:05:43 +03:00

2.7 KiB
Raw Blame History

toc_priority toc_title
7 Политика доступа

CREATE ROW POLICY

Создает фильтр для строк, которые пользователь может прочесть из таблицы.

Синтаксис

CREATE [ROW] POLICY [IF NOT EXISTS | OR REPLACE] policy_name [ON CLUSTER cluster_name] ON [db.]table
    [AS {PERMISSIVE | RESTRICTIVE}]
    [FOR SELECT]
    [USING condition]
    [TO {role [,...] | ALL | ALL EXCEPT role [,...]}]

Секция AS

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

Политика разрешения предоставляет доступ к строкам. Разрешительные политики, которые применяются к одной таблице, объединяются с помощью логического оператора OR. Политики являются разрешительными по умолчанию.

Политика ограничения запрещает доступ к строкам. Ограничительные политики, которые применяются к одной таблице, объединяются логическим оператором AND.

Ограничительные политики применяются к строкам, прошедшим фильтр разрешительной политики. Если вы не зададите разрешительные политики, пользователь не сможет обращаться ни к каким строкам из таблицы.

Секция TO

В секции TO вы можете перечислить как роли, так и пользователей. Например, CREATE ROW POLICY ... TO accountant, john@localhost.

Ключевым словом ALL обозначаются все пользователи, включая текущего. Ключевые слова ALL EXCEPT позволяют исключить пользователей из списка всех пользователей. Например, CREATE ROW POLICY ... TO ALL EXCEPT accountant, john@localhost

Примеры

  • CREATE ROW POLICY filter ON mydb.mytable FOR SELECT USING a<1000 TO accountant, john@localhost
  • CREATE ROW POLICY filter ON mydb.mytable FOR SELECT USING a<1000 TO ALL EXCEPT mira

Оригинальная статья