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 ステートメントを使用すると、指定されたすべての権限を指定したユーザーまたはロールに付与できます。
権限が一つも指定されていない場合、そのユーザーまたはロールには、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 テーブルには、新しいユーザーでもデフォルトでアクセスできますが、すべての system テーブルに対して、GRANT なしでデフォルトでアクセスできるとは限りません。
また、system.zookeeper など特定の system テーブルへのアクセスは、セキュリティ上の理由から Cloud のユーザーには制限されています。
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 テーブルに対する権限を付与します。
以下で説明する機能は 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— 権限はディクショナリ、データベース、またはグローバルに対して付与できます。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
ユーザーは、指定されたテーブル、ディクショナリ、またはデータベースに関して何らかの他の権限を持っている場合、SHOW 権限を持ちます。
KILL QUERY
次の権限階層に従って、KILL クエリを実行できます。
権限レベル: GLOBAL。
Notes
KILL QUERY 権限を持つユーザーは、他のユーザーのクエリを強制終了できます。
ACCESS MANAGEMENT
ユーザー、ロール、および行ポリシーを管理するクエリを実行できます。
ACCESS MANAGEMENT. レベル:GROUPCREATE USER. レベル:GLOBALALTER USER. レベル:GLOBALDROP USER. レベル:GLOBALCREATE ROLE. レベル:GLOBALALTER ROLE. レベル:GLOBALDROP ROLE. レベル:GLOBALROLE ADMIN. レベル:GLOBALCREATE ROW POLICY. レベル:GLOBAL. 別名:CREATE POLICYALTER ROW POLICY. レベル:GLOBAL. 別名:ALTER POLICYDROP ROW POLICY. レベル:GLOBAL. 別名:DROP POLICYCREATE QUOTA. レベル:GLOBALALTER QUOTA. レベル:GLOBALDROP QUOTA. レベル:GLOBALCREATE SETTINGS PROFILE. レベル:GLOBAL. 別名:CREATE PROFILEALTER SETTINGS PROFILE. レベル:GLOBAL. 別名:ALTER PROFILEDROP SETTINGS PROFILE. レベル:GLOBAL. 別名:DROP PROFILESHOW ACCESS. レベル:GROUPSHOW_USERS. レベル:GLOBAL. 別名:SHOW CREATE USERSHOW_ROLES. レベル:GLOBAL. 別名:SHOW CREATE ROLESHOW_ROW_POLICIES. レベル:GLOBAL. 別名:SHOW POLICIES,SHOW CREATE ROW POLICY,SHOW CREATE POLICYSHOW_QUOTAS. レベル:GLOBAL. 別名:SHOW CREATE QUOTASHOW_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 クエリを実行できます。
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. レベル:GROUP. エイリアス:INTROSPECTION FUNCTIONSaddressToLine. レベル:GLOBALaddressToLineWithInlines. レベル:GLOBALaddressToSymbol. レベル:GLOBALdemangle. レベル:GLOBAL
SOURCES
外部データソースの使用を許可します。テーブルエンジンおよびテーブル関数に適用されます。
READ. レベル:GLOBAL_WITH_PARAMETERWRITE. レベル:GLOBAL_WITH_PARAMETER
指定可能なパラメータ:
AZUREFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
ソースに対する READ/WRITE 権限の分離は、バージョン 25.7 以降で、かつサーバー設定
access_control_improvements.enable_read_write_grants
が有効化されている場合にのみ利用できます。
それ以外の場合は、構文 GRANT AZURE ON *.* TO user を使用する必要があります。これは新しい GRANT READ, WRITE ON AZURE TO user と同等です。
例:
- MySQL table engine を使用してテーブルを作成するには、
CREATE TABLE (ON db.table_name)とMYSQL権限が必要です。 - mysql table function を使用するには、
CREATE TEMPORARY TABLEとMYSQL権限が必要です。
Source Filter Grants
この機能はバージョン 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;
によって、この URL へのクエリが実行可能になります
正規表現では . は「任意の1文字」として扱われます。
これにより潜在的な脆弱性が生じる可能性があります。正しい GRANT は次のとおりです。
GRANT OPTION を使用した再付与:
元の GRANT 文で 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 johnGRANT 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 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)とは異なり、GRANT 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 johnGRANT TABLE ENGINE ON TinyLog TO john
ALL
対象エンティティに対するすべての権限を、ユーザーアカウントまたはロールに付与します。
ALL 権限は ClickHouse Cloud ではサポートされていません。ClickHouse Cloud では default ユーザーの権限は制限されています。ユーザーは default_role を付与することで、ユーザーに可能な最大限の権限を付与できます。詳細はこちらを参照してください。
ユーザーはまた、GRANT CURRENT GRANTS を default ユーザーとして実行することで、ALL と同様の効果を得ることもできます。
NONE
いかなる権限も付与しません。
ADMIN OPTION
ADMIN OPTION 権限により、ユーザーは自身のロールを別のユーザーに付与できます。