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 句は、user または role に ADMIN OPTION 権限を付与します。
WITH REPLACE OPTION 句は、user または role に対して既存のロールを新しいロールに置き換えます。指定されていない場合は、既存のロールにロールを追加します。
GRANT CURRENT GRANTS 構文
privilege— 権限の種類。role— ClickHouse のユーザーロール。user— ClickHouse のユーザーアカウント。
CURRENT GRANTS ステートメントを使用すると、指定したユーザーまたはロールに、指定したすべての権限を付与できます。
権限が 1 つも指定されていない場合、そのユーザーまたはロールには、CURRENT_USER に対して利用可能なすべての権限が付与されます。
使用方法
GRANT を使用するには、アカウントに GRANT OPTION 権限が付与されている必要があります。アカウントに付与されている権限の範囲内でのみ権限を付与できます。
たとえば、管理者が次のクエリを使って john アカウントに権限を付与したとします。
これは john が次の操作を実行する権限を持つことを意味します。
SELECT x,y FROM db.tableSELECT x FROM db.tableSELECT 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 テーブルには新しいユーザーでもデフォルトでアクセスできますが、GRANT がないとデフォルトですべての system テーブルにアクセスできるとは限りません。
さらに、system.zookeeper など特定の system テーブルへのアクセスは、セキュリティ上の理由から Cloud ユーザーには制限されています。
1 つのクエリで複数のアカウントに複数の権限を付与できます。GRANT SELECT, INSERT ON *.* TO john, robin クエリは、アカウント john と robin に、サーバー上のすべてのデータベース内のすべてのテーブルに対して INSERT および SELECT クエリを実行することを許可します。
ワイルドカードによる権限付与
権限を指定する際、テーブル名やデータベース名の代わりにアスタリスク(*)を使用できます。たとえば、GRANT SELECT ON db.* TO john クエリは、データベース db 内のすべてのテーブルに対して、john が SELECT クエリを実行できるようにします。
また、データベース名を省略することもできます。この場合、権限は現在のデータベースに対して付与されます。
たとえば、GRANT SELECT ON * TO john は現在のデータベース内のすべてのテーブルに対する権限を付与し、GRANT SELECT ON mytable TO john は現在のデータベース内の mytable テーブルに対する権限を付与します。
以下で説明する機能は ClickHouse バージョン 24.10 以降で利用可能です。
テーブル名やデータベース名の末尾にアスタリスクを付けることもできます。この機能により、テーブルパスの抽象的な接頭辞に対して権限を付与できます。
例: GRANT SELECT ON db.my_tables* TO john。このクエリにより、john は db データベース内の、my_tables という接頭辞を持つすべてのテーブルに対して SELECT クエリを実行できるようになります。
その他の例:
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 TRANSACTIONMOVE PARTITION BETWEEN SHARDSNAMED COLLECTION 管理ALTER 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— 権限は 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 は db.table の x カラムおよび/または y カラムのデータを含む任意の SELECT クエリを実行できます。たとえば、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 は db.table の x カラムおよび y カラムの一方または両方にデータを挿入できます。
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] を実行できるようにします。バックアップの詳細については「Backup and Restore」を参照してください。
CREATE
次の権限階層に従って、CREATE および ATTACH の DDL クエリを実行できます:
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 権限が付与されている必要があります。
CLUSTER 権限を付与せずにクエリ内で ON CLUSTER を使用しようとすると、次のエラーが発生します:
デフォルトの動作は、config.xml の access_control_improvements セクション内にある on_cluster_queries_require_cluster_grant を false にすることで変更できます(下記参照)。
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>クエリの実行を許可します。
Notes
ユーザーは、指定されたテーブル、dictionary、またはデータベースに関するいずれかの権限を持っている場合、SHOW 権限を持っているとみなされます。
KILL QUERY
KILL クエリを、次の権限レベルの階層に従って実行できます:
権限レベル:GLOBAL
注記
KILL QUERY 権限により、あるユーザーが他のユーザーのクエリを強制終了できます。
ACCESS MANAGEMENT
ユーザーが、ユーザー、ロール、および行ポリシーを管理するためのクエリを実行できるようにします。
ACCESS MANAGEMENT. Level:GROUPCREATE USER. Level:GLOBALALTER USER. Level:GLOBALDROP USER. Level:GLOBALCREATE ROLE. Level:GLOBALALTER ROLE. Level:GLOBALDROP ROLE. Level:GLOBALROLE ADMIN. Level:GLOBALCREATE ROW POLICY. Level:GLOBAL. Aliases:CREATE POLICYALTER ROW POLICY. Level:GLOBAL. Aliases:ALTER POLICYDROP ROW POLICY. Level:GLOBAL. Aliases:DROP POLICYCREATE QUOTA. Level:GLOBALALTER QUOTA. Level:GLOBALDROP QUOTA. Level:GLOBALCREATE SETTINGS PROFILE. Level:GLOBAL. Aliases:CREATE PROFILEALTER SETTINGS PROFILE. Level:GLOBAL. Aliases:ALTER PROFILEDROP SETTINGS PROFILE. Level:GLOBAL. Aliases:DROP PROFILESHOW ACCESS. Level:GROUPSHOW_USERS. Level:GLOBAL. Aliases:SHOW CREATE USERSHOW_ROLES. Level:GLOBAL. Aliases:SHOW CREATE ROLESHOW_ROW_POLICIES. Level:GLOBAL. Aliases:SHOW POLICIES,SHOW CREATE ROW POLICY,SHOW CREATE POLICYSHOW_QUOTAS. Level:GLOBAL. Aliases:SHOW CREATE QUOTASHOW_SETTINGS_PROFILES. Level:GLOBAL. Aliases:SHOW PROFILES,SHOW CREATE SETTINGS PROFILE,SHOW CREATE PROFILE
ALLOW SQL SECURITY NONE. Level:GLOBAL. Aliases: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. Level:GROUP. Aliases:INTROSPECTION FUNCTIONSaddressToLine. Level:GLOBALaddressToLineWithInlines. Level:GLOBALaddressToSymbol. Level:GLOBALdemangle. Level:GLOBAL
SOURCES
外部データソースを使用できるようにします。テーブルエンジン および テーブル関数 に適用されます。
READ。レベル:GLOBAL_WITH_PARAMETERWRITE。レベル:GLOBAL_WITH_PARAMETER
指定可能なパラメータ:
AZUREFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
ソースに対する READ/WRITE 権限を分離して付与できるようになったのは、バージョン 25.7 以降であり、かつサーバー設定
access_control_improvements.enable_read_write_grants
が有効な場合のみです。
それ以外の場合は、新しい構文 GRANT READ, WRITE ON AZURE TO user と同等である GRANT AZURE ON *.* 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 バケットパスへのアクセス権を付与:
Source filter はパラメータとして regexp を受け取るため、次のような権限付与により
GRANT READ ON URL('http://www.google.com') TO john;
以下のようなクエリが許可されます。
. は正規表現内で Any Single Character として扱われるためです。
これにより脆弱性が生じる可能性があります。正しい GRANT は次のとおりです。
GRANT OPTION を伴う再付与:
元の権限付与に WITH GRANT OPTION が含まれている場合、GRANT CURRENT GRANTS を使用して再度付与できます:
重要な制限事項:
- 部分的な取り消しはできません: 付与したフィルターパターンの一部だけを取り消すことはできません。必要な場合は、付与全体をいったん取り消し、新しいパターンで改めて付与する必要があります。
- ワイルドカードを使用した GRANT はできません:
GRANT READ ON *('regexp')のような、ワイルドカードのみを用いたパターンは使用できません。必ず特定のソースを指定する必要があります。
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
指定した named collection に対する特定の操作を許可します。バージョン 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 で追加されています。
例
named collection の名前が abc であると仮定し、ユーザー john に権限 CREATE NAMED COLLECTION を付与します。
GRANT CREATE NAMED COLLECTION ON abc TO john
TABLE ENGINE
テーブルを作成する際に、指定したテーブルエンジンを使用してテーブルを作成できます。テーブルエンジンに対して適用されます。
例
GRANT TABLE ENGINE ON * TO johnGRANT TABLE ENGINE ON TinyLog TO john
デフォルトでは下位互換性のため、特定のテーブルエンジンを指定してテーブルを作成しても、GRANT は無視されます。
ただし、config.xml で table_engines_require_grant を true に設定することで、この動作を変更できます。
ALL
対象エンティティ上のすべての権限をユーザーアカウントまたはロールに付与します。
権限 ALL は、default ユーザーに制限された権限しかない ClickHouse Cloud ではサポートされていません。default_role を付与することで、ユーザーに最大限の権限を付与できます。詳細はこちらを参照してください。
また、default ユーザーとして GRANT CURRENT GRANTS を使用することで、ALL と同様の効果を得ることもできます。
NONE
権限は一切付与されません。
ADMIN OPTION
ADMIN OPTION 権限を持つユーザーは、自身のロールを他のユーザーに付与できます。