メインコンテンツへスキップ
  • 権限を ClickHouse のユーザーアカウントまたはロールに付与します。
  • ロールをユーザーアカウントまたは他のロールに割り当てます。
権限を取り消すには、REVOKEステートメントを使用します。付与されている権限は、SHOW GRANTSステートメントで確認できます。

権限付与の構文

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 — 権限の種類。
  • role — ClickHouse のユーザーロール。
  • user — ClickHouse のユーザーアカウント。
WITH GRANT OPTION 句は、user または roleGRANT クエリを実行する権限を付与します。ユーザーは、自身が持つ権限と同じスコープ、またはそれより狭いスコープの権限を付与できます。 WITH REPLACE OPTION 句は、user または role に対する既存の権限を新しい権限で置き換えます。これが指定されていない場合は、権限が追加されます。

ロールの割り当て構文

GRANT [ON CLUSTER cluster_name] role [,...] TO {user | another_role | CURRENT_USER} [,...] [WITH ADMIN OPTION] [WITH REPLACE OPTION]
  • role — ClickHouse のユーザーロール。
  • user — ClickHouse のユーザーアカウント。
WITH ADMIN OPTION 句は、user または roleADMIN OPTION 権限を付与します。 WITH REPLACE OPTION 句は、user または role の既存のロールを新しいロールで置き換えます。指定しない場合は、ロールが追加されます。

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 — 権限の種類。
  • role — ClickHouse のユーザーロール。
  • user — ClickHouse のユーザーアカウント。
CURRENT GRANTS ステートメントを使用すると、指定したすべての権限を、指定したユーザーまたはロールに付与できます。 権限が何も指定されていない場合は、指定したユーザーまたはロールに CURRENT_USER で利用可能なすべての権限が付与されます。

使用方法

GRANT を使用するには、アカウントに GRANT OPTION 権限が必要です。権限を付与できるのは、自身のアカウントに与えられている権限の範囲内に限られます。 たとえば、管理者は次のクエリで john アカウントに権限を付与しています。
GRANT SELECT(x,y) ON db.table TO john WITH GRANT OPTION
これは、john に次の実行権限があることを意味します。
  • SELECT x,y FROM db.table.
  • SELECT x FROM db.table.
  • SELECT y FROM db.table.
johnSELECT z FROM db.table を実行できません。SELECT * FROM db.table も実行できません。このクエリを処理する場合、ClickHouse は xy についてもデータを一切返しません。唯一の例外は、テーブルに xy のカラムしかない場合です。この場合、ClickHouse はすべてのデータを返します。 また、johnGRANT OPTION 権限も持っているため、同じスコープまたはそれより狭いスコープの権限を他のユーザーに付与できます。 system データベースへのアクセスは常に許可されます (このデータベースはクエリの処理に使用されるためです) 。
新規ユーザーがデフォルトでアクセスできるシステムテーブルは多数ありますが、権限が付与されていない場合、すべてのシステムテーブルにデフォルトでアクセスできるわけではありません。 さらに、system.zookeeper など一部のシステムテーブルへのアクセスは、セキュリティ上の理由により Cloud ユーザーには制限されています。
1 つのクエリで、複数のアカウントに複数の権限を付与できます。クエリ GRANT SELECT, INSERT ON *.* TO john, robin を使用すると、アカウント johnrobin は、サーバー上のすべてのデータベース内のすべてのテーブルに対して INSERT クエリと SELECT クエリを実行できます。

ワイルドカードを使った権限付与

