Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

GRANT

  • Accorde des privilèges aux comptes utilisateur ClickHouse ou aux rôles.
  • Assigne des rôles aux comptes utilisateur ou à d'autres rôles.

Pour révoquer des privilèges, utilisez l'instruction REVOKE. Vous pouvez également afficher les privilèges accordés à l'aide de l'instruction SHOW GRANTS.

Syntaxe d’octroi de privilèges

GRANT [ON CLUSTER cluster_name] privilege[(column_name [,...])] [,...] ON {db.table[*]|db[*].*|*.*|table[*]|*} TO {user | role | CURRENT_USER} [,...] [WITH GRANT OPTION] [WITH REPLACE OPTION]
  • privilege — Type de privilège.
  • role — Rôle utilisateur ClickHouse.
  • user — Compte utilisateur ClickHouse.

La clause WITH GRANT OPTION accorde à user ou role l’autorisation d’exécuter la requête GRANT. Les utilisateurs peuvent accorder des privilèges de même portée que ceux dont ils disposent, ou de portée inférieure. La clause WITH REPLACE OPTION remplace les anciens privilèges par les nouveaux pour user ou role ; si elle n’est pas spécifiée, elle ajoute les privilèges.

Syntaxe d’attribution d’un rôle

GRANT [ON CLUSTER cluster_name] role [,...] TO {user | another_role | CURRENT_USER} [,...] [WITH ADMIN OPTION] [WITH REPLACE OPTION]
  • role — rôle utilisateur ClickHouse.
  • user — compte utilisateur ClickHouse.

La clause WITH ADMIN OPTION accorde le privilège ADMIN OPTION à user ou à role. La clause WITH REPLACE OPTION remplace les anciens rôles par les nouveaux pour user ou role ; si elle n'est pas spécifiée, les rôles sont ajoutés.

Syntaxe de GRANT CURRENT GRANTS

