メインコンテンツまでスキップ
メインコンテンツまでスキップ

一般アクセス管理クエリ

セルフマネージド

セルフマネージドの ClickHouse を使用している場合は、 SQL ユーザーとロール をご覧ください。

この記事では、SQL ユーザーとロールを定義し、それらの権限をデータベース、テーブル、行、カラムに適用する基本について説明します。

管理者ユーザー

ClickHouse Cloud サービスには、サービスが作成されると同時に作成される管理者ユーザー default があります。 パスワードはサービス作成時に提供され、Admin ロールを持つ ClickHouse Cloud ユーザーによってリセット可能です。

ClickHouse Cloud サービスに追加の SQL ユーザーを追加する際には、SQL ユーザー名とパスワードが必要です。 彼らに管理レベルの権限を付与したい場合は、default_role を新しいユーザーに割り当ててください。 例えば、ユーザー clickhouse_admin を追加する場合:

注記

SQL コンソールを使用する際、SQL ステートメントは default ユーザーとして実行されません。 代わりに、ステートメントは sql-console:${cloud_login_email} という名前のユーザーとして実行され、cloud_login_email は現在クエリを実行しているユーザーのメールアドレスです。

これらの自動生成された SQL コンソールユーザーは default ロールを持っています。

パスワードなし認証

SQL コンソールには 2 つのロールが用意されています: sql_console_admindefault_role と同じ権限を持ち、 sql_console_read_only は読み取り専用の権限を持ちます。

管理者ユーザーはデフォルトで sql_console_admin ロールが割り当てられるため、何も変更されません。 ただし、sql_console_read_only ロールにより、非管理者ユーザーに読み取り専用またはフルアクセスを任意のインスタンスに許可できます。 管理者がこのアクセスを構成する必要があります。 ロールは GRANT または REVOKE コマンドを使用して、インスタンス特有の要件により適合させることができ、これらのロールに加えた変更は永続化されます。

運用レベルのアクセス制御

このアクセス制御機能は、ユーザーごとに詳細な制御を手動で設定することもできます。 新しい sql_console_* ロールをユーザーに割り当てる前に、sql-console-role:<email> という名前空間に一致する SQL コンソールユーザー固有のデータベースロールを作成する必要があります。 例えば:

一致するロールが検出されると、それがボイラープレートロールの代わりにユーザーに割り当てられます。 これにより、sql_console_sa_rolesql_console_pm_role などのロールを作成し、特定のユーザーに付与するなど、より複雑なアクセス制御構成を導入できます。 例えば:

Test admin privileges

ユーザー default からログアウトし、ユーザー clickhouse_admin として再ログインします。

これらすべてが成功するはずです:

Non-admin users

ユーザーは必要な権限を持っている必要があり、すべてが管理者ユーザーである必要はありません。この文書の残りの部分では、例となるシナリオと必要な役割が提供されます。

Preparation

例で使用するために、これらのテーブルとユーザーを作成します。

Creating a sample database, table, and rows

  1. テストデータベースを作成します

  2. テーブルを作成します

  3. テーブルにサンプル行を入力します

  4. テーブルを確認します:

  5. 特定のカラムへのアクセス制限をデモするために使用される通常のユーザーを作成します:

  6. 特定の値を持つ行へのアクセス制限をデモするために使用される通常のユーザーを作成します:

Creating roles

以下の例セットで:

  • カラムや行に対するさまざまな権限のためのロールが作成されます
  • 権限がロールに付与されます
  • 各ロールにユーザーが割り当てられます

ロールは、各ユーザーを個別に管理する代わりに、特定の権限のためのユーザーグループを定義するために使用されます。

  1. このロールのユーザーがデータベース db1table1column1 のみを表示できるように制限するロールを作成します:

  2. column1 の閲覧を許可する権限を設定します

  3. column_user ユーザーを column1_users ロールに追加します

  4. このロールのユーザーが選択された行のみを表示できるように制限するロールを作成します。この場合、column1A を含む行のみです。

  5. row_userA_rows_users ロールに追加します

  6. column1A の値を持つ行のみを表示できるポリシーを作成します

  7. データベースおよびテーブルに権限を設定します

  8. 他のロールがすべての行にアクセスできるように明示的な権限を付与します

    注記

    テーブルにポリシーを添付すると、システムはそのポリシーを適用し、定義されたユーザーおよびロールのみがテーブルで操作を行うことができるようになり、それ以外はすべての操作が拒否されます。他のユーザーに制限を適用しないためには、通常のアクセスや他のタイプのアクセスを許可する別のポリシーを定義する必要があります。

Verification

Testing role privileges with column restricted user

  1. clickhouse_admin ユーザーで ClickHouse クライアントにログインします

  2. 管理者ユーザーとしてデータベース、テーブル、およびすべての行へのアクセスを確認します。

  3. column_user ユーザーで ClickHouse クライアントにログインします

  4. すべてのカラムを使用して SELECT をテストします

    注記

    すべてのカラムが指定されたため、アクセスが拒否されています。ユーザーは idcolumn1 のみアクセス権を持っています。

  5. 許可されたカラムのみを指定した SELECT クエリを確認します:

Testing role privileges with row restricted user

  1. row_user を使用して ClickHouse クライアントにログインします

  2. 利用可能な行を表示します

    注記

    上記の2行のみが返されることを確認します。column1B の値を持つ行は除外されるべきです。

Modifying Users and Roles

ユーザーには必要な権限の組み合わせのために複数のロールが割り当てられることがあります。複数のロールを使用する場合、システムは権限を決定するためにロールを組み合わせ、ロールの権限は累積的な効果を持つことになります。

たとえば、role1column1 のみを選択することを許可し、role2column1column2 の選択を許可する場合、ユーザーは両方のカラムにアクセスできるようになります。

  1. 管理者アカウントを使用して、デフォルトのロールで行とカラムの両方で制限する新しいユーザーを作成します

  2. A_rows_users ロールの以前の権限を削除します

  3. A_rows_users ロールに column1 のみを選択することを許可します

  4. row_and_column_user を使用して ClickHouse クライアントにログインします

  5. すべてのカラムを含むクエリをテストします:

  6. 許可されたカラムのみを指定してテストします:

Troubleshooting

権限が交差または組み合わさることで予期しない結果が生じることがあります。以下のコマンドを使用して、管理者アカウントを使用して問題を特定できます。

Listing the grants and roles for a user

List roles in ClickHouse

Display the policies

View how a policy was defined and current privileges

Example commands to manage roles, policies, and users

以下のコマンドを使用して:

  • 権限を削除する
  • ポリシーを削除する
  • ユーザーをロールから外す
  • ユーザーとロールを削除する
ヒント

これらのコマンドは管理者ユーザーまたは default ユーザーとして実行してください。

Remove privilege from a role

Delete a policy

Unassign a user from a role

Delete a role

Delete a user

Summary

この記事では、SQLユーザーとロールの基本的な作成方法を示し、ユーザーとロールの権限を設定および変更する手順を提供しました。各詳細については、ユーザーガイドおよびリファレンス文書を参照してください。