権限を指定する際は、テーブル名やデータベース名の代わりにアスタリスク (*) を使用できます。たとえば、GRANT SELECT ON db.* TO john クエリでは、johndb データベース内のすべてのテーブルに対する SELECT クエリの実行を許可します。 また、データベース名を省略することもできます。この場合、権限は現在のデータベースに対して付与されます。 たとえば、GRANT SELECT ON * TO john は現在のデータベース内のすべてのテーブルに対する権限を付与し、GRANT SELECT ON mytable TO john は現在のデータベース内の mytable テーブルに対する権限を付与します。
以下で説明する機能は、ClickHouse バージョン 24.10 以降で利用できます。
テーブル名またはデータベース名の末尾にアスタリスクを付けることもできます。この機能を使うと、テーブルのパスのプレフィックスを指定して権限を付与できます。 例: GRANT SELECT ON db.my_tables* TO john。このクエリでは、johndb データベース内で my_tables をプレフィックスに持つすべてのテーブルに対する SELECT クエリの実行を許可します。 さらに例を示します。 GRANT SELECT ON db.my_tables* TO john
SELECT * FROM db.my_tables -- 許可済み
SELECT * FROM db.my_tables_0 -- 許可済み
SELECT * FROM db.my_tables_1 -- 許可済み

SELECT * FROM db.other_table -- 未許可
SELECT * FROM db2.my_tables -- 未許可
GRANT SELECT ON db*.* TO john
SELECT * FROM db.my_tables -- 許可済み
SELECT * FROM db.my_tables_0 -- 許可済み
SELECT * FROM db.my_tables_1 -- 許可済み
SELECT * FROM db.other_table -- 許可済み
SELECT * FROM db2.my_tables -- 許可済み
付与されたパス内で新たに作成されたすべてのテーブルは、自動的に親からすべての権限を継承します。 たとえば、GRANT SELECT ON db.* TO john クエリを実行した後に新しいテーブル db.new_table を作成すると、ユーザー johnSELECT * FROM db.new_table クエリを実行できます。 アスタリスクを指定できるのは、プレフィックスに対してのみです。
GRANT SELECT ON db.* TO john -- 正しい
GRANT SELECT ON db*.* TO john -- 正しい

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

権限

権限とは、ユーザーに対して特定の種類のクエリの実行を許可するものです。 権限には階層構造があり、実行できるクエリの範囲は権限のスコープによって決まります。 ClickHouse における権限の階層は以下のとおりです。
  • ALL
    • アクセス管理
      • 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 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
      • FILE
      • HDFS
      • HIVE
      • JDBC
      • KAFKA
      • MONGO
      • MYSQL
      • NATS
      • ODBC
      • POSTGRES
      • RABBITMQ
      • REDIS
      • REMOTE
      • S3
      • SQLITE
      • URL
    • SYSTEM
      • 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 PRIMARY INDEX CACHE
      • SYSTEM DROP REPLICA
      • SYSTEM FAILPOINT
      • SYSTEM FETCHES
      • SYSTEM FLUSH
        • SYSTEM FLUSH ASYNC INSERT QUEUE
        • SYSTEM FLUSH LOGS
      • SYSTEM JEMALLOC
      • SYSTEM KILL QUERY
      • SYSTEM KILL TRANSACTION
      • 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 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 VIEWS
      • SYSTEM VIRTUAL PARTS UPDATE
      • SYSTEM WAIT LOADING PARTS
    • テーブルエンジン
    • TRUNCATE
    • UNDROP 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 user
  • GRANT SELECT ON db.* TO user
許可されない構文の例:
  • GRANT CREATE USER(x) ON db.table TO user
  • GRANT CREATE USER ON db.* TO user
特別な権限 ALL は、ユーザーアカウントまたはロールにすべての権限を付与します。 デフォルトでは、ユーザーアカウントまたはロールには権限がありません。 ユーザーまたはロールに権限がない場合は、NONE 権限として表示されます。 一部のクエリは、その実装上、一連の権限を必要とします。たとえば、RENAME クエリを実行するには、次の権限が必要です: SELECTCREATE TABLEINSERTDROP TABLE

SELECT