GRANT CURRENT GRANTS{(privilege[(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*}) | ON {db.table|db.*|*.*|table|*}} TO {user | role | CURRENT_USER} [,...] [WITH GRANT OPTION] [WITH REPLACE OPTION]
  • privilege — Type de privilège.
  • role — Rôle utilisateur ClickHouse.
  • user — Compte utilisateur ClickHouse.

L’utilisation de l’instruction CURRENT GRANTS permet d’accorder tous les privilèges spécifiés à l’utilisateur ou au rôle indiqué. Si aucun privilège n’est spécifié, l’utilisateur ou le rôle indiqué recevra alors tous les privilèges disponibles pour CURRENT_USER.

Utilisation

Pour utiliser GRANT, votre compte doit disposer du privilège GRANT OPTION. Vous ne pouvez accorder des privilèges que dans la limite de ceux dont dispose votre compte.

Par exemple, un administrateur a accordé des privilèges au compte john à l’aide de la requête suivante :

GRANT SELECT(x,y) ON db.table TO john WITH GRANT OPTION

Cela signifie que john a l’autorisation d’exécuter :

  • SELECT x,y FROM db.table.
  • SELECT x FROM db.table.
  • SELECT y FROM db.table.

john ne peut pas exécuter SELECT z FROM db.table. SELECT * FROM db.table n’est pas non plus autorisé. Lors du traitement de cette requête, ClickHouse ne renvoie aucune donnée, pas même x et y. La seule exception est lorsqu’une table contient uniquement les colonnes x et y. Dans ce cas, ClickHouse renvoie toutes les données.

De plus, john possède le privilège GRANT OPTION ; il peut donc accorder à d’autres utilisateurs des privilèges de portée identique ou plus restreinte.

L’accès à la base de données system est toujours autorisé (puisque cette base de données est utilisée pour le traitement des requêtes).

Vous pouvez accorder plusieurs privilèges à plusieurs comptes dans une seule requête. La requête GRANT SELECT, INSERT ON *.* TO john, robin autorise les comptes john et robin à exécuter les requêtes INSERT et SELECT sur toutes les tables de toutes les bases de données du serveur.

Privilèges avec caractères génériques

Lors de la spécification des privilèges, vous pouvez utiliser un astérisque (*) à la place d’un nom de table ou de base de données. Par exemple, la requête GRANT SELECT ON db.* TO john permet à john d’exécuter la requête SELECT sur toutes les tables de la base de données db. Vous pouvez également omettre le nom de la base de données. Dans ce cas, les privilèges sont accordés pour la base de données active. Par exemple, GRANT SELECT ON * TO john accorde le privilège sur toutes les tables de la base de données active, GRANT SELECT ON mytable TO john accorde le privilège sur la table mytable dans la base de données active.

Vous pouvez également placer des astérisques à la fin d’un nom de table ou de base de données. Cette fonctionnalité vous permet d’accorder des privilèges sur un préfixe abstrait du chemin de la table. Exemple : GRANT SELECT ON db.my_tables* TO john. Cette requête permet à john d’exécuter la requête SELECT sur toutes les tables de la base de données db dont le préfixe est my_tables*.

Autres exemples :

GRANT SELECT ON db.my_tables* TO john

SELECT * FROM db.my_tables -- granted
SELECT * FROM db.my_tables_0 -- granted
SELECT * FROM db.my_tables_1 -- granted

SELECT * FROM db.other_table -- not_granted
SELECT * FROM db2.my_tables -- not_granted

GRANT SELECT ON db*.* TO john

SELECT * FROM db.my_tables -- granted
SELECT * FROM db.my_tables_0 -- granted
SELECT * FROM db.my_tables_1 -- granted
SELECT * FROM db.other_table -- granted
SELECT * FROM db2.my_tables -- granted

Toutes les tables nouvellement créées dans les chemins pour lesquels des privilèges ont été accordés hériteront automatiquement de tous les privilèges de leurs parents. Par exemple, si vous exécutez la requête GRANT SELECT ON db.* TO john, puis créez une nouvelle table db.new_table, l'utilisateur john pourra exécuter la requête SELECT * FROM db.new_table.

Vous ne pouvez spécifier un astérisque que pour les préfixes :

GRANT SELECT ON db.* TO john -- correct
GRANT SELECT ON db*.* TO john -- correct

GRANT SELECT ON *.my_table TO john -- wrong
GRANT SELECT ON foo*bar TO john -- wrong
GRANT SELECT ON *suffix TO john -- wrong
GRANT SELECT(foo) ON db.table* TO john -- wrong

Privilèges

Un privilège est une autorisation accordée à un utilisateur lui permettant d’exécuter certains types de requêtes.

Les privilèges ont une structure hiérarchique, et l’ensemble des requêtes autorisées dépend de la portée du privilège.

La hiérarchie des privilèges dans ClickHouse est présentée ci-dessous :

  • ALL
    • GESTION DES ACCÈS
      • ALLOW SQL SECURITY NONE
      • ALTER QUOTA
      • ALTER ROLE
      • ALTER ROW POLICY
      • ALTER SETTINGS PROFILE
      • ALTER USER
      • CREATE QUOTA
      • CREATE ROLE
      • CREATE ROW POLICY
      • CREATE SETTINGS PROFILE
      • CREATE USER
      • DROP QUOTA
      • DROP ROLE
      • DROP ROW POLICY
      • DROP SETTINGS PROFILE
      • DROP USER
      • ROLE ADMIN
      • SHOW ACCESS
        • SHOW QUOTAS
        • SHOW ROLES
        • SHOW ROW POLICIES
        • SHOW SETTINGS PROFILES
        • SHOW USERS
    • ALTER
      • ALTER DATABASE
        • ALTER DATABASE SETTINGS
      • ALTER TABLE
        • ALTER COLUMN
          • ALTER ADD COLUMN
          • ALTER CLEAR COLUMN
          • ALTER COMMENT COLUMN
          • ALTER DROP COLUMN
          • ALTER MATERIALIZE COLUMN
          • ALTER MODIFY COLUMN
          • ALTER RENAME COLUMN
        • ALTER CONSTRAINT
          • ALTER ADD CONSTRAINT
          • ALTER DROP CONSTRAINT
          • ALTER MODIFY CONSTRAINT
        • ALTER DELETE
        • ALTER FETCH PARTITION
        • ALTER FREEZE PARTITION
        • ALTER INDEX
          • ALTER ADD INDEX
          • ALTER CLEAR INDEX
          • ALTER DROP INDEX
          • ALTER MATERIALIZE INDEX
          • ALTER ORDER BY
          • ALTER SAMPLE BY
        • ALTER MATERIALIZE TTL
        • ALTER MODIFY COMMENT
        • ALTER MOVE PARTITION
        • ALTER PROJECTION
        • ALTER SETTINGS
        • ALTER STATISTICS
          • ALTER ADD STATISTICS
          • ALTER DROP STATISTICS
          • ALTER MATERIALIZE STATISTICS
          • ALTER MODIFY STATISTICS
        • ALTER TTL
        • ALTER UPDATE
        • ALTER TABLE EXECUTE
      • ALTER VIEW
        • ALTER VIEW MODIFY QUERY
        • ALTER VIEW REFRESH
        • ALTER VIEW MODIFY SQL SECURITY
    • BACKUP
    • CLUSTER
    • CREATE
      • CREATE ARBITRARY TEMPORARY TABLE
        • CREATE TEMPORARY TABLE
      • CREATE DATABASE
      • CREATE DICTIONARY
      • CREATE FUNCTION
      • CREATE RESOURCE
      • CREATE TABLE
      • CREATE VIEW
      • CREATE WORKLOAD
    • dictGet
    • displaySecretsInShowAndSelect
    • DROP
      • DROP DATABASE
      • DROP DICTIONARY
      • DROP FUNCTION
      • DROP RESOURCE
      • DROP TABLE
      • DROP VIEW
      • DROP WORKLOAD
    • INSERT
    • INTROSPECTION
      • addressToLine
      • addressToLineWithInlines
      • addressToSymbol
      • demangle
    • KILL QUERY
    • KILL TRANSACTION
    • MOVE PARTITION BETWEEN SHARDS
    • NAMED COLLECTION ADMIN
      • ALTER NAMED COLLECTION
      • CREATE NAMED COLLECTION
      • DROP NAMED COLLECTION
      • NAMED COLLECTION
      • SHOW NAMED COLLECTIONS
      • SHOW NAMED COLLECTIONS SECRETS
    • OPTIMIZE
    • SELECT
    • SET DEFINER
    • SHOW
      • SHOW COLUMNS
      • SHOW DATABASES
      • SHOW DICTIONARIES
      • SHOW TABLES
    • SHOW FILESYSTEM CACHES
    • SOURCES
      • AZURE
      • BIGQUERY
      • FILE
      • HDFS
      • HIVE
      • JDBC
      • KAFKA
      • MONGO
      • MYSQL
      • NATS
      • ODBC
      • POSTGRES
      • RABBITMQ
      • REDIS
      • REMOTE
      • S3
      • SQLITE
      • URL
    • SYSTEM
      • SYSTEM BACKGROUND
        • SYSTEM STREAMING ENGINES
        • SYSTEM VIEWS
      • SYSTEM CLEANUP
      • SYSTEM DROP CACHE
        • SYSTEM DROP COMPILED EXPRESSION CACHE
        • SYSTEM DROP CONNECTIONS CACHE
        • SYSTEM DROP DISTRIBUTED CACHE
        • SYSTEM DROP DNS CACHE
        • SYSTEM DROP FILESYSTEM CACHE
        • SYSTEM DROP FORMAT SCHEMA CACHE
        • SYSTEM DROP MARK CACHE
        • SYSTEM DROP MMAP CACHE
        • SYSTEM DROP PAGE CACHE
        • SYSTEM DROP PRIMARY INDEX CACHE
        • SYSTEM DROP QUERY CACHE
        • SYSTEM DROP S3 CLIENT CACHE
        • SYSTEM DROP SCHEMA CACHE
        • SYSTEM DROP UNCOMPRESSED CACHE
      • SYSTEM DROP REPLICA
      • SYSTEM FAILPOINT
      • SYSTEM FETCHES
      • SYSTEM FLUSH
        • SYSTEM FLUSH ASYNC INSERT QUEUE
        • SYSTEM FLUSH LOGS
      • SYSTEM JEMALLOC
      • SYSTEM LISTEN
      • SYSTEM LOAD PRIMARY KEY
      • SYSTEM MERGES
      • SYSTEM MOVES
      • SYSTEM PULLING REPLICATION LOG
      • SYSTEM REDUCE BLOCKING PARTS
      • SYSTEM REPLICATION QUEUES
      • SYSTEM REPLICA READINESS
      • SYSTEM RESET DDL WORKER
      • SYSTEM RESTART DISK
      • SYSTEM RESTART REPLICA
      • SYSTEM RESTORE REPLICA
      • SYSTEM RELOAD
        • SYSTEM RELOAD ASYNCHRONOUS METRICS
        • SYSTEM RELOAD CONFIG
          • SYSTEM RELOAD DICTIONARY
          • SYSTEM RELOAD EMBEDDED DICTIONARIES
          • SYSTEM RELOAD FUNCTION
          • SYSTEM RELOAD MODEL
          • SYSTEM RELOAD USERS
      • SYSTEM SENDS
        • SYSTEM DISTRIBUTED SENDS
        • SYSTEM REPLICATED SENDS
      • SYSTEM SHUTDOWN
      • SYSTEM SYNC DATABASE REPLICA
      • SYSTEM SYNC FILE CACHE
      • SYSTEM SYNC FILESYSTEM CACHE
      • SYSTEM SYNC REPLICA
      • SYSTEM SYNC TRANSACTION LOG
      • SYSTEM THREAD FUZZER
      • SYSTEM TTL MERGES
      • SYSTEM UNFREEZE
      • SYSTEM UNLOAD PRIMARY KEY
      • SYSTEM VIRTUAL PARTS UPDATE
      • SYSTEM WAIT LOADING PARTS
    • TABLE ENGINE
    • TRUNCATE
    • UNDROP TABLE
  • NONE

Exemples de la manière dont cette hiérarchie est appliquée :

  • Le privilège ALTER inclut tous les autres privilèges ALTER*.
  • ALTER CONSTRAINT inclut les privilèges ALTER ADD CONSTRAINT, ALTER DROP CONSTRAINT et ALTER MODIFY CONSTRAINT.

Les privilèges s’appliquent à différents niveaux. Connaître un niveau indique la syntaxe disponible pour ce privilège.

Niveaux (du plus bas au plus élevé) :

  • COLUMN — Le privilège peut être accordé pour une colonne, une table, une base de données ou globalement.
  • TABLE — Le privilège peut être accordé pour une table, une base de données ou globalement.
  • VIEW — Le privilège peut être accordé pour une vue, une base de données ou globalement.
  • DICTIONARY — Le privilège peut être accordé pour un dictionnaire, une base de données ou globalement.
  • DATABASE — Le privilège peut être accordé pour une base de données ou globalement.
  • GLOBAL — Le privilège peut être accordé uniquement globalement.
  • GROUP — Regroupe des privilèges de différents niveaux. Lorsqu’un privilège de niveau GROUP est accordé, seuls les privilèges du groupe correspondant à la syntaxe utilisée sont accordés.

Exemples de syntaxe autorisée :

  • GRANT SELECT(x) ON db.table TO user
  • GRANT SELECT ON db.* TO user

Exemples de syntaxe non autorisée :

  • GRANT CREATE USER(x) ON db.table TO user
  • GRANT CREATE USER ON db.* TO user

Le privilège spécial ALL accorde tous les privilèges à un compte utilisateur ou à un rôle.

Par défaut, un compte utilisateur ou un rôle n’a aucun privilège.

Si un utilisateur ou un rôle n’a aucun privilège, il est affiché comme le privilège NONE.

Certaines requêtes, de par leur implémentation, nécessitent un ensemble de privilèges. Par exemple, pour exécuter la requête RENAME, vous devez disposer des privilèges suivants : SELECT, CREATE TABLE, INSERT et DROP TABLE.

SELECT

Permet d’exécuter des requêtes SELECT.

Niveau de privilège : COLUMN.

Description

L’utilisateur auquel ce privilège est accordé peut exécuter des requêtes SELECT sur une liste donnée de colonnes dans la table et la base de données spécifiées. Si l’utilisateur inclut des colonnes autres que celles spécifiées, la requête ne renvoie aucune donnée.

Considérez le privilège suivant :

GRANT SELECT(x,y) ON db.table TO john

Ce privilège permet à john d’exécuter toute requête SELECT portant sur des données provenant des colonnes x et/ou y de db.table, par exemple SELECT x FROM db.table. john ne peut pas exécuter SELECT z FROM db.table. SELECT * FROM db.table n’est pas non plus autorisé. Lors du traitement de cette requête, ClickHouse ne renvoie aucune donnée, pas même x et y. La seule exception est le cas où une table ne contient que les colonnes x et y ; dans ce cas, ClickHouse renvoie toutes les données.

INSERT

Permet d’exécuter des requêtes INSERT.

Niveau de privilège : COLUMN.

Description

L’utilisateur disposant de ce privilège peut exécuter des requêtes INSERT sur une liste donnée de colonnes dans la table et la base de données spécifiées. Si l’utilisateur inclut d’autres colonnes que celles spécifiées, la requête n’insère aucune donnée.

Exemple

GRANT INSERT(x,y) ON db.table TO john

Le privilège accordé permet à john d’insérer des données dans les colonnes x et/ou y de db.table.

ALTER

Permet d’exécuter des requêtes ALTER selon la hiérarchie de privilèges suivante :

  • ALTER. Niveau : COLUMN.
    • ALTER TABLE. Niveau : GROUP
    • ALTER UPDATE. Niveau : COLUMN. Alias : UPDATE
    • ALTER DELETE. Niveau : COLUMN. Alias : DELETE
    • ALTER COLUMN. Niveau : GROUP
    • ALTER ADD COLUMN. Niveau : COLUMN. Alias : ADD COLUMN
    • ALTER DROP COLUMN. Niveau : COLUMN. Alias : DROP COLUMN
    • ALTER MODIFY COLUMN. Niveau : COLUMN. Alias : MODIFY COLUMN
    • ALTER COMMENT COLUMN. Niveau : COLUMN. Alias : COMMENT COLUMN
    • ALTER CLEAR COLUMN. Niveau : COLUMN. Alias : CLEAR COLUMN
    • ALTER RENAME COLUMN. Niveau : COLUMN. Alias : RENAME COLUMN
    • ALTER INDEX. Niveau : GROUP. Alias : INDEX
    • ALTER ORDER BY. Niveau : TABLE. Alias : ALTER MODIFY ORDER BY, MODIFY ORDER BY
    • ALTER SAMPLE BY. Niveau : TABLE. Alias : ALTER MODIFY SAMPLE BY, MODIFY SAMPLE BY
    • ALTER ADD INDEX. Niveau : TABLE. Alias : ADD INDEX
    • ALTER DROP INDEX. Niveau : TABLE. Alias : DROP INDEX
    • ALTER MATERIALIZE INDEX. Niveau : TABLE. Alias : MATERIALIZE INDEX
    • ALTER CLEAR INDEX. Niveau : TABLE. Alias : CLEAR INDEX
    • ALTER CONSTRAINT. Niveau : GROUP. Alias : CONSTRAINT
    • ALTER ADD CONSTRAINT. Niveau : TABLE. Alias : ADD CONSTRAINT
    • ALTER DROP CONSTRAINT. Niveau : TABLE. Alias : DROP CONSTRAINT
    • ALTER MODIFY CONSTRAINT. Niveau : TABLE. Alias : MODIFY CONSTRAINT
    • ALTER TTL. Niveau : TABLE. Alias : ALTER MODIFY TTL, MODIFY TTL
    • ALTER MATERIALIZE TTL. Niveau : TABLE. Alias : MATERIALIZE TTL
    • ALTER SETTINGS. Niveau : TABLE. Alias : ALTER SETTING, ALTER MODIFY SETTING, MODIFY SETTING
    • ALTER MOVE PARTITION. Niveau : TABLE. Alias : ALTER MOVE PART, MOVE PARTITION, MOVE PART
    • ALTER FETCH PARTITION. Niveau : TABLE. Alias : ALTER FETCH PART, FETCH PARTITION, FETCH PART
    • ALTER FREEZE PARTITION. Niveau : TABLE. Alias : FREEZE PARTITION
    • ALTER EXECUTE. Niveau : TABLE. Alias : ALTER TABLE EXECUTE
    • ALTER VIEW. Niveau : GROUP
    • ALTER VIEW REFRESH. Niveau : VIEW. Alias : REFRESH VIEW
    • ALTER VIEW MODIFY QUERY. Niveau : VIEW. Alias : ALTER TABLE MODIFY QUERY
    • ALTER VIEW MODIFY SQL SECURITY. Niveau : VIEW. Alias : ALTER TABLE MODIFY SQL SECURITY

Exemples de traitement de cette hiérarchie :

  • Le privilège ALTER inclut tous les autres privilèges ALTER*.
  • ALTER CONSTRAINT inclut les privilèges ALTER ADD CONSTRAINT, ALTER DROP CONSTRAINT et ALTER MODIFY CONSTRAINT.

Remarques

  • Le privilège MODIFY SETTING permet de modifier les paramètres du moteur de table. Il n’affecte ni les settings ni les paramètres de configuration du serveur.
  • L’opération ATTACH nécessite le privilège CREATE.
  • L’opération DETACH nécessite le privilège DROP.
  • Pour arrêter une mutation avec la requête KILL MUTATION, vous devez disposer d’un privilège permettant de lancer cette mutation. Par exemple, si vous voulez arrêter la requête ALTER UPDATE, vous avez besoin du privilège ALTER UPDATE, ALTER TABLE ou ALTER.

BACKUP

Autorise l’exécution de [BACKUP] dans des requêtes. Pour plus d’informations sur les sauvegardes, consultez "Sauvegarde et restauration".

CREATE

Autorise l’exécution des requêtes DDL CREATE et ATTACH selon la hiérarchie de privilèges suivante :

  • CREATE. Niveau : GROUP
    • CREATE DATABASE. Niveau : DATABASE
    • CREATE TABLE. Niveau : TABLE
      • CREATE ARBITRARY TEMPORARY TABLE. Niveau : GLOBAL
        • CREATE TEMPORARY TABLE. Niveau : GLOBAL
    • CREATE VIEW. Niveau : VIEW
    • CREATE DICTIONARY. Niveau : DICTIONARY

Remarques

  • Pour supprimer la table créée, l’utilisateur doit disposer de DROP.

CLUSTER

Permet d’exécuter des requêtes ON CLUSTER.

Syntaxsql
GRANT CLUSTER ON *.* TO <username>

Par défaut, les requêtes avec ON CLUSTER requièrent que l'utilisateur dispose de l'autorisation CLUSTER. Vous obtiendrez l'erreur suivante si vous essayez d'utiliser ON CLUSTER dans une requête sans avoir au préalable octroyé le privilège CLUSTER :

Not enough privileges. To execute this query, it's necessary to have the grant CLUSTER ON *.*.

Le comportement par défaut peut être modifié en définissant le paramètre on_cluster_queries_require_cluster_grant, situé dans la section access_control_improvements de config.xml (voir ci-dessous), à false.

config.xmlyaml
<access_control_improvements>
    <on_cluster_queries_require_cluster_grant>true</on_cluster_queries_require_cluster_grant>
</access_control_improvements>

DROP

Permet d'exécuter les requêtes DROP et DETACH selon la hiérarchie de privilèges suivante :

  • DROP. Niveau : GROUP
    • DROP DATABASE. Niveau : DATABASE
    • DROP TABLE. Niveau : TABLE
    • DROP VIEW. Niveau : VIEW
    • DROP DICTIONARY. Niveau : DICTIONARY

TRUNCATE

Autorise l’exécution de requêtes TRUNCATE.

Niveau de privilège : TABLE.

OPTIMIZE

Autorise l'exécution de requêtes OPTIMIZE TABLE.

Niveau de privilège : TABLE.

SHOW

Permet d’exécuter les requêtes SHOW, DESCRIBE, USE et EXISTS selon la hiérarchie de privilèges suivante :

  • SHOW. Niveau : GROUP
    • SHOW DATABASES. Niveau : DATABASE. Permet d’exécuter les requêtes SHOW DATABASES, SHOW CREATE DATABASE, USE <database>.
    • SHOW TABLES. Niveau : TABLE. Permet d’exécuter les requêtes SHOW TABLES, EXISTS <table>, CHECK <table>.
    • SHOW COLUMNS. Niveau : COLUMN. Permet d’exécuter les requêtes SHOW CREATE TABLE, DESCRIBE.
    • SHOW DICTIONARIES. Niveau : DICTIONARY. Permet d’exécuter les requêtes SHOW DICTIONARIES, SHOW CREATE DICTIONARY, EXISTS <dictionary>.

Remarques

Un utilisateur dispose du privilège SHOW s’il possède au moins un autre privilège concernant la table, le dictionnaire ou la base de données en question.

KILL QUERY

Autorise l'exécution de requêtes KILL selon la hiérarchie de privilèges suivante :

Niveau de privilège : GLOBAL.

Notes

Le privilège KILL QUERY permet à un utilisateur d'interrompre les requêtes d'autres utilisateurs.

GESTION DES ACCÈS

Permet à un utilisateur d’exécuter des requêtes de gestion des utilisateurs, des rôles et des politiques de lignes.

  • ACCESS MANAGEMENT. Niveau : GROUP
    • CREATE USER. Niveau : GLOBAL
    • ALTER USER. Niveau : GLOBAL
    • DROP USER. Niveau : GLOBAL
    • CREATE ROLE. Niveau : GLOBAL
    • ALTER ROLE. Niveau : GLOBAL
    • DROP ROLE. Niveau : GLOBAL
    • ROLE ADMIN. Niveau : GLOBAL
    • CREATE ROW POLICY. Niveau : GLOBAL. Alias : CREATE POLICY
    • ALTER ROW POLICY. Niveau : GLOBAL. Alias : ALTER POLICY
    • DROP ROW POLICY. Niveau : GLOBAL. Alias : DROP POLICY
    • CREATE QUOTA. Niveau : GLOBAL
    • ALTER QUOTA. Niveau : GLOBAL
    • DROP QUOTA. Niveau : GLOBAL
    • CREATE SETTINGS PROFILE. Niveau : GLOBAL. Alias : CREATE PROFILE
    • ALTER SETTINGS PROFILE. Niveau : GLOBAL. Alias : ALTER PROFILE
    • DROP SETTINGS PROFILE. Niveau : GLOBAL. Alias : DROP PROFILE
    • SHOW ACCESS. Niveau : GROUP
      • SHOW_USERS. Niveau : GLOBAL. Alias : SHOW CREATE USER
      • SHOW_ROLES. Niveau : GLOBAL. Alias : SHOW CREATE ROLE
      • SHOW_ROW_POLICIES. Niveau : GLOBAL. Alias : SHOW POLICIES, SHOW CREATE ROW POLICY, SHOW CREATE POLICY
      • SHOW_QUOTAS. Niveau : GLOBAL. Alias : SHOW CREATE QUOTA
      • SHOW_SETTINGS_PROFILES. Niveau : GLOBAL. Alias : SHOW PROFILES, SHOW CREATE SETTINGS PROFILE, SHOW CREATE PROFILE
    • ALLOW SQL SECURITY NONE. Niveau : GLOBAL. Alias : CREATE SQL SECURITY NONE, SQL SECURITY NONE, SECURITY NONE

Le privilège ROLE ADMIN permet à un utilisateur d’attribuer et de révoquer tous les rôles, y compris ceux qui ne lui ont pas été attribués avec l’option admin.

SYSTEM

Permet à un utilisateur d’exécuter des requêtes SYSTEM selon la hiérarchie de privilèges suivante.

  • SYSTEM. Niveau : GROUP
    • SYSTEM SHUTDOWN. Niveau : GLOBAL. Alias : SYSTEM KILL, SHUTDOWN
    • SYSTEM DROP CACHE. Alias : DROP CACHE
      • SYSTEM DROP DNS CACHE. Niveau : GLOBAL. Alias : SYSTEM CLEAR DNS CACHE, SYSTEM DROP DNS, DROP DNS CACHE, DROP DNS
      • SYSTEM DROP MARK CACHE. Niveau : GLOBAL. Alias : SYSTEM CLEAR MARK CACHE, SYSTEM DROP MARK, DROP MARK CACHE, DROP MARKS
      • SYSTEM DROP UNCOMPRESSED CACHE. Niveau : GLOBAL. Alias : SYSTEM CLEAR UNCOMPRESSED CACHE, SYSTEM DROP UNCOMPRESSED, DROP UNCOMPRESSED CACHE, DROP UNCOMPRESSED
    • SYSTEM RELOAD. Niveau : GROUP
      • SYSTEM RELOAD CONFIG. Niveau : GLOBAL. Alias : RELOAD CONFIG
      • SYSTEM RELOAD DICTIONARY. Niveau : GLOBAL. Alias : SYSTEM RELOAD DICTIONARIES, RELOAD DICTIONARY, RELOAD DICTIONARIES, SYSTEM UNLOAD DICTIONARY, SYSTEM UNLOAD DICTIONARIES, UNLOAD DICTIONARY, UNLOAD DICTIONARIES
        • SYSTEM RELOAD EMBEDDED DICTIONARIES. Niveau : GLOBAL. Alias : RELOAD EMBEDDED DICTIONARIES
    • SYSTEM MERGES. Niveau : TABLE. Alias : SYSTEM STOP MERGES, SYSTEM START MERGES, STOP MERGES, START MERGES
    • SYSTEM TTL MERGES. Niveau : TABLE. Alias : SYSTEM STOP TTL MERGES, SYSTEM START TTL MERGES, STOP TTL MERGES, START TTL MERGES
    • SYSTEM FETCHES. Niveau : TABLE. Alias : SYSTEM STOP FETCHES, SYSTEM START FETCHES, STOP FETCHES, START FETCHES
    • SYSTEM MOVES. Niveau : TABLE. Alias : SYSTEM STOP MOVES, SYSTEM START MOVES, STOP MOVES, START MOVES
    • SYSTEM SENDS. Niveau : GROUP. Alias : SYSTEM STOP SENDS, SYSTEM START SENDS, STOP SENDS, START SENDS
      • SYSTEM DISTRIBUTED SENDS. Niveau : TABLE. Alias : SYSTEM STOP DISTRIBUTED SENDS, SYSTEM START DISTRIBUTED SENDS, STOP DISTRIBUTED SENDS, START DISTRIBUTED SENDS
      • SYSTEM REPLICATED SENDS. Niveau : TABLE. Alias : SYSTEM STOP REPLICATED SENDS, SYSTEM START REPLICATED SENDS, STOP REPLICATED SENDS, START REPLICATED SENDS
    • SYSTEM REPLICATION QUEUES. Niveau : TABLE. Alias : SYSTEM STOP REPLICATION QUEUES, SYSTEM START REPLICATION QUEUES, STOP REPLICATION QUEUES, START REPLICATION QUEUES
    • SYSTEM SYNC REPLICA. Niveau : TABLE. Alias : SYNC REPLICA
    • SYSTEM RESTART REPLICA. Niveau : TABLE. Alias : RESTART REPLICA
    • SYSTEM BACKGROUND. Niveau : GROUP
      • SYSTEM STREAMING ENGINES. Niveau : TABLE
      • SYSTEM VIEWS. Niveau : VIEW. Alias : SYSTEM REFRESH VIEW, SYSTEM START VIEWS, SYSTEM STOP VIEWS, SYSTEM START VIEW, SYSTEM STOP VIEW, SYSTEM PAUSE VIEWS, SYSTEM PAUSE VIEW, SYSTEM CANCEL VIEW, REFRESH VIEW, START VIEWS, STOP VIEWS, START VIEW, STOP VIEW, PAUSE VIEWS, PAUSE VIEW, CANCEL VIEW
    • SYSTEM FLUSH. Niveau : GROUP
      • SYSTEM FLUSH DISTRIBUTED. Niveau : TABLE. Alias : FLUSH DISTRIBUTED
      • SYSTEM FLUSH LOGS. Niveau : GLOBAL. Alias : FLUSH LOGS

Les commandes SYSTEM UNLOAD DICTIONARY et SYSTEM UNLOAD DICTIONARIES réutilisent le privilège SYSTEM RELOAD DICTIONARY, de sorte qu’un utilisateur disposant de SYSTEM RELOAD DICTIONARY peut également décharger des dictionnaires.

Le privilège SYSTEM RELOAD EMBEDDED DICTIONARIES est implicitement accordé par le privilège SYSTEM RELOAD DICTIONARY ON *.*.

INTROSPECTION

Permet d'utiliser les fonctions d'introspection.

  • INTROSPECTION. Niveau : GROUP. Alias : INTROSPECTION FUNCTIONS
    • addressToLine. Niveau : GLOBAL
    • addressToLineWithInlines. Niveau : GLOBAL
    • addressToSymbol. Niveau : GLOBAL
    • demangle. Niveau : GLOBAL

SOURCES

Permet d’utiliser des sources de données externes. S’applique aux moteurs de table et aux fonctions de table.

  • READ. Niveau : GLOBAL_WITH_PARAMETER
  • WRITE. Niveau : GLOBAL_WITH_PARAMETER

Paramètres possibles :

  • AZURE
  • BIGQUERY
  • FILE
  • HDFS
  • HIVE
  • JDBC
  • KAFKA
  • MONGO
  • MYSQL
  • NATS
  • ODBC
  • POSTGRES
  • RABBITMQ
  • REDIS
  • REMOTE
  • S3
  • SQLITE
  • URL

Exemples :

  • Pour créer une table avec le moteur de table MySQL, vous devez disposer de CREATE TABLE (ON db.table_name) et des privilèges MYSQL.
  • Pour utiliser la fonction de table mysql, vous devez disposer de CREATE TEMPORARY TABLE et des privilèges MYSQL.

Privilèges de filtrage des sources

Vous pouvez accorder l'accès à des URI de sources spécifiques en utilisant des filtres par expression régulière. Cela permet de contrôler avec précision les sources de données externes auxquelles les utilisateurs peuvent accéder.

Syntaxe :

GRANT READ ON S3('regexp_pattern') TO user

Cette autorisation permet à l'utilisateur de lire uniquement des URI S3 correspondant au motif d'expression régulière spécifié.

Exemples :

Accorder l'accès à des chemins spécifiques dans un bucket S3 :

-- Allow user to read only from s3://foo/ paths
GRANT READ ON S3('s3://foo/.*') TO john

-- Allow user to read from specific file patterns
GRANT READ ON S3('s3://mybucket/data/2024/.*\.parquet') TO analyst

-- Multiple filters can be granted to the same user
GRANT READ ON S3('s3://foo/.*') TO john
GRANT READ ON S3('s3://bar/.*') TO john

Nouvelle attribution avec GRANT OPTION :

Si l’autorisation d’origine inclut WITH GRANT OPTION, il peut être réattribué à l’aide de GRANT CURRENT GRANTS :

-- Original grant with GRANT OPTION
GRANT READ ON S3('s3://foo/.*') TO john WITH GRANT OPTION

-- John can now regrant this access to others
GRANT CURRENT GRANTS(READ ON S3) TO alice

Limitations importantes :

  • Les révocations partielles ne sont pas autorisées : vous ne pouvez pas révoquer une partie d’un filtre déjà accordé. Vous devez révoquer l’autorisation dans son intégralité, puis l’accorder de nouveau avec de nouveaux motifs si nécessaire.
  • Les autorisations avec caractères génériques ne sont pas autorisées : vous ne pouvez pas utiliser GRANT READ ON *('regexp') ni d’autres motifs composés uniquement de caractères génériques. Vous devez fournir une source spécifique.

dictGet

  • dictGet. Alias : dictHas, dictGetHierarchy, dictGetRoot, dictGetChildren, dictGetDescendants, dictIsIn

Permet à un utilisateur d’exécuter les fonctions dictGet, dictHas, dictGetHierarchy, dictGetRoot, dictGetChildren, dictGetDescendants, dictIsIn.

Niveau de privilège : DICTIONARY.

Exemples

  • GRANT dictGet ON mydb.mydictionary TO john
  • GRANT dictGet ON mydictionary TO john

displaySecretsInShowAndSelect

Permet à un utilisateur de voir les secrets dans les requêtes SHOW et SELECT si les deux paramètres suivants sont activés : paramètre du serveur display_secrets_in_show_and_select et paramètre de format format_display_secrets_in_show_and_select.

NAMED COLLECTION ADMIN

Autorise une opération donnée sur une collection nommée spécifiée. Avant la version 23.7, cela s'appelait NAMED COLLECTION CONTROL ; à partir de la version 23.7, NAMED COLLECTION ADMIN a été ajouté et NAMED COLLECTION CONTROL est conservé comme alias.

  • NAMED COLLECTION ADMIN. Niveau : NAMED_COLLECTION. Alias : NAMED COLLECTION CONTROL
    • CREATE NAMED COLLECTION. Niveau : NAMED_COLLECTION
    • DROP NAMED COLLECTION. Niveau : NAMED_COLLECTION
    • ALTER NAMED COLLECTION. Niveau : NAMED_COLLECTION
    • SHOW NAMED COLLECTIONS. Niveau : NAMED_COLLECTION. Alias : SHOW NAMED COLLECTIONS
    • SHOW NAMED COLLECTIONS SECRETS. Niveau : NAMED_COLLECTION. Alias : SHOW NAMED COLLECTIONS SECRETS
    • NAMED COLLECTION. Niveau : NAMED_COLLECTION. Alias : NAMED COLLECTION USAGE, USE NAMED COLLECTION

Contrairement à toutes les autres autorisations (CREATE, DROP, ALTER, SHOW), l’autorisation NAMED COLLECTION n'a été ajoutée qu'en 23.7, alors que toutes les autres l'ont été plus tôt, en 22.12.

Exemples

En supposant qu'une collection nommée s'appelle abc, nous accordons le privilège CREATE NAMED COLLECTION à l'utilisateur john.

  • GRANT CREATE NAMED COLLECTION ON abc TO john

MOTEUR DE TABLE

Non pris en charge par ClickHouse Cloud

Permet d’utiliser un moteur de table donné lors de la création d’une table. S’applique aux moteurs de table.

Exemples

  • GRANT TABLE ENGINE ON * TO john
  • GRANT TABLE ENGINE ON TinyLog TO john

Certains moteurs de table avec des sources externes peuvent nécessiter les autorisations READ/WRITE sur la source correspondante. Voir Sources.

Par exemple, pour le moteur de table AzureBlobStorage, l’autorisation suivante peut être requise.

  • GRANT READ, WRITE ON AZURE TO john

ALL

Non pris en charge par ClickHouse Cloud

Accorde tous les privilèges sur l’entité concernée à un compte utilisateur ou à un rôle.

NONE

N’accorde aucun privilège.

ADMIN OPTION

Le privilège ADMIN OPTION permet à un utilisateur d’accorder son rôle à un autre utilisateur.

Navigation