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
の古いロールを新しいロールに置き換えます。
現在の特権付与構文
privilege
— 特権の種類。role
— ClickHouse ユーザーのロール。user
— ClickHouse ユーザーアカウント。
CURRENT GRANTS
ステートメントを使用すると、指定されたユーザーまたはロールにすべての特権を付与できます。
特権が指定されていない場合、そのユーザーまたはロールは CURRENT_USER
に対してすべての利用可能な特権を受け取ります。
使用法
GRANT
を使用するには、アカウントに GRANT OPTION
の特権が必要です。ユーザーは、自分のアカウントの特権の範囲内でのみ特権を付与できます。
たとえば、管理者は次のクエリによって john
アカウントに特権を付与しました。
これは、john
が次のクエリを実行する権限を持っていることを意味します:
SELECT x,y FROM db.table
。SELECT x FROM db.table
。SELECT y FROM db.table
。
john
は SELECT z FROM db.table
を実行できません。また、SELECT * FROM db.table
も利用できません。このクエリを処理すると、ClickHouse はデータを返しません。例外的に、テーブルが x
と y
のカラムのみを含む場合、ClickHouse はすべてのデータを返します。
さらに、john
には GRANT OPTION
の特権があり、同じ範囲またはそれ以下の特権を持つ他のユーザーに特権を付与できます。
system
データベースへのアクセスは常に許可されています(このデータベースはクエリ処理に使用されます)。
多くのシステムテーブルには、新しいユーザーがデフォルトでアクセスできるが、特権なしでデフォルトですべてのシステムテーブルにアクセスできるわけではありません。
また、特定のシステムテーブル(たとえば system.zookeeper
)へのアクセスは、セキュリティ上の理由からクラウドユーザーに制限されています。
1つのクエリで複数のアカウントに複数の特権を付与できます。クエリGRANT SELECT, INSERT ON *.* TO john, robin
は、アカウント john
と robin
にサーバー上のすべてのデータベースのすべてのテーブルで INSERT
および SELECT
クエリを実行することを許可します。
ワイルドカード付与
特権を指定する際に、アスタリスク(*
)をテーブル名やデータベース名の代わりに使用できます。たとえば、GRANT SELECT ON db.* TO john
クエリは john
に対して db
データベース内のすべてのテーブルで SELECT
クエリを実行することを許可します。
また、データベース名を省略することもできます。この場合、特権は現在のデータベースに対して付与されます。
たとえば、GRANT SELECT ON * TO john
は現在のデータベース内のすべてのテーブルに対して特権を付与し、GRANT SELECT ON mytable TO john
は現在のデータベース内の mytable
テーブルに特権を付与します。
以下に説明する機能は、バージョン 24.10 以降から利用可能です。
テーブル名やデータベース名の末尾にアスタリスクを置くこともできます。この機能では、テーブルパスの抽象的な接頭辞に特権を付与できます。
例:GRANT SELECT ON db.my_tables* TO john
。このクエリは john
に対して接頭辞が my_tables*
の db
データベース内のすべてのテーブルで 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
ACCESS MANAGEMENT
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 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
TABLE ENGINE
TRUNCATE
UNDROP TABLE
NONE
この階層がどのように扱われるかの例:
ALTER
特権にはすべてのALTER*
特権が含まれます。ALTER CONSTRAINT
にはALTER ADD CONSTRAINT
およびALTER DROP CONSTRAINT
特権が含まれます。
特権は異なるレベルで適用されます。レベルを知ることは、特権に利用可能な構文を示唆します。
レベル(下から上):
COLUMN
— 特権はカラム、テーブル、データベース、または全体に対して付与することができます。TABLE
— 特権はテーブル、データベース、または全体に対して付与することができます。VIEW
— 特権はビュー、データベース、または全体に対して付与することができます。DICTIONARY
— 特権は辞書、データベース、または全体に対して付与することができます。DATABASE
— 特権はデータベースまたは全体に対して付与することができます。GLOBAL
— 特権は全体に対してのみ付与することができます。GROUP
— 異なるレベルの特権をグループ化します。GROUP
レベルの特権が付与されると、その特権が使用される構文に対応する特権のみが付与されます。
許可された構文の例:
GRANT SELECT(x) ON db.table TO 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 クエリを実行するには、次の特権が必要です: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
のカラムのみを含む場合、ClickHouse はすべてのデータを返します。
INSERT
INSERT クエリを実行することを許可します。
特権レベル: COLUMN
。
説明
この特権を付与されたユーザーは、指定されたテーブルおよびデータベース内の指定されたカラムのリストに対して INSERT
クエリを実行することができます。ユーザーが他のカラムを含めた場合、指定されたクエリはデータを挿入しません。
例
付与された特権は john
が db.table
の x
および/または 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 VIEW
。レベル:GROUP
ALTER VIEW REFRESH
。レベル:VIEW
。エイリアス:ALTER LIVE VIEW REFRESH
,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 CONSTRAINT
およびALTER DROP CONSTRAINT
特権が含まれます。
注意点
MODIFY SETTING
特権はテーブルエンジンの設定を変更することができます。設定やサーバーの構成パラメーターには影響しません。ATTACH
操作には CREATE 特権が必要です。DETACH
操作には DROP 特権が必要です。- KILL MUTATION クエリによって変異を停止するには、この変異を開始する特権が必要です。たとえば、
ALTER UPDATE
クエリを停止したい場合、ALTER UPDATE
、ALTER 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 特権が必要です。
CLUSTER
ON CLUSTER
クエリを実行することを許可します。
デフォルトでは、ON CLUSTER
が付いたクエリはユーザーに CLUSTER
の付与を要求します。
CLUSTER
特権を付与せずにクエリで ON CLUSTER
を使用しようとすると、次のエラーが表示されます:
デフォルトの動作は、設定 access_control_improvements
セクションの on_cluster_queries_require_cluster_grant
設定を false
にすることで変更できます。
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
SHOW
、DESCRIBE
、USE
、および EXISTS
クエリを以下の階層構造に基づいて実行することを許可します:
SHOW
。レベル:GROUP
SHOW DATABASES
。レベル:DATABASE
。SHOW DATABASES
、SHOW CREATE DATABASE
、USE <database>
クエリを実行することを許可します。SHOW TABLES
。レベル:TABLE
。SHOW TABLES
、EXISTS <table>
、CHECK <table>
クエリを実行することを許可します。SHOW COLUMNS
。レベル:COLUMN
。SHOW CREATE TABLE
、DESCRIBE
クエリを実行することを許可します。SHOW DICTIONARIES
。レベル:DICTIONARY
。SHOW DICTIONARIES
、SHOW CREATE DICTIONARY
、EXISTS <dictionary>
クエリを実行することを許可します。
注意点
ユーザーが指定されたテーブル、辞書、またはデータベースに関連する特権を持っている場合、そのユーザーは SHOW
特権を持っています。
KILL QUERY
KILL クエリを以下の階層構造に基づいて実行することを許可します:
特権レベル: GLOBAL
。
注意点
KILL QUERY
特権は、あるユーザーが他のユーザーのクエリを停止することを許可します。
アクセス管理
ユーザー、ロール、および行ポリシを管理するクエリを実行できるようにします。
ACCESS MANAGEMENT
。レベル: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
特権は、ユーザーが自分のロールを他のユーザーに付与および取り消しできるようにします。
システム
ユーザーが SYSTEM クエリを以下の階層構造に基づいて実行できるようにします。
SYSTEM
。レベル:GROUP
SYSTEM SHUTDOWN
。レベル:GLOBAL
。エイリアス:SYSTEM KILL
、SHUTDOWN
SYSTEM DROP CACHE
。エイリアス:DROP CACHE
SYSTEM DROP DNS CACHE
。レベル:GLOBAL
。エイリアス:SYSTEM DROP DNS
、DROP DNS CACHE
、DROP DNS
SYSTEM DROP MARK CACHE
。レベル:GLOBAL
。エイリアス:SYSTEM DROP MARK
、DROP MARK CACHE
、DROP MARKS
SYSTEM DROP UNCOMPRESSED CACHE
。レベル:GLOBAL
。エイリアス: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
データソースの読み取り/書き込みの特権に対する分離は、バージョン 25.7 から利用可能で、サーバー設定 access_control_improvements.enable_read_write_grants
を有効にする必要があります。
それ以外の場合、GRANT AZURE ON *.* TO user
構文を使用する必要があります。これは新しい GRANT READ, WRITE ON AZURE TO user
に相当します。
例:
- MySQL テーブルエンジンを使用してテーブルを作成するには、
CREATE TABLE (ON db.table_name)
およびMYSQL
の特権が必要です。 - mysql テーブル関数 を使用するには、
CREATE TEMPORARY TABLE
とMYSQL
の特権が必要です。
ソースフィルター特権
この機能は、バージョン 25.8 以降およびサーバー設定 access_control_improvements.enable_read_write_grants
のみで利用可能です。
正規表現フィルターを使用して特定のソース URI へのアクセスを付与できます。これにより、ユーザーがアクセスできる外部データソースの詳細な制御が可能になります。
構文:
この特権は、指定された正規表現パターンに一致する S3 URI からのみ読み取ることをユーザーに許可します。
例:
特定の S3 バケットパスへのアクセスを付与:
GRANT OPTION での再付与:
元の特権に WITH GRANT OPTION
がある場合、それを使用して GRANT CURRENT GRANTS
で再付与できます:
重要な制限:
- 部分的取り消しは許可されていません: 付与されたフィルターパターンの一部を取り消すことはできません。必要に応じて全体を取り消し、新しいパターンで再付与する必要があります。
- ワイルドカード付与は許可されていません:
GRANT READ ON *('regexp')
またはそのようなワイルドカード専用パターンを使用することはできません。特定のソースを指定する必要があります。
dictGet
dictGet
。エイリアス:dictHas
、dictGetHierarchy
、dictIsIn
ユーザーが dictGet、dictHas、dictGetHierarchy、dictIsIn 関数を実行できるようにします。
特権レベル: DICTIONARY
。
例
GRANT dictGet ON mydb.mydictionary TO john
GRANT dictGet ON mydictionary TO john
displaySecretsInShowAndSelect
ユーザーが SHOW
および SELECT
クエリの機密情報を表示できるようにします。ただし、両方の
display_secrets_in_show_and_select
サーバー設定
と
format_display_secrets_in_show_and_select
フォーマット設定
がオンになっている必要があります。
NAMED COLLECTION ADMIN
指定された名前付きコレクションに対して特定の操作を許可します。バージョン 23.7 より前は NAMED COLLECTION CONTROL と呼ばれていましたが、23.7 以降は NAMED COLLECTION ADMIN が追加され、NAMED COLLECTION CONTROL はエイリアスとして保持されています。
NAMED COLLECTION ADMIN
。レベル:NAMED_COLLECTION
。エイリアス:NAMED COLLECTION 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 に追加されました。
例
名前付きコレクションが 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
ALL
規制されたエンティティに対するすべての特権をユーザーアカウントまたはロールに付与します。
特権 ALL
は ClickHouse Cloud ではサポートされておらず、default
ユーザーには制限付きの権限があります。ユーザーは default_role
を付与することで最大限の権限をユーザーに与えることができます。詳細については こちら を参照してください。
ユーザーは、デフォルトのユーザーとして GRANT CURRENT GRANTS
を使って、ALL
と同様の効果を得ることもできます。
NONE
特権を付与しません。
ADMIN OPTION
ADMIN OPTION
特権は、ユーザーが自分のロールを別のユーザーに付与できるようにします。