SELECT クエリの実行を許可します。 権限レベル: COLUMN 説明 この権限が付与されたユーザーは、指定したデータベースおよびテーブルにおいて、指定したカラムの一覧に対する SELECT クエリを実行できます。指定されたもの以外のカラムをユーザーが含めた場合、そのクエリはデータを返しません。 次の権限について考えてみましょう。
GRANT SELECT(x,y) ON db.table TO john
この権限により、johndb.tablex および/または y カラムのデータを含む任意の SELECT クエリを実行できます。たとえば、SELECT x FROM db.table です。johnSELECT z FROM db.table を実行できません。SELECT * FROM db.table も実行できません。このクエリを処理しても、ClickHouse は xy を含め、データを一切返しません。唯一の例外は、テーブルに xy のカラムしかない場合で、この場合は ClickHouse がすべてのデータを返します。

INSERT

INSERT クエリの実行を許可します。 権限レベル: COLUMN 説明 この権限を付与されたユーザーは、指定したデータベース内の指定したテーブルに対して、指定されたカラムの一覧に対する INSERT クエリを実行できます。ユーザーが指定されたもの以外のカラムを含めた場合、そのクエリではデータは挿入されません。
GRANT INSERT(x,y) ON db.table TO john
付与された権限により、johndb.tablex および/または y カラムにデータを挿入できます。

ALTER

次の権限階層に従って、ALTERクエリの実行を許可します。
  • ALTER。レベル: COLUMN
    • ALTER TABLE。レベル: GROUP
    • ALTER UPDATE。レベル: COLUMN。別名: UPDATE
    • ALTER DELETE。レベル: COLUMN。別名: DELETE
    • ALTER COLUMN。レベル: GROUP
    • ALTER ADD COLUMN。レベル: COLUMN。別名: ADD COLUMN
    • ALTER DROP COLUMN。レベル: COLUMN。別名: DROP COLUMN
    • ALTER MODIFY COLUMN。レベル: COLUMN。別名: MODIFY COLUMN
    • ALTER COMMENT COLUMN。レベル: COLUMN。別名: COMMENT COLUMN
    • ALTER CLEAR COLUMN。レベル: COLUMN。別名: CLEAR COLUMN
    • ALTER RENAME COLUMN。レベル: COLUMN。別名: RENAME COLUMN
    • ALTER INDEX。レベル: GROUP。別名: INDEX
    • ALTER ORDER BY。レベル: TABLE。別名: ALTER MODIFY ORDER BY, MODIFY ORDER BY
    • ALTER SAMPLE BY。レベル: TABLE。別名: ALTER MODIFY SAMPLE BY, MODIFY SAMPLE BY
    • ALTER ADD INDEX。レベル: TABLE。別名: ADD INDEX
    • ALTER DROP INDEX。レベル: TABLE。別名: DROP INDEX
    • ALTER MATERIALIZE INDEX。レベル: TABLE。別名: MATERIALIZE INDEX
    • ALTER CLEAR INDEX。レベル: TABLE。別名: CLEAR INDEX
    • ALTER CONSTRAINT。レベル: GROUP。別名: CONSTRAINT
    • ALTER ADD CONSTRAINT。レベル: TABLE。別名: ADD CONSTRAINT
    • ALTER DROP CONSTRAINT。レベル: TABLE。別名: DROP CONSTRAINT
    • ALTER TTL。レベル: TABLE。別名: ALTER MODIFY TTL, MODIFY TTL
    • ALTER MATERIALIZE TTL。レベル: TABLE。別名: MATERIALIZE TTL
    • ALTER SETTINGS。レベル: TABLE。別名: ALTER SETTING, ALTER MODIFY SETTING, MODIFY SETTING
    • ALTER MOVE PARTITION。レベル: TABLE。別名: ALTER MOVE PART, MOVE PARTITION, MOVE PART
    • ALTER FETCH PARTITION。レベル: TABLE。別名: ALTER FETCH PART, FETCH PARTITION, FETCH PART
    • ALTER FREEZE PARTITION。レベル: TABLE。別名: FREEZE PARTITION
    • ALTER EXECUTE。レベル: TABLE。別名: ALTER TABLE EXECUTE
    • ALTER VIEW。レベル: GROUP
    • ALTER VIEW REFRESH。レベル: VIEW。別名: REFRESH VIEW
    • ALTER VIEW MODIFY QUERY。レベル: VIEW。別名: ALTER TABLE MODIFY QUERY
    • ALTER VIEW MODIFY SQL SECURITY。レベル: VIEW。別名: ALTER TABLE MODIFY SQL SECURITY
