Команда GRANT
- Предоставляет привилегии учетным записям пользователей ClickHouse или ролям.
- Назначает роли учетным записям пользователей или другим ролям.
Чтобы отозвать привилегии, используйте команду REVOKE. Также вы можете вывести список предоставленных привилегий с помощью команды SHOW GRANTS.
Синтаксис предоставления прав
privilege— тип привилегии.role— роль пользователя ClickHouse.user— учетная запись пользователя ClickHouse.
Предложение WITH GRANT OPTION предоставляет user или role право выполнять запрос GRANT. Пользователи могут предоставлять привилегии того же уровня и уже по охвату, чем те, которыми они обладают.
Предложение WITH REPLACE OPTION заменяет старые привилегии новыми для user или role; если оно не указано, привилегии добавляются.
Синтаксис назначения роли
role— роль пользователя ClickHouse.user— учетная запись пользователя ClickHouse.
Предложение WITH ADMIN OPTION предоставляет привилегию ADMIN OPTION для user или role.
Предложение WITH REPLACE OPTION заменяет старые роли новыми для user или role; если оно не указано, новые роли добавляются к существующим.
Синтаксис оператора GRANT CURRENT GRANTS
privilege— тип привилегии.role— роль пользователя ClickHouse.user— учетная запись пользователя ClickHouse.
Использование оператора CURRENT GRANTS позволяет выдать все указанные привилегии заданному пользователю или роли.
Если ни одна привилегия не была указана, заданный пользователь или роль получит все доступные привилегии текущего пользователя (CURRENT_USER).
Использование
Чтобы использовать GRANT, ваша учетная запись должна иметь привилегию GRANT OPTION. Вы можете выдавать привилегии только в рамках привилегий вашей учетной записи.
Например, администратор выдал привилегии учетной записи john следующим запросом:
Это означает, что у john есть право выполнять:
SELECT x,y FROM db.table.SELECT x FROM db.table.SELECT y FROM db.table.
john не может выполнить SELECT z FROM db.table. SELECT * FROM db.table также недоступен. При обработке этого запроса ClickHouse не возвращает никаких данных, даже x и y. Единственное исключение — когда таблица содержит только столбцы x и y. В этом случае ClickHouse возвращает все данные.
Также у john есть привилегия GRANT OPTION, поэтому он может предоставлять другим пользователям привилегии того же или меньшего объёма.
Доступ к базе данных system всегда разрешён (так как эта база используется для обработки запросов).
Хотя существует множество системных таблиц, к которым новые пользователи по умолчанию имеют доступ, они могут не иметь доступа ко всем системным таблицам без явной выдачи прав.
Кроме того, доступ к определённым системным таблицам, таким как system.zookeeper, ограничен для пользователей Cloud по соображениям безопасности.
Вы можете выдать несколько привилегий нескольким учётным записям в одном запросе. Запрос GRANT SELECT, INSERT ON *.* TO john, robin позволяет учётным записям john и robin выполнять запросы INSERT и SELECT ко всем таблицам во всех базах данных на сервере.
Права с использованием подстановочных символов
При указании привилегий вы можете использовать звёздочку (*) вместо имени таблицы или базы данных. Например, запрос GRANT SELECT ON db.* TO john позволяет пользователю john выполнять запрос SELECT для всех таблиц в базе данных db.
Также вы можете опустить имя базы данных. В этом случае привилегии предоставляются для текущей базы данных.
Например, GRANT SELECT ON * TO john предоставляет привилегию на все таблицы в текущей базе данных, а GRANT SELECT ON mytable TO john предоставляет привилегию на таблицу mytable в текущей базе данных.
Описанная ниже функциональность доступна начиная с версии ClickHouse 24.10.
Вы также можете ставить звёздочки в конце имени таблицы или базы данных. Эта возможность позволяет предоставлять привилегии на абстрактный префикс пути таблицы.
Пример: GRANT SELECT ON db.my_tables* TO john. Этот запрос позволяет пользователю john выполнять запрос SELECT для всех таблиц базы данных db, имена которых начинаются с префикса my_tables.
Дополнительные примеры:
GRANT SELECT ON db.my_tables* TO john
GRANT SELECT ON db*.* TO john
Все вновь созданные таблицы в рамках путей, для которых выданы права, автоматически наследуют все привилегии от своих родительских объектов.
Например, если вы выполните запрос GRANT SELECT ON db.* TO john, а затем создадите новую таблицу db.new_table, пользователь john сможет выполнять запрос SELECT * FROM db.new_table.
Вы можете указывать звёздочку только для префиксов:
Привилегии
Привилегия — это право, предоставляемое пользователю на выполнение определённых видов запросов.
Привилегии имеют иерархическую структуру, и набор разрешённых запросов зависит от области действия привилегии.
Иерархия привилегий в ClickHouse показана ниже:
ALLУправление доступомALLOW SQL SECURITY NONEALTER QUOTAALTER ROLEALTER ROW POLICYALTER SETTINGS PROFILEALTER USERCREATE QUOTACREATE ROLECREATE ROW POLICYCREATE SETTINGS PROFILECREATE USERDROP QUOTADROP ROLEDROP ROW POLICYDROP SETTINGS PROFILEDROP USERROLE ADMINSHOW ACCESSSHOW QUOTASSHOW ROLESSHOW ROW POLICIESSHOW SETTINGS PROFILESSHOW USERS
ALTERALTER DATABASEALTER DATABASE SETTINGS
ALTER TABLEALTER COLUMNALTER ADD COLUMNALTER CLEAR COLUMNALTER COMMENT COLUMNALTER DROP COLUMNALTER MATERIALIZE COLUMNALTER MODIFY COLUMNALTER RENAME COLUMN
ALTER CONSTRAINTALTER ADD CONSTRAINTALTER DROP CONSTRAINT
ALTER DELETEALTER FETCH PARTITIONALTER FREEZE PARTITIONALTER INDEXALTER ADD INDEXALTER CLEAR INDEXALTER DROP INDEXALTER MATERIALIZE INDEXALTER ORDER BYALTER SAMPLE BY
ALTER MATERIALIZE TTLALTER MODIFY COMMENTALTER MOVE PARTITIONALTER PROJECTIONALTER SETTINGSALTER STATISTICSALTER ADD STATISTICSALTER DROP STATISTICSALTER MATERIALIZE STATISTICSALTER MODIFY STATISTICS
ALTER TTLALTER UPDATE
ALTER VIEWALTER VIEW MODIFY QUERYALTER VIEW REFRESHALTER VIEW MODIFY SQL SECURITY
BACKUPCLUSTERCREATECREATE ARBITRARY TEMPORARY TABLECREATE TEMPORARY TABLE
CREATE DATABASECREATE DICTIONARYCREATE FUNCTIONCREATE RESOURCECREATE TABLECREATE VIEWCREATE WORKLOAD
dictGetdisplaySecretsInShowAndSelectDROPDROP DATABASEDROP DICTIONARYDROP FUNCTIONDROP RESOURCEDROP TABLEDROP VIEWDROP WORKLOAD
INSERTИНТРОСПЕКЦИЯaddressToLineaddressToLineWithInlinesaddressToSymboldemangle
KILL QUERYKILL TRANSACTIONПЕРЕМЕЩЕНИЕ РАЗДЕЛА МЕЖДУ ШАРДАМИNAMED COLLECTION ADMINALTER NAMED COLLECTIONCREATE NAMED COLLECTIONDROP NAMED COLLECTIONNAMED COLLECTIONSHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS
OPTIMIZESELECTSET DEFINERSHOWSHOW COLUMNSSHOW DATABASESSHOW DICTIONARIESSHOW TABLES
SHOW FILESYSTEM CACHESИСТОЧНИКИAZUREFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
SYSTEMSYSTEM CLEANUPSYSTEM DROP CACHESYSTEM DROP COMPILED EXPRESSION CACHESYSTEM DROP CONNECTIONS CACHESYSTEM DROP DISTRIBUTED CACHESYSTEM DROP DNS CACHESYSTEM DROP FILESYSTEM CACHESYSTEM DROP FORMAT SCHEMA CACHESYSTEM DROP MARK CACHESYSTEM DROP MMAP CACHESYSTEM DROP PAGE CACHESYSTEM DROP PRIMARY INDEX CACHESYSTEM DROP QUERY CACHESYSTEM DROP S3 CLIENT CACHESYSTEM DROP SCHEMA CACHESYSTEM DROP UNCOMPRESSED CACHE
SYSTEM DROP PRIMARY INDEX CACHESYSTEM DROP REPLICASYSTEM FAILPOINTSYSTEM FETCHESSYSTEM FLUSHSYSTEM FLUSH ASYNC INSERT QUEUESYSTEM FLUSH LOGS
SYSTEM JEMALLOCSYSTEM KILL QUERYSYSTEM KILL TRANSACTIONSYSTEM LISTENSYSTEM LOAD PRIMARY KEYSYSTEM MERGESSYSTEM MOVESSYSTEM PULLING REPLICATION LOGSYSTEM REDUCE BLOCKING PARTSSYSTEM REPLICATION QUEUESSYSTEM REPLICA READINESSSYSTEM RESTART DISKSYSTEM RESTART REPLICASYSTEM RESTORE REPLICASYSTEM RELOADSYSTEM RELOAD ASYNCHRONOUS METRICSSYSTEM RELOAD CONFIGSYSTEM RELOAD DICTIONARYSYSTEM RELOAD EMBEDDED DICTIONARIESSYSTEM RELOAD FUNCTIONSYSTEM RELOAD MODELSYSTEM RELOAD USERS
SYSTEM SENDSSYSTEM DISTRIBUTED SENDSSYSTEM REPLICATED SENDS
SYSTEM SHUTDOWNSYSTEM SYNC DATABASE REPLICASYSTEM SYNC FILE CACHESYSTEM SYNC FILESYSTEM CACHESYSTEM SYNC REPLICASYSTEM SYNC TRANSACTION LOGSYSTEM THREAD FUZZERSYSTEM TTL MERGESSYSTEM UNFREEZESYSTEM UNLOAD PRIMARY KEYSYSTEM VIEWSSYSTEM VIRTUAL PARTS UPDATESYSTEM WAIT LOADING PARTS
TABLE ENGINETRUNCATEUNDROP TABLE
NONE
Примеры того, как трактуется эта иерархия:
- Привилегия
ALTERвключает все остальные привилегииALTER*. ALTER CONSTRAINTвключает привилегииALTER ADD CONSTRAINTиALTER DROP CONSTRAINT.
Привилегии применяются на разных уровнях. Зная уровень, можно определить доступный для привилегии синтаксис.
Уровни (от нижнего к более высокому):
COLUMN— привилегия может быть выдана для столбца, таблицы, базы данных или глобально.TABLE— привилегия может быть выдана для таблицы, базы данных или глобально.VIEW— привилегия может быть выдана для представления, базы данных или глобально.DICTIONARY— привилегия может быть выдана для словаря, базы данных или глобально.DATABASE— привилегия может быть выдана для базы данных или глобально.GLOBAL— привилегия может быть выдана только глобально.GROUP— группирует привилегии разных уровней. Когда выдается привилегия уровняGROUP, выдаются только те привилегии из группы, которые соответствуют использованному синтаксису.
Примеры допустимого синтаксиса:
GRANT SELECT(x) ON db.table TO userGRANT SELECT ON db.* TO user
Примеры недопустимого синтаксиса:
GRANT CREATE USER(x) ON db.table TO userGRANT CREATE USER ON db.* TO user
Специальная привилегия ALL предоставляет все привилегии учетной записи пользователя или роли.
По умолчанию учетная запись пользователя или роль не имеет привилегий.
Если у пользователя или роли нет привилегий, это отображается как привилегия NONE.
Некоторые запросы по своей реализации требуют определенного набора привилегий. Например, для выполнения запроса RENAME необходимы следующие привилегии: SELECT, CREATE TABLE, INSERT и DROP TABLE.
SELECT
Позволяет выполнять запросы SELECT.
Уровень привилегии: COLUMN.
Описание
Пользователь, которому выдана эта привилегия, может выполнять запросы SELECT по указанному списку столбцов в заданных таблице и базе данных. Если пользователь включает другие столбцы, помимо указанных, запрос не возвращает данные.
Рассмотрим следующую привилегию:
Эта привилегия позволяет john выполнять любые запросы SELECT, которые обращаются к данным из столбцов x и/или y таблицы db.table, например SELECT x FROM db.table. john не может выполнять SELECT z FROM db.table. Запрос SELECT * FROM db.table также недоступен. При выполнении этого запроса ClickHouse не возвращает никаких данных, даже x и y. Единственное исключение — если таблица содержит только столбцы x и y, в таком случае ClickHouse возвращает все данные.
INSERT
Позволяет выполнять запросы INSERT.
Уровень привилегий: COLUMN.
Описание
Пользователь с этой привилегией может выполнять запросы INSERT по указанному списку столбцов в заданных таблице и базе данных. Если пользователь указывает другие столбцы, помимо разрешённых, запрос не вставляет никаких данных.
Пример
Предоставленная привилегия позволяет пользователю john вставлять данные в столбцы x и/или y таблицы db.table.
ALTER
Позволяет выполнять запросы ALTER в соответствии со следующей иерархией привилегий:
ALTER. Уровень:COLUMN.ALTER TABLE. Уровень:GROUPALTER UPDATE. Уровень:COLUMN. Синонимы:UPDATEALTER DELETE. Уровень:COLUMN. Синонимы:DELETEALTER COLUMN. Уровень:GROUPALTER ADD COLUMN. Уровень:COLUMN. Синонимы:ADD COLUMNALTER DROP COLUMN. Уровень:COLUMN. Синонимы:DROP COLUMNALTER MODIFY COLUMN. Уровень:COLUMN. Синонимы:MODIFY COLUMNALTER COMMENT COLUMN. Уровень:COLUMN. Синонимы:COMMENT COLUMNALTER CLEAR COLUMN. Уровень:COLUMN. Синонимы:CLEAR COLUMNALTER RENAME COLUMN. Уровень:COLUMN. Синонимы:RENAME COLUMNALTER INDEX. Уровень:GROUP. Синонимы:INDEXALTER ORDER BY. Уровень:TABLE. Синонимы:ALTER MODIFY ORDER BY,MODIFY ORDER BYALTER SAMPLE BY. Уровень:TABLE. Синонимы:ALTER MODIFY SAMPLE BY,MODIFY SAMPLE BYALTER ADD INDEX. Уровень:TABLE. Синонимы:ADD INDEXALTER DROP INDEX. Уровень:TABLE. Синонимы:DROP INDEXALTER MATERIALIZE INDEX. Уровень:TABLE. Синонимы:MATERIALIZE INDEXALTER CLEAR INDEX. Уровень:TABLE. Синонимы:CLEAR INDEXALTER CONSTRAINT. Уровень:GROUP. Синонимы:CONSTRAINTALTER ADD CONSTRAINT. Уровень:TABLE. Синонимы:ADD CONSTRAINTALTER DROP CONSTRAINT. Уровень:TABLE. Синонимы:DROP CONSTRAINTALTER TTL. Уровень:TABLE. Синонимы:ALTER MODIFY TTL,MODIFY TTLALTER MATERIALIZE TTL. Уровень:TABLE. Синонимы:MATERIALIZE TTLALTER SETTINGS. Уровень:TABLE. Синонимы:ALTER SETTING,ALTER MODIFY SETTING,MODIFY SETTINGALTER MOVE PARTITION. Уровень:TABLE. Синонимы:ALTER MOVE PART,MOVE PARTITION,MOVE PARTALTER FETCH PARTITION. Уровень:TABLE. Синонимы:ALTER FETCH PART,FETCH PARTITION,FETCH PARTALTER FREEZE PARTITION. Уровень:TABLE. Синонимы:FREEZE PARTITIONALTER VIEW. Уровень:GROUPALTER VIEW REFRESH. Уровень:VIEW. Синонимы:REFRESH VIEWALTER VIEW MODIFY QUERY. Уровень:VIEW. Синонимы:ALTER TABLE MODIFY QUERYALTER VIEW MODIFY SQL SECURITY. Уровень:VIEW. Синонимы:ALTER TABLE MODIFY SQL SECURITY
Примеры трактовки этой иерархии:
- Привилегия
ALTERвключает в себя все остальные привилегииALTER*. ALTER CONSTRAINTвключает привилегииALTER ADD CONSTRAINTиALTER DROP CONSTRAINT.
Примечания
- Привилегия
MODIFY SETTINGпозволяет изменять настройки движка таблицы. Она не влияет на настройки или параметры конфигурации сервера. - Операция
ATTACHтребует привилегии CREATE. - Операция
DETACHтребует привилегии DROP. - Чтобы остановить мутацию запросом KILL MUTATION, необходимо иметь привилегию для запуска этой мутации. Например, если вы хотите остановить запрос
ALTER UPDATE, вам необходима привилегияALTER UPDATE,ALTER TABLEилиALTER.
BACKUP
Разрешает использование оператора [BACKUP] в запросах. Дополнительные сведения о резервном копировании см. в разделе "Резервное копирование и восстановление".
CREATE
Позволяет выполнять DDL-запросы CREATE и ATTACH в соответствии со следующей иерархией прав доступа:
CREATE. Уровень:GROUPCREATE DATABASE. Уровень:DATABASECREATE TABLE. Уровень:TABLECREATE ARBITRARY TEMPORARY TABLE. Уровень:GLOBALCREATE TEMPORARY TABLE. Уровень:GLOBAL
CREATE VIEW. Уровень:VIEWCREATE DICTIONARY. Уровень:DICTIONARY
Примечания
- Чтобы удалить созданную таблицу, пользователю требуется привилегия DROP.
CLUSTER
Позволяет выполнять запросы ON CLUSTER.
По умолчанию запросы с ON CLUSTER требуют, чтобы у пользователя была привилегия CLUSTER.
Вы получите следующую ошибку, если попытаетесь использовать ON CLUSTER в запросе, не выдав предварительно привилегию CLUSTER:
Поведение по умолчанию можно изменить, установив в значение false настройку on_cluster_queries_require_cluster_grant из раздела access_control_improvements файла config.xml (см. ниже).
DROP
Позволяет выполнять запросы DROP и DETACH в соответствии со следующей иерархией прав доступа:
DROP. Уровень:GROUPDROP DATABASE. Уровень:DATABASEDROP TABLE. Уровень:TABLEDROP VIEW. Уровень:VIEWDROP DICTIONARY. Уровень:DICTIONARY
TRUNCATE
Позволяет выполнять запросы TRUNCATE.
Уровень привилегий: TABLE.
OPTIMIZE
Позволяет выполнять запросы OPTIMIZE TABLE.
Уровень привилегий: TABLE.
SHOW
Позволяет выполнять запросы SHOW, DESCRIBE, USE и EXISTS в соответствии со следующей иерархией привилегий:
SHOW. Уровень:GROUPSHOW DATABASES. Уровень:DATABASE. Позволяет выполнять запросыSHOW DATABASES,SHOW CREATE DATABASE,USE <database>.SHOW TABLES. Уровень:TABLE. Позволяет выполнять запросыSHOW TABLES,EXISTS <table>,CHECK <table>.SHOW COLUMNS. Уровень:COLUMN. Позволяет выполнять запросыSHOW CREATE TABLE,DESCRIBE.SHOW DICTIONARIES. Уровень:DICTIONARY. Позволяет выполнять запросыSHOW DICTIONARIES,SHOW CREATE DICTIONARY,EXISTS <dictionary>.
Примечания
Пользователь обладает привилегией SHOW, если у него есть какая-либо другая привилегия, относящаяся к указанной таблице, словарю или базе данных.
KILL QUERY
Позволяет выполнять запросы KILL в соответствии со следующей иерархией привилегий:
Уровень привилегий: GLOBAL.
Примечание
Привилегия KILL QUERY позволяет одному пользователю завершать запросы других пользователей.
УПРАВЛЕНИЕ ДОСТУПОМ
Позволяет пользователю выполнять запросы для управления пользователями, ролями и политиками строк.
ACCESS MANAGEMENT. Уровень:GROUPCREATE USER. Уровень:GLOBALALTER USER. Уровень:GLOBALDROP USER. Уровень:GLOBALCREATE ROLE. Уровень:GLOBALALTER ROLE. Уровень:GLOBALDROP ROLE. Уровень:GLOBALROLE ADMIN. Уровень:GLOBALCREATE ROW POLICY. Уровень:GLOBAL. Алиасы:CREATE POLICYALTER ROW POLICY. Уровень:GLOBAL. Алиасы:ALTER POLICYDROP ROW POLICY. Уровень:GLOBAL. Алиасы:DROP POLICYCREATE QUOTA. Уровень:GLOBALALTER QUOTA. Уровень:GLOBALDROP QUOTA. Уровень:GLOBALCREATE SETTINGS PROFILE. Уровень:GLOBAL. Алиасы:CREATE PROFILEALTER SETTINGS PROFILE. Уровень:GLOBAL. Алиасы:ALTER PROFILEDROP SETTINGS PROFILE. Уровень:GLOBAL. Алиасы:DROP PROFILESHOW ACCESS. Уровень:GROUPSHOW_USERS. Уровень:GLOBAL. Алиасы:SHOW CREATE USERSHOW_ROLES. Уровень:GLOBAL. Алиасы:SHOW CREATE ROLESHOW_ROW_POLICIES. Уровень:GLOBAL. Алиасы:SHOW POLICIES,SHOW CREATE ROW POLICY,SHOW CREATE POLICYSHOW_QUOTAS. Уровень:GLOBAL. Алиасы:SHOW CREATE QUOTASHOW_SETTINGS_PROFILES. Уровень:GLOBAL. Алиасы:SHOW PROFILES,SHOW CREATE SETTINGS PROFILE,SHOW CREATE PROFILE
ALLOW SQL SECURITY NONE. Уровень:GLOBAL. Алиасы:CREATE SQL SECURITY NONE,SQL SECURITY NONE,SECURITY NONE
Привилегия ROLE ADMIN позволяет пользователю назначать и отзывать любые роли, включая те, которые не назначены этому пользователю с опцией ADMIN.
SYSTEM
Позволяет пользователю выполнять запросы SYSTEM в соответствии со следующей иерархией привилегий.
SYSTEM. Уровень:GROUPSYSTEM SHUTDOWN. Уровень:GLOBAL. Синонимы:SYSTEM KILL,SHUTDOWNSYSTEM DROP CACHE. Синонимы:DROP CACHESYSTEM DROP DNS CACHE. Уровень:GLOBAL. Синонимы:SYSTEM DROP DNS,DROP DNS CACHE,DROP DNSSYSTEM DROP MARK CACHE. Уровень:GLOBAL. Синонимы:SYSTEM DROP MARK,DROP MARK CACHE,DROP MARKSSYSTEM DROP UNCOMPRESSED CACHE. Уровень:GLOBAL. Синонимы:SYSTEM DROP UNCOMPRESSED,DROP UNCOMPRESSED CACHE,DROP UNCOMPRESSED
SYSTEM RELOAD. Уровень:GROUPSYSTEM RELOAD CONFIG. Уровень:GLOBAL. Синонимы:RELOAD CONFIGSYSTEM RELOAD DICTIONARY. Уровень:GLOBAL. Синонимы:SYSTEM RELOAD DICTIONARIES,RELOAD DICTIONARY,RELOAD DICTIONARIESSYSTEM RELOAD EMBEDDED DICTIONARIES. Уровень:GLOBAL. Синонимы:RELOAD EMBEDDED DICTIONARIES
SYSTEM MERGES. Уровень:TABLE. Синонимы:SYSTEM STOP MERGES,SYSTEM START MERGES,STOP MERGES,START MERGESSYSTEM TTL MERGES. Уровень:TABLE. Синонимы:SYSTEM STOP TTL MERGES,SYSTEM START TTL MERGES,STOP TTL MERGES,START TTL MERGESSYSTEM FETCHES. Уровень:TABLE. Синонимы:SYSTEM STOP FETCHES,SYSTEM START FETCHES,STOP FETCHES,START FETCHESSYSTEM MOVES. Уровень:TABLE. Синонимы:SYSTEM STOP MOVES,SYSTEM START MOVES,STOP MOVES,START MOVESSYSTEM SENDS. Уровень:GROUP. Синонимы:SYSTEM STOP SENDS,SYSTEM START SENDS,STOP SENDS,START SENDSSYSTEM DISTRIBUTED SENDS. Уровень:TABLE. Синонимы:SYSTEM STOP DISTRIBUTED SENDS,SYSTEM START DISTRIBUTED SENDS,STOP DISTRIBUTED SENDS,START DISTRIBUTED SENDSSYSTEM REPLICATED SENDS. Уровень:TABLE. Синонимы:SYSTEM STOP REPLICATED SENDS,SYSTEM START REPLICATED SENDS,STOP REPLICATED SENDS,START REPLICATED SENDS
SYSTEM REPLICATION QUEUES. Уровень:TABLE. Синонимы:SYSTEM STOP REPLICATION QUEUES,SYSTEM START REPLICATION QUEUES,STOP REPLICATION QUEUES,START REPLICATION QUEUESSYSTEM SYNC REPLICA. Уровень:TABLE. Синонимы:SYNC REPLICASYSTEM RESTART REPLICA. Уровень:TABLE. Синонимы:RESTART REPLICASYSTEM FLUSH. Уровень:GROUPSYSTEM FLUSH DISTRIBUTED. Уровень:TABLE. Синонимы:FLUSH DISTRIBUTEDSYSTEM FLUSH LOGS. Уровень:GLOBAL. Синонимы:FLUSH LOGS
Привилегия SYSTEM RELOAD EMBEDDED DICTIONARIES неявно предоставляется при наличии привилегии SYSTEM RELOAD DICTIONARY ON *.*.
INTROSPECTION
Позволяет использовать функции интроспекции.
INTROSPECTION. Уровень:GROUP. Псевдонимы:INTROSPECTION FUNCTIONSaddressToLine. Уровень:GLOBALaddressToLineWithInlines. Уровень:GLOBALaddressToSymbol. Уровень:GLOBALdemangle. Уровень:GLOBAL
SOURCES
Позволяет использовать внешние источники данных. Применимо к табличным движкам и табличным функциям.
READ. Уровень:GLOBAL_WITH_PARAMETERWRITE. Уровень:GLOBAL_WITH_PARAMETER
Возможные параметры:
AZUREFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
Разделение прав READ/WRITE для источников доступно, начиная с версии 25.7, и только при включённой серверной настройке
access_control_improvements.enable_read_write_grants
В противном случае следует использовать синтаксис GRANT AZURE ON *.* TO user, который эквивалентен новому GRANT READ, WRITE ON AZURE TO user.
Примеры:
- Чтобы создать таблицу с табличным движком MySQL, необходимы права
CREATE TABLE (ON db.table_name)иMYSQL. - Чтобы использовать табличную функцию mysql, необходимы права
CREATE TEMPORARY TABLEиMYSQL.
Права доступа по фильтру источника
Эта возможность доступна, начиная с версии 25.8 и только при включённой серверной настройке
access_control_improvements.enable_read_write_grants
Вы можете выдавать доступ к конкретным URI источников с помощью фильтров на основе регулярных выражений. Это позволяет точно контролировать, к каким внешним источникам данных пользователи могут получать доступ.
Синтаксис:
Эта привилегия даёт пользователю доступ только на чтение из S3 URI-адресов, которые соответствуют указанному шаблону регулярного выражения.
Примеры:
Предоставить доступ к конкретным путям в бакете S3:
Фильтр источника принимает regexp в качестве параметра, поэтому оператор
GRANT READ ON URL('http://www.google.com') TO john;
позволит выполнять запросы
потому что . в регулярных выражениях интерпретируется как любой одиночный символ.
Это может привести к потенциальной уязвимости. Правильный GRANT должен быть таким:
Повторная выдача прав с GRANT OPTION:
Если исходная команда GRANT содержит WITH GRANT OPTION, права можно повторно выдать с помощью GRANT CURRENT GRANTS:
Важные ограничения:
- Частичный отзыв прав не допускается: вы не можете отозвать только часть ранее выданного шаблона фильтра. Необходимо отозвать весь
GRANTи при необходимости выдать его заново с новыми шаблонами. - Выдача прав с использованием только
wildcardне допускается: вы не можете использоватьGRANT READ ON *('regexp')или аналогичные шаблоны, состоящие только изwildcard. Должен быть указан конкретный источник.
dictGet
dictGet. Алиасы:dictHas,dictGetHierarchy,dictIsIn
Позволяет выполнять функции dictGet, dictHas, dictGetHierarchy, dictIsIn.
Уровень привилегий: DICTIONARY.
Примеры
GRANT dictGet ON mydb.mydictionary TO johnGRANT dictGet ON mydictionary TO john
displaySecretsInShowAndSelect
Позволяет пользователю просматривать секреты в запросах SHOW и SELECT, если включены и
настройка сервера display_secrets_in_show_and_select,
и настройка формата format_display_secrets_in_show_and_select.
NAMED COLLECTION ADMIN
Позволяет выполнять определённую операцию над указанной именованной коллекцией. До версии 23.7 право называлось NAMED COLLECTION CONTROL, а начиная с 23.7 было добавлено NAMED COLLECTION ADMIN, при этом NAMED COLLECTION CONTROL сохранено как псевдоним.
NAMED COLLECTION ADMIN. Уровень:NAMED_COLLECTION. Псевдонимы:NAMED COLLECTION CONTROLCREATE NAMED COLLECTION. Уровень:NAMED_COLLECTIONDROP NAMED COLLECTION. Уровень:NAMED_COLLECTIONALTER NAMED COLLECTION. Уровень:NAMED_COLLECTIONSHOW NAMED COLLECTIONS. Уровень:NAMED_COLLECTION. Псевдонимы:SHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS. Уровень:NAMED_COLLECTION. Псевдонимы:SHOW NAMED COLLECTIONS SECRETSNAMED COLLECTION. Уровень:NAMED_COLLECTION. Псевдонимы:NAMED COLLECTION USAGE, USE NAMED COLLECTION
В отличие от всех остальных прав (CREATE, DROP, ALTER, SHOW), право NAMED COLLECTION было добавлено только в версии 23.7, тогда как все остальные были добавлены ранее — в версии 22.12.
Примеры
Пусть именованная коллекция называется abc. Предоставим право CREATE NAMED COLLECTION пользователю john.
GRANT CREATE NAMED COLLECTION ON abc TO john
TABLE ENGINE
Позволяет использовать указанный движок таблицы при создании таблицы. Применяется к движкам таблиц.
Примеры
GRANT TABLE ENGINE ON * TO johnGRANT TABLE ENGINE ON TinyLog TO john
По умолчанию из соображений обратной совместимости при создании таблицы с конкретным движком таблицы права игнорируются,
однако вы можете изменить это поведение, установив table_engines_require_grant в true
в config.xml.
ALL
Предоставляет все привилегии на управляемый объект учетной записи пользователя или роли.
Привилегия ALL не поддерживается в ClickHouse Cloud, где пользователь default имеет ограниченные права. Пользователи могут предоставить максимально возможные права пользователю, назначив ему роль default_role. См. подробности здесь.
Пользователи также могут использовать команду GRANT CURRENT GRANTS от имени пользователя default, чтобы добиться эффекта, аналогичного ALL.
NONE
Не предоставляет никаких прав.
ADMIN OPTION
Привилегия ADMIN OPTION позволяет пользователю предоставлять свою роль другому пользователю.