Admin ユーザー
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 ロールが付与されます。パスワードレス認証
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_role や sql_console_pm_role のようなロールを作成して特定のユーザーに付与するなど、より複雑なアクセス制御の構成が可能になります。例えば:
管理者権限を確認する
default ユーザーからログアウトし、clickhouse_admin ユーザーで再度ログインします。
以下はすべて正常に実行できるはずです。
非管理者ユーザー
準備
サンプルのデータベース、テーブル、および行を作成する
1
テスト用データベースを作成する
2
テーブルを作成する
3
テーブルにサンプル行を追加する
4
テーブルを確認する
クエリ
レスポンス
5
column_user を作成する
特定のカラムへのアクセス制限を示すために使用する一般ユーザーを作成します。6
row_user を作成する
特定の値を持つ行へのアクセス制限を示すために使用する一般ユーザーを作成します。ロールの作成
- カラムや行など、異なる権限に対応するロールを作成します
- ロールに権限を付与します
- 各ロールにユーザーを割り当てます
1
このロールのユーザーが database db1 の table1 で column1 のみを参照できるよう制限するロールを作成します
2
column1 の参照を許可する権限を設定します
3
ユーザー column_user を column1_users ロールに追加します
4
このロールのユーザーが選択された行のみを参照できるよう制限するロールを作成します。この例では、column1 に A を含む行のみです
5
row_user を A_rows_users ロールに追加します
6
column1 の値が A の場合にのみ参照を許可するポリシーを作成します
7
database と table に対する権限を設定します
8
他のロールが引き続きすべての行にアクセスできるよう、明示的な権限を付与します
ポリシーをテーブルに適用すると、システムはそのポリシーを適用し、そのポリシーで定義されたユーザーとロールのみがそのテーブルに対して操作を実行できるようになります。それ以外のすべてのユーザーは、いかなる操作も拒否されます。他のユーザーに制限付きの行ポリシーが適用されないようにするには、他のユーザーやロールに通常のアクセス、または別の種類のアクセスを許可する別のポリシーを定義する必要があります。
確認
カラム制限付きユーザーでロール権限をテストする
1
clickhouse_admin ユーザーで ClickHouse client にログインします
2
admin ユーザーでデータベース、テーブル、およびすべての行へのアクセスを確認します。
3
column_user ユーザーで ClickHouse client にログインします
4
すべてのカラムを指定して SELECT をテストします
すべてのカラムを指定していますが、このユーザーにアクセスが許可されているのは
id と column1 のみであるため、アクセスは拒否されます5
指定されていて、かつ許可されているカラムのみを使った SELECT クエリを確認します:
行制限付きユーザーでロール権限をテストする
1
row_user を使用して ClickHouse client にログインする
2
表示される行を確認する
上記の 2 行だけが返されることを確認してください。
column1 の値が B の行は除外されているはずです。ユーザーとロールの変更
role1 が column1 に対する SELECT のみを許可し、role2 が column1 と column2 に対する SELECT を許可している場合、ユーザーは両方のカラムにアクセスできます。
1
admin アカウントを使用して、デフォルトロール付きで行とカラムの両方に制限をかけた新しいユーザーを作成する
2
A_rows_users ロールの既存の権限を取り消す
3
A_row_users ロールが column1 のみを SELECT できるようにする
4
row_and_column_user で ClickHouse client にログインする
5
すべてのカラムでテストする:
6
許可されたカラムのみに絞ってテストする:
トラブルシューティング
ユーザーの権限とロールを一覧表示する
ClickHouse のロールを一覧表示する
ポリシーを表示
ポリシーの定義内容と現在の権限を確認する
ロール、ポリシー、ユーザーを管理するためのコマンド例
- 権限を削除する
- ポリシーを削除する
- ユーザーのロール割り当てを解除する
- ユーザーとロールを削除する