この階層の扱い方の例:
  • ALTER 権限には、他のすべての ALTER* 権限が含まれます。
  • ALTER CONSTRAINT には、ALTER ADD CONSTRAINTALTER DROP CONSTRAINT の権限が含まれます。
注記
  • MODIFY SETTING 権限では、テーブルエンジンの設定を変更できます。settings やサーバー設定のパラメータには影響しません。
  • ATTACH 操作には CREATE 権限が必要です。
  • DETACH 操作には DROP 権限が必要です。
  • KILL MUTATIONクエリでミューテーションを停止するには、そのミューテーションを開始できる権限が必要です。たとえば、ALTER UPDATE クエリを停止したい場合は、ALTER UPDATEALTER TABLE、または ALTER 権限が必要です。

BACKUP

クエリで [BACKUP] を実行できます。バックアップの詳細については、“バックアップと復元” をご覧ください。

CREATE

次の権限階層に応じて、CREATE および ATTACH DDLクエリの実行を許可します。
  • CREATE。レベル: GROUP
    • CREATE DATABASE。レベル: DATABASE
    • CREATE TABLE。レベル: TABLE
      • CREATE ARBITRARY TEMPORARY TABLE。レベル: GLOBAL
        • CREATE TEMPORARY TABLE。レベル: GLOBAL
    • CREATE VIEW。レベル: VIEW
    • CREATE DICTIONARY。レベル: DICTIONARY
注記
  • 作成したテーブルを削除するには、ユーザーに DROP 権限が必要です。

クラスター

ON CLUSTER クエリを実行できます。
Syntax
GRANT CLUSTER ON *.* TO <username>
デフォルトでは、ON CLUSTER を含むクエリを実行するには、ユーザーに CLUSTER 権限付与が必要です。 CLUSTER 権限付与を事前に行わずにクエリで ON CLUSTER を使おうとすると、次のエラーが発生します。
権限が不足しています。このクエリを実行するには、CLUSTER ON *.* の権限付与が必要です。 
デフォルトの動作は、config.xmlaccess_control_improvements セクションにある on_cluster_queries_require_cluster_grant 設定 (以下を参照) を false に設定することで変更できます。
config.xml
<access_control_improvements>
    <on_cluster_queries_require_cluster_grant>true</on_cluster_queries_require_cluster_grant>
</access_control_improvements>

DROP

以下の権限階層に従って、DROP および DETACH クエリを実行できます。
  • DROP。レベル: GROUP
    • DROP DATABASE。レベル: DATABASE
    • DROP TABLE。レベル: TABLE
    • DROP VIEW。レベル: VIEW
    • DROP DICTIONARY。レベル: DICTIONARY

TRUNCATE

TRUNCATE クエリの実行を許可します。 権限レベル: TABLE

OPTIMIZE

OPTIMIZE TABLE クエリを実行できます。 権限レベル: TABLE

SHOW

次の権限階層に従って、SHOWDESCRIBEUSEEXISTS クエリの実行を許可します。
  • SHOW。レベル: GROUP
    • SHOW DATABASES。レベル: DATABASESHOW DATABASESSHOW CREATE DATABASEUSE <database> クエリの実行を許可します。
    • SHOW TABLES。レベル: TABLESHOW TABLESEXISTS <table>CHECK <table> クエリの実行を許可します。
    • SHOW COLUMNS。レベル: COLUMNSHOW CREATE TABLEDESCRIBE クエリの実行を許可します。
    • SHOW DICTIONARIES。レベル: DICTIONARYSHOW DICTIONARIESSHOW CREATE DICTIONARYEXISTS <dictionary> クエリの実行を許可します。
