メインコンテンツへスキップ
セルフマネージドセルフマネージドの ClickHouse を使用している場合は、SQL ユーザーとロールを参照してください。
この記事では、SQL ユーザーとロールを定義する基本と、それらの権限やアクセス許可をデータベース、テーブル、行、カラムに適用する方法を説明します。

Admin ユーザー

ClickHouse Cloud サービスには、サービスの作成時に default という admin ユーザーが作成されます。パスワードはサービス作成時に設定され、Admin ロールを持つ ClickHouse Cloud ユーザーであればリセットできます。 ClickHouse Cloud サービスに追加の SQL ユーザーを作成する場合、それらのユーザーには SQL の username と password が必要です。管理者レベルの privileges を付与する場合は、新しいユーザーにロール default_role を割り当ててください。たとえば、ユーザー clickhouse_admin を追加する場合は次のとおりです。
SQL Console を使用する場合、SQL ステートメントは default ユーザーとしては実行されません。代わりに、sql-console:${cloud_login_email} という名前のユーザーとして実行されます。ここで、cloud_login_email は現在クエリを実行しているユーザーのメールアドレスです。これらの自動生成された SQL Console ユーザーには、default ロールが付与されます。

パスワードレス認証

SQL Console で使用できるロールは 2 つあります。default_role と同じ権限を持つ sql_console_admin と、読み取り専用権限を持つ sql_console_read_only です。 Admin ユーザーにはデフォルトで sql_console_admin ロールが割り当てられているため、特に変更はありません。一方、sql_console_read_only ロールを使うと、Admin 以外のユーザーに対して、任意のインスタンスへの読み取り専用アクセスまたはフルアクセスを付与できます。このアクセスは Admin が設定する必要があります。これらのロールは、インスタンスごとの要件に合わせて GRANT または REVOKE コマンドで調整でき、加えた変更は永続的に保持されます。

きめ細かなアクセス制御

このアクセス制御機能は、ユーザーレベルできめ細かく手動設定することもできます。新しいsql_console_*ロールをユーザーに割り当てる前に、sql-console-role:<email>ネームスペースに対応する、SQL Consoleのユーザー固有のデータベースロールを作成しておく必要があります。例:
一致するロールが検出されると、定型的なロールではなく、そのロールがユーザーに割り当てられます。これにより、sql_console_sa_rolesql_console_pm_role のようなロールを作成して特定のユーザーに付与するなど、より複雑なアクセス制御の構成が可能になります。例えば:

管理者権限を確認する

default ユーザーからログアウトし、clickhouse_admin ユーザーで再度ログインします。 以下はすべて正常に実行できるはずです。

非管理者ユーザー

ユーザーには必要な権限のみを付与し、全員を管理者ユーザーにすべきではありません。以下では、想定されるシナリオ例と、それぞれに必要なロールを示します。

準備

以降の例で使用するこれらのテーブルとユーザーを作成します。

サンプルのデータベース、テーブル、および行を作成する

1
テスト用データベースを作成する
2
テーブルを作成する
3
テーブルにサンプル行を追加する
4
テーブルを確認する
クエリ
レスポンス
5
column_user を作成する
特定のカラムへのアクセス制限を示すために使用する一般ユーザーを作成します。
6
row_user を作成する
特定の値を持つ行へのアクセス制限を示すために使用する一般ユーザーを作成します。

ロールの作成

この一連の例では、次のことを行います。
  • カラムや行など、異なる権限に対応するロールを作成します
  • ロールに権限を付与します
  • 各ロールにユーザーを割り当てます
ロールは、ユーザーごとに個別に管理する代わりに、特定の権限を持つユーザーのグループを定義するために使用します。
1
このロールのユーザーが database db1table1column1 のみを参照できるよう制限するロールを作成します
2
column1 の参照を許可する権限を設定します
3
ユーザー column_usercolumn1_users ロールに追加します
4
このロールのユーザーが選択された行のみを参照できるよう制限するロールを作成します。この例では、column1A を含む行のみです
5
row_userA_rows_users ロールに追加します
6
column1 の値が A の場合にのみ参照を許可するポリシーを作成します
7
database と table に対する権限を設定します
8
他のロールが引き続きすべての行にアクセスできるよう、明示的な権限を付与します
ポリシーをテーブルに適用すると、システムはそのポリシーを適用し、そのポリシーで定義されたユーザーとロールのみがそのテーブルに対して操作を実行できるようになります。それ以外のすべてのユーザーは、いかなる操作も拒否されます。他のユーザーに制限付きの行ポリシーが適用されないようにするには、他のユーザーやロールに通常のアクセス、または別の種類のアクセスを許可する別のポリシーを定義する必要があります。

確認

カラム制限付きユーザーでロール権限をテストする

1
clickhouse_admin ユーザーで ClickHouse client にログインします
2
admin ユーザーでデータベース、テーブル、およびすべての行へのアクセスを確認します。
3
column_user ユーザーで ClickHouse client にログインします
4
すべてのカラムを指定して SELECT をテストします
すべてのカラムを指定していますが、このユーザーにアクセスが許可されているのは idcolumn1 のみであるため、アクセスは拒否されます
5
指定されていて、かつ許可されているカラムのみを使った SELECT クエリを確認します:

行制限付きユーザーでロール権限をテストする

1
row_user を使用して ClickHouse client にログインする
2
表示される行を確認する
上記の 2 行だけが返されることを確認してください。column1 の値が B の行は除外されているはずです。

ユーザーとロールの変更

必要な権限の組み合わせに応じて、ユーザーには複数のロールを割り当てることができます。複数のロールを使用する場合、システムはそれらを組み合わせて権限を判定するため、結果としてロールの権限は累積されます。 たとえば、role1column1 に対する SELECT のみを許可し、role2column1column2 に対する SELECT を許可している場合、ユーザーは両方のカラムにアクセスできます。
1
admin アカウントを使用して、デフォルトロール付きで行とカラムの両方に制限をかけた新しいユーザーを作成する
2
A_rows_users ロールの既存の権限を取り消す
3
A_row_users ロールが column1 のみを SELECT できるようにする
4
row_and_column_user で ClickHouse client にログインする
5
すべてのカラムでテストする:
6
許可されたカラムのみに絞ってテストする:

トラブルシューティング

権限が重複したり組み合わさったりして、予期しない結果になることがあります。そのような場合は、管理者アカウントを使用して次のコマンドで原因を絞り込めます

ユーザーの権限とロールを一覧表示する

ClickHouse のロールを一覧表示する

ポリシーを表示

ポリシーの定義内容と現在の権限を確認する

ロール、ポリシー、ユーザーを管理するためのコマンド例

次のコマンドでは、以下の操作を実行できます。
  • 権限を削除する
  • ポリシーを削除する
  • ユーザーのロール割り当てを解除する
  • ユーザーとロールを削除する
これらのコマンドは、admin ユーザーまたは default ユーザーとして実行してください

ロールから権限を削除する

ポリシーを削除する

ユーザーからロールの割り当てを解除する

ロールを削除する

ユーザーを削除する

要約

この記事では、SQL のユーザーとロールの作成の基本と、ユーザーおよびロールの権限を設定・変更する手順を説明しました。各項目の詳細については、ユーザーガイドとリファレンスドキュメントを参照してください。
最終更新日 2026年7月2日