- 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 OPTIONCela 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_grantedGRANT 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 -- grantedToutes 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 -- wrongPrivilè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 :
ALLGESTION DES ACCÈSALLOW 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 CONSTRAINTALTER MODIFY 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 UPDATEALTER TABLE EXECUTE
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
INSERTINTROSPECTIONaddressToLineaddressToLineWithInlinesaddressToSymboldemangle
KILL QUERYKILL TRANSACTIONMOVE PARTITION BETWEEN SHARDSNAMED COLLECTION ADMINALTER NAMED COLLECTIONCREATE NAMED COLLECTIONDROP NAMED COLLECTIONNAMED COLLECTIONSHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS
OPTIMIZESELECTSET DEFINERSHOWSHOW COLUMNSSHOW DATABASESSHOW DICTIONARIESSHOW TABLES
SHOW FILESYSTEM CACHESSOURCESAZUREBIGQUERYFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
SYSTEMSYSTEM BACKGROUNDSYSTEM STREAMING ENGINESSYSTEM VIEWS
SYSTEM 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 REPLICASYSTEM FAILPOINTSYSTEM FETCHESSYSTEM FLUSHSYSTEM FLUSH ASYNC INSERT QUEUESYSTEM FLUSH LOGS
SYSTEM JEMALLOCSYSTEM LISTENSYSTEM LOAD PRIMARY KEYSYSTEM MERGESSYSTEM MOVESSYSTEM PULLING REPLICATION LOGSYSTEM REDUCE BLOCKING PARTSSYSTEM REPLICATION QUEUESSYSTEM REPLICA READINESSSYSTEM RESET DDL WORKERSYSTEM 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 VIRTUAL PARTS UPDATESYSTEM WAIT LOADING PARTS
TABLE ENGINETRUNCATEUNDROP TABLE
NONE
Exemples de la manière dont cette hiérarchie est appliquée :
- Le privilège
ALTERinclut tous les autres privilègesALTER*. ALTER CONSTRAINTinclut les privilègesALTER ADD CONSTRAINT,ALTER DROP CONSTRAINTetALTER 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 niveauGROUPest 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 userGRANT SELECT ON db.* TO user
Exemples de syntaxe non autorisée :
GRANT CREATE USER(x) ON db.table TO userGRANT 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 johnCe 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 johnLe 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 :GROUPALTER UPDATE. Niveau :COLUMN. Alias :UPDATEALTER DELETE. Niveau :COLUMN. Alias :DELETEALTER COLUMN. Niveau :GROUPALTER ADD COLUMN. Niveau :COLUMN. Alias :ADD COLUMNALTER DROP COLUMN. Niveau :COLUMN. Alias :DROP COLUMNALTER MODIFY COLUMN. Niveau :COLUMN. Alias :MODIFY COLUMNALTER COMMENT COLUMN. Niveau :COLUMN. Alias :COMMENT COLUMNALTER CLEAR COLUMN. Niveau :COLUMN. Alias :CLEAR COLUMNALTER RENAME COLUMN. Niveau :COLUMN. Alias :RENAME COLUMNALTER INDEX. Niveau :GROUP. Alias :INDEXALTER ORDER BY. Niveau :TABLE. Alias :ALTER MODIFY ORDER BY,MODIFY ORDER BYALTER SAMPLE BY. Niveau :TABLE. Alias :ALTER MODIFY SAMPLE BY,MODIFY SAMPLE BYALTER ADD INDEX. Niveau :TABLE. Alias :ADD INDEXALTER DROP INDEX. Niveau :TABLE. Alias :DROP INDEXALTER MATERIALIZE INDEX. Niveau :TABLE. Alias :MATERIALIZE INDEXALTER CLEAR INDEX. Niveau :TABLE. Alias :CLEAR INDEXALTER CONSTRAINT. Niveau :GROUP. Alias :CONSTRAINTALTER ADD CONSTRAINT. Niveau :TABLE. Alias :ADD CONSTRAINTALTER DROP CONSTRAINT. Niveau :TABLE. Alias :DROP CONSTRAINTALTER MODIFY CONSTRAINT. Niveau :TABLE. Alias :MODIFY CONSTRAINTALTER TTL. Niveau :TABLE. Alias :ALTER MODIFY TTL,MODIFY TTLALTER MATERIALIZE TTL. Niveau :TABLE. Alias :MATERIALIZE TTLALTER SETTINGS. Niveau :TABLE. Alias :ALTER SETTING,ALTER MODIFY SETTING,MODIFY SETTINGALTER MOVE PARTITION. Niveau :TABLE. Alias :ALTER MOVE PART,MOVE PARTITION,MOVE PARTALTER FETCH PARTITION. Niveau :TABLE. Alias :ALTER FETCH PART,FETCH PARTITION,FETCH PARTALTER FREEZE PARTITION. Niveau :TABLE. Alias :FREEZE PARTITIONALTER EXECUTE. Niveau :TABLE. Alias :ALTER TABLE EXECUTEALTER VIEW. Niveau :GROUPALTER VIEW REFRESH. Niveau :VIEW. Alias :REFRESH VIEWALTER VIEW MODIFY QUERY. Niveau :VIEW. Alias :ALTER TABLE MODIFY QUERYALTER VIEW MODIFY SQL SECURITY. Niveau :VIEW. Alias :ALTER TABLE MODIFY SQL SECURITY
Exemples de traitement de cette hiérarchie :
- Le privilège
ALTERinclut tous les autres privilègesALTER*. ALTER CONSTRAINTinclut les privilègesALTER ADD CONSTRAINT,ALTER DROP CONSTRAINTetALTER MODIFY CONSTRAINT.
Remarques
- Le privilège
MODIFY SETTINGpermet 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
ATTACHnécessite le privilège CREATE. - L’opération
DETACHné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ègeALTER UPDATE,ALTER TABLEouALTER.
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 :GROUPCREATE DATABASE. Niveau :DATABASECREATE TABLE. Niveau :TABLECREATE ARBITRARY TEMPORARY TABLE. Niveau :GLOBALCREATE TEMPORARY TABLE. Niveau :GLOBAL
CREATE VIEW. Niveau :VIEWCREATE 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.
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.
<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 :GROUPDROP DATABASE. Niveau :DATABASEDROP TABLE. Niveau :TABLEDROP VIEW. Niveau :VIEWDROP 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 :GROUPSHOW DATABASES. Niveau :DATABASE. Permet d’exécuter les requêtesSHOW DATABASES,SHOW CREATE DATABASE,USE <database>.SHOW TABLES. Niveau :TABLE. Permet d’exécuter les requêtesSHOW TABLES,EXISTS <table>,CHECK <table>.SHOW COLUMNS. Niveau :COLUMN. Permet d’exécuter les requêtesSHOW CREATE TABLE,DESCRIBE.SHOW DICTIONARIES. Niveau :DICTIONARY. Permet d’exécuter les requêtesSHOW 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 :GROUPCREATE USER. Niveau :GLOBALALTER USER. Niveau :GLOBALDROP USER. Niveau :GLOBALCREATE ROLE. Niveau :GLOBALALTER ROLE. Niveau :GLOBALDROP ROLE. Niveau :GLOBALROLE ADMIN. Niveau :GLOBALCREATE ROW POLICY. Niveau :GLOBAL. Alias :CREATE POLICYALTER ROW POLICY. Niveau :GLOBAL. Alias :ALTER POLICYDROP ROW POLICY. Niveau :GLOBAL. Alias :DROP POLICYCREATE QUOTA. Niveau :GLOBALALTER QUOTA. Niveau :GLOBALDROP QUOTA. Niveau :GLOBALCREATE SETTINGS PROFILE. Niveau :GLOBAL. Alias :CREATE PROFILEALTER SETTINGS PROFILE. Niveau :GLOBAL. Alias :ALTER PROFILEDROP SETTINGS PROFILE. Niveau :GLOBAL. Alias :DROP PROFILESHOW ACCESS. Niveau :GROUPSHOW_USERS. Niveau :GLOBAL. Alias :SHOW CREATE USERSHOW_ROLES. Niveau :GLOBAL. Alias :SHOW CREATE ROLESHOW_ROW_POLICIES. Niveau :GLOBAL. Alias :SHOW POLICIES,SHOW CREATE ROW POLICY,SHOW CREATE POLICYSHOW_QUOTAS. Niveau :GLOBAL. Alias :SHOW CREATE QUOTASHOW_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 :GROUPSYSTEM SHUTDOWN. Niveau :GLOBAL. Alias :SYSTEM KILL,SHUTDOWNSYSTEM DROP CACHE. Alias :DROP CACHESYSTEM DROP DNS CACHE. Niveau :GLOBAL. Alias :SYSTEM CLEAR DNS CACHE,SYSTEM DROP DNS,DROP DNS CACHE,DROP DNSSYSTEM DROP MARK CACHE. Niveau :GLOBAL. Alias :SYSTEM CLEAR MARK CACHE,SYSTEM DROP MARK,DROP MARK CACHE,DROP MARKSSYSTEM DROP UNCOMPRESSED CACHE. Niveau :GLOBAL. Alias :SYSTEM CLEAR UNCOMPRESSED CACHE,SYSTEM DROP UNCOMPRESSED,DROP UNCOMPRESSED CACHE,DROP UNCOMPRESSED
SYSTEM RELOAD. Niveau :GROUPSYSTEM RELOAD CONFIG. Niveau :GLOBAL. Alias :RELOAD CONFIGSYSTEM RELOAD DICTIONARY. Niveau :GLOBAL. Alias :SYSTEM RELOAD DICTIONARIES,RELOAD DICTIONARY,RELOAD DICTIONARIES,SYSTEM UNLOAD DICTIONARY,SYSTEM UNLOAD DICTIONARIES,UNLOAD DICTIONARY,UNLOAD DICTIONARIESSYSTEM RELOAD EMBEDDED DICTIONARIES. Niveau :GLOBAL. Alias :RELOAD EMBEDDED DICTIONARIES
SYSTEM MERGES. Niveau :TABLE. Alias :SYSTEM STOP MERGES,SYSTEM START MERGES,STOP MERGES,START MERGESSYSTEM TTL MERGES. Niveau :TABLE. Alias :SYSTEM STOP TTL MERGES,SYSTEM START TTL MERGES,STOP TTL MERGES,START TTL MERGESSYSTEM FETCHES. Niveau :TABLE. Alias :SYSTEM STOP FETCHES,SYSTEM START FETCHES,STOP FETCHES,START FETCHESSYSTEM MOVES. Niveau :TABLE. Alias :SYSTEM STOP MOVES,SYSTEM START MOVES,STOP MOVES,START MOVESSYSTEM SENDS. Niveau :GROUP. Alias :SYSTEM STOP SENDS,SYSTEM START SENDS,STOP SENDS,START SENDSSYSTEM DISTRIBUTED SENDS. Niveau :TABLE. Alias :SYSTEM STOP DISTRIBUTED SENDS,SYSTEM START DISTRIBUTED SENDS,STOP DISTRIBUTED SENDS,START DISTRIBUTED SENDSSYSTEM 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 QUEUESSYSTEM SYNC REPLICA. Niveau :TABLE. Alias :SYNC REPLICASYSTEM RESTART REPLICA. Niveau :TABLE. Alias :RESTART REPLICASYSTEM BACKGROUND. Niveau :GROUPSYSTEM STREAMING ENGINES. Niveau :TABLESYSTEM 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 :GROUPSYSTEM FLUSH DISTRIBUTED. Niveau :TABLE. Alias :FLUSH DISTRIBUTEDSYSTEM 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 FUNCTIONSaddressToLine. Niveau :GLOBALaddressToLineWithInlines. Niveau :GLOBALaddressToSymbol. Niveau :GLOBALdemangle. 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_PARAMETERWRITE. Niveau :GLOBAL_WITH_PARAMETER
Paramètres possibles :
AZUREBIGQUERYFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
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ègesMYSQL. - Pour utiliser la fonction de table mysql, vous devez disposer de
CREATE TEMPORARY TABLEet des privilègesMYSQL.
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 userCette 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 johnNouvelle 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 aliceLimitations 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 johnGRANT 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 CONTROLCREATE NAMED COLLECTION. Niveau :NAMED_COLLECTIONDROP NAMED COLLECTION. Niveau :NAMED_COLLECTIONALTER NAMED COLLECTION. Niveau :NAMED_COLLECTIONSHOW NAMED COLLECTIONS. Niveau :NAMED_COLLECTION. Alias :SHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS. Niveau :NAMED_COLLECTION. Alias :SHOW NAMED COLLECTIONS SECRETSNAMED 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
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 johnGRANT 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
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.