注意 指定したテーブル、Dictionary、またはデータベースに関する他のいずれかの権限を持っているユーザーには、SHOW 権限も付与されます。

KILL QUERY

次の権限階層に従って、KILLクエリを実行できます。 権限レベル: GLOBAL 注意 KILL QUERY 権限を持つユーザーは、他のユーザーのクエリを強制終了できます。

アクセス管理

ユーザーが、ユーザー、ロール、行ポリシーを管理するクエリを実行できるようにします。
  • ACCESS MANAGEMENT. レベル: GROUP
    • CREATE USER. レベル: GLOBAL
    • ALTER USER. レベル: GLOBAL
    • DROP USER. レベル: GLOBAL
    • CREATE ROLE. レベル: GLOBAL
    • ALTER ROLE. レベル: GLOBAL
    • DROP ROLE. レベル: GLOBAL
    • ROLE ADMIN. レベル: GLOBAL
    • CREATE ROW POLICY. レベル: GLOBAL. 別名: CREATE POLICY
    • ALTER ROW POLICY. レベル: GLOBAL. 別名: ALTER POLICY
    • DROP ROW POLICY. レベル: GLOBAL. 別名: DROP POLICY
    • CREATE QUOTA. レベル: GLOBAL
    • ALTER QUOTA. レベル: GLOBAL
    • DROP QUOTA. レベル: GLOBAL
    • CREATE SETTINGS PROFILE. レベル: GLOBAL. 別名: CREATE PROFILE
    • ALTER SETTINGS PROFILE. レベル: GLOBAL. 別名: ALTER PROFILE
    • DROP SETTINGS PROFILE. レベル: GLOBAL. 別名: DROP PROFILE
    • SHOW ACCESS. レベル: GROUP
      • SHOW_USERS. レベル: GLOBAL. 別名: SHOW CREATE USER
      • SHOW_ROLES. レベル: GLOBAL. 別名: SHOW CREATE ROLE
      • SHOW_ROW_POLICIES. レベル: GLOBAL. 別名: SHOW POLICIES, SHOW CREATE ROW POLICY, SHOW CREATE POLICY
      • SHOW_QUOTAS. レベル: GLOBAL. 別名: SHOW CREATE QUOTA
      • SHOW_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。レベル: GROUP
    • SYSTEM SHUTDOWN。レベル: GLOBAL。別名: SYSTEM KILL, SHUTDOWN
    • SYSTEM DROP CACHE。別名: DROP CACHE
      • SYSTEM DROP DNS CACHE。レベル: GLOBAL。別名: SYSTEM CLEAR DNS CACHE, SYSTEM DROP DNS, DROP DNS CACHE, DROP DNS
      • SYSTEM DROP MARK CACHE。レベル: GLOBAL。別名: SYSTEM CLEAR MARK CACHE, SYSTEM DROP MARK, DROP MARK CACHE, DROP MARKS
      • SYSTEM DROP UNCOMPRESSED CACHE。レベル: GLOBAL。別名: SYSTEM CLEAR UNCOMPRESSED CACHE, SYSTEM DROP UNCOMPRESSED, DROP UNCOMPRESSED CACHE, DROP UNCOMPRESSED
    • SYSTEM RELOAD。レベル: GROUP
      • SYSTEM RELOAD CONFIG。レベル: GLOBAL。別名: RELOAD CONFIG
      • SYSTEM RELOAD DICTIONARY。レベル: GLOBAL。別名: SYSTEM RELOAD DICTIONARIES, RELOAD DICTIONARY, RELOAD DICTIONARIES
        • SYSTEM RELOAD EMBEDDED DICTIONARIES。レベル: GLOBAL。別名: RELOAD EMBEDDED DICTIONARIES
    • SYSTEM MERGES。レベル: TABLE。別名: SYSTEM STOP MERGES, SYSTEM START MERGES, STOP MERGES, START MERGES
    • SYSTEM TTL MERGES。レベル: TABLE。別名: SYSTEM STOP TTL MERGES, SYSTEM START TTL MERGES, STOP TTL MERGES, START TTL MERGES
    • SYSTEM FETCHES。レベル: TABLE。別名: SYSTEM STOP FETCHES, SYSTEM START FETCHES, STOP FETCHES, START FETCHES
    • SYSTEM MOVES。レベル: TABLE。別名: SYSTEM STOP MOVES, SYSTEM START MOVES, STOP MOVES, START MOVES
    • SYSTEM SENDS。レベル: GROUP。別名: SYSTEM STOP SENDS, SYSTEM START SENDS, STOP SENDS, START SENDS
      • SYSTEM DISTRIBUTED SENDS。レベル: TABLE。別名: SYSTEM STOP DISTRIBUTED SENDS, SYSTEM START DISTRIBUTED SENDS, STOP DISTRIBUTED SENDS, START DISTRIBUTED SENDS
      • SYSTEM 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 QUEUES
    • SYSTEM SYNC REPLICA。レベル: TABLE。別名: SYNC REPLICA
    • SYSTEM RESTART REPLICA。レベル: TABLE。別名: RESTART REPLICA
    • SYSTEM FLUSH。レベル: GROUP
      • SYSTEM FLUSH DISTRIBUTED。レベル: TABLE。別名: FLUSH DISTRIBUTED
      • SYSTEM FLUSH LOGS。レベル: GLOBAL。別名: FLUSH LOGS
