row-policy.md 2.9 KB
Newer Older
A
Anna 已提交
1
---
2
toc_priority: 41
3
toc_title: "Политика доступа"
A
Anna 已提交
4 5 6 7
---

# CREATE ROW POLICY {#create-row-policy-statement}

O
Olga Revyakina 已提交
8
Создает [фильтры для строк](../../../operations/access-rights.md#row-policy-management), которые пользователь может прочесть из таблицы.
A
Anna 已提交
9

O
Olga Revyakina 已提交
10
Синтаксис:
A
Anna 已提交
11 12

``` sql
O
Olga Revyakina 已提交
13 14
CREATE [ROW] POLICY [IF NOT EXISTS | OR REPLACE] policy_name1 [ON CLUSTER cluster_name1] ON [db1.]table1 
        [, policy_name2 [ON CLUSTER cluster_name2] ON [db2.]table2 ...] 
A
Anna 已提交
15 16 17 18 19 20
    [AS {PERMISSIVE | RESTRICTIVE}]
    [FOR SELECT]
    [USING condition]
    [TO {role [,...] | ALL | ALL EXCEPT role [,...]}]
```

O
Olga Revyakina 已提交
21 22 23
Секция `ON CLUSTER` позволяет создавать фильтры для строк на кластере, см. [Распределенные DDL запросы](../../../sql-reference/distributed-ddl.md).

## Секция AS {#create-row-policy-as}
A
Anna 已提交
24 25 26 27 28 29 30 31 32

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

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

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

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

O
Olga Revyakina 已提交
33
## Секция TO {#create-row-policy-to}
A
Anna 已提交
34 35 36 37 38

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

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

O
Olga Revyakina 已提交
39 40 41
## Примеры

`CREATE ROW POLICY filter ON mydb.mytable FOR SELECT USING a<1000 TO accountant, john@localhost`
A
Anna 已提交
42

O
Olga Revyakina 已提交
43
`CREATE ROW POLICY filter ON mydb.mytable FOR SELECT USING a<1000 TO ALL EXCEPT mira`
A
Anna 已提交
44 45

<!--hide-->