SYSTEM RELOAD EMBEDDED DICTIONARIES 権限は、SYSTEM RELOAD DICTIONARY ON *.* 権限により暗黙的に付与されます。

INTROSPECTION

イントロスペクション関数を使用できるようにします。
  • INTROSPECTION. レベル: GROUP. 別名: INTROSPECTION FUNCTIONS
    • addressToLine. レベル: GLOBAL
    • addressToLineWithInlines. レベル: GLOBAL
    • addressToSymbol. レベル: GLOBAL
    • demangle. レベル: GLOBAL

SOURCES

外部データソースの使用を許可します。テーブルエンジンおよびテーブル関数に適用されます。
  • READ. レベル: GLOBAL_WITH_PARAMETER
  • WRITE. レベル: GLOBAL_WITH_PARAMETER
指定可能なパラメーター:
  • AZURE
  • FILE
  • HDFS
  • HIVE
  • JDBC
  • KAFKA
  • MONGO
  • MYSQL
  • NATS
  • ODBC
  • POSTGRES
  • RABBITMQ
  • REDIS
  • REMOTE
  • S3
  • SQLITE
  • URL
SOURCES に対する READ/WRITE 権限の分離は、バージョン 25.7 以降で、かつサーバー設定 access_control_improvements.enable_read_write_grants が有効な場合にのみ利用できます。それ以外の場合は、GRANT AZURE ON *.* TO user 構文を使用してください。これは新しい GRANT READ, WRITE ON AZURE TO user と同等です。
例:

ソースフィルターの権限付与

この機能は、バージョン 25.8 以降で、サーバー設定 access_control_improvements.enable_read_write_grants が有効な場合にのみ利用できます
正規表現フィルターを使うことで、特定のソース URI へのアクセス権を付与できます。これにより、ユーザーがアクセスできる外部データソースをきめ細かく制御できます。 構文:
GRANT READ ON S3('regexp_pattern') TO user
この権限付与により、ユーザーは指定した正規表現パターンに一致する S3 URI からのみ読み取りできるようになります。 例: 特定の S3 バケットパスへのアクセスを許可します:
-- ユーザーが s3://foo/ パスからのみ読み取れるようにする
GRANT READ ON S3('s3://foo/.*') TO john

-- ユーザーが特定のファイルパターンから読み取れるようにする
GRANT READ ON S3('s3://mybucket/data/2024/.*\.parquet') TO analyst

-- 同一ユーザーに複数のフィルターを付与できる
GRANT READ ON S3('s3://foo/.*') TO john
GRANT READ ON S3('s3://bar/.*') TO john
ソースフィルターはパラメータに regexp を取るため、権限付与 GRANT READ ON URL('http://www.google.com') TO john;によって、次のクエリも許可されます。
SELECT * FROM url('https://www.google.com');
SELECT * FROM url('https://www-google.com');
これは、正規表現では .Any Single Character として扱われるためです。 そのため、潜在的な脆弱性につながる可能性があります。正しい権限付与は次のとおりです。
GRANT READ ON URL('https://www\.google\.com') TO john;
GRANT OPTION を付けた再付与: 元の権限付与に WITH GRANT OPTION が含まれている場合は、GRANT CURRENT GRANTS を使用して再付与できます:
-- GRANT OPTIONを付与した元の権限付与
GRANT READ ON S3('s3://foo/.*') TO john WITH GRANT OPTION

-- Johnはこのアクセス権を他のユーザーに再付与できるようになる
GRANT CURRENT GRANTS(READ ON S3) TO alice
重要な制限事項:
  • 部分的な取り消しはできません: 付与済みのフィルターパターンの一部だけを取り消すことはできません。必要な場合は、付与全体をいったん取り消したうえで、新しいパターンで再付与する必要があります。
  • ワイルドカードによる権限付与はできません: GRANT READ ON *('regexp') や、これに類するワイルドカードのみのパターンは使用できません。必ず具体的なソースを指定してください。

dictGet

  • dictGet。別名: dictHas, dictGetHierarchy, dictIsIn
ユーザーに dictGetdictHasdictGetHierarchydictIsIn 関数の実行を許可します。 権限レベル: DICTIONARY
  • GRANT dictGet ON mydb.mydictionary TO john
  • GRANT dictGet ON mydictionary TO john

displaySecretsInShowAndSelect

display_secrets_in_show_and_select サーバー設定format_display_secrets_in_show_and_select フォーマット設定 の両方が有効になっている場合、ユーザーは SHOW クエリおよび 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 CONTROL
    • CREATE NAMED COLLECTION. レベル: NAMED_COLLECTION
    • DROP NAMED COLLECTION. レベル: NAMED_COLLECTION
    • ALTER NAMED COLLECTION. レベル: NAMED_COLLECTION
    • SHOW NAMED COLLECTIONS. レベル: NAMED_COLLECTION. 別名: SHOW NAMED COLLECTIONS
    • SHOW NAMED COLLECTIONS SECRETS. レベル: NAMED_COLLECTION. 別名: SHOW NAMED COLLECTIONS SECRETS
    • NAMED 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 john
  • GRANT TABLE ENGINE ON TinyLog TO john
デフォルトでは、後方互換性のため、特定のテーブルエンジンを指定したテーブル作成では権限チェックが無視されます。 ただし、config.xml で table_engines_require_grant to true を設定すると、この動作を変更できます。
外部ソースを使用する一部のテーブルエンジンでは、対応するソースに対する READ/WRITE 権限が必要になる場合があります。SOURCES を参照してください。 たとえば、AzureBlobStorage テーブルエンジンでは、次の権限が必要になる場合があります。
  • GRANT READ, WRITE ON AZURE TO john

ALL

規制対象エンティティに対するすべての権限を、ユーザーアカウントまたはロールに付与します。
権限 ALL は ClickHouse Cloud ではサポートされておらず、default ユーザーに付与される権限は制限されています。ユーザーに最大限の権限を付与するには、default_role を付与します。詳細はこちらを参照してください。 また、default ユーザーとして GRANT CURRENT GRANTS を使用することで、ALL と同様の効果を得ることもできます。

NONE

権限は一切付与されません。

ADMIN OPTION

ADMIN OPTION 権限があると、ユーザーは自身のロールを別のユーザーに付与できます。
最終更新日 2026年6月10日