メインコンテンツへスキップ
このガイドでは、データベースユーザーを管理する方法として、SQLコンソール上で行う方法と、データベースで直接行う方法の2つを紹介します。

SQL コンソールのパスワードレス認証

SQL コンソールのユーザーはセッションごとに作成され、自動的に更新される X.509 証明書を使用して認証されます。セッションが終了すると、そのユーザーは削除されます。監査用のアクセスリストを作成する際は、コンソールで該当サービスの Settings タブに移動し、データベース内に存在するデータベースユーザーに加えて、SQL コンソールのアクセス権も確認してください。カスタムロールが設定されている場合、ユーザーのアクセス権は、そのユーザーのユーザー名で終わるロールに表示されます。

SQL コンソールのユーザーとロール

基本的な SQL コンソールのロールは、Service Read Only および Service Admin の権限を持つユーザーに割り当てることができます。詳細については、SQL Console ロール割り当ての管理を参照してください。このガイドでは、SQL コンソールユーザー用のカスタムロールを作成する方法を説明します。 SQL コンソールユーザー用のカスタムロールを作成し、それに汎用ロールを付与するには、次のコマンドを実行します。メールアドレスは、コンソール上のユーザーのメールアドレスと一致している必要があります。
1

database_developer を作成して権限を付与する

database_developer ロールを作成し、SHOWCREATEALTERDELETE 権限を付与します。
CREATE ROLE OR REPLACE database_developer;
GRANT SHOW ON * TO database_developer;
GRANT CREATE ON * TO database_developer;
GRANT ALTER ON * TO database_developer;
GRANT DELETE ON * TO database_developer;
2

SQL コンソールユーザー用ロールを作成する

SQL コンソールユーザー my.user@domain.com 用のロールを作成し、database_developer ロールを割り当てます。
CREATE ROLE OR REPLACE `sql-console-role:my.user@domain.com`;
GRANT database_developer TO `sql-console-role:my.user@domain.com`;
3

ユーザーが SQL コンソールを使用すると新しいロールが割り当てられる

ユーザーが SQL コンソールを使用するたびに、そのメールアドレスに関連付けられたロールが割り当てられます。

データベース認証

データベースユーザー ID とパスワード

パスワードを安全に保護するため、ユーザーアカウントを作成する際は、SHA256_hash 方式を使用してください。ClickHouse のデータベースパスワードは、12 文字以上で、複雑さの要件を満たしている必要があります。つまり、大文字、小文字、数字、特殊文字のうち必要な種類を含める必要があります。
パスワードは安全に生成してください管理者権限を持たないユーザーは自分でパスワードを設定できないため、アカウント設定を依頼する前に、こちら のような生成ツールを使って、ユーザー自身にパスワードをハッシュ化してもらってください。
CREATE USER userName IDENTIFIED WITH sha256_hash BY 'hash';

Secure Shell (SSH) 認証を使用するデータベースユーザー

ClickHouse Cloud のデータベースユーザーに SSH 認証を設定するには、次の手順を実行します。
  1. ssh-keygen を使用して鍵ペアを作成します。
  2. 公開鍵を使用してユーザーを作成します。
  3. ユーザーにロールや権限を割り当てます。
  4. 秘密鍵を使用してサービスに認証します。
例を含む詳しい手順については、ナレッジベースの SSH 鍵を使用して ClickHouse Cloud に接続する方法 を参照してください。

データベース権限

SQLのGRANTステートメントを使用して、サービスおよびデータベースで以下を設定します。
RoleDescription
デフォルトサービスに対する完全な管理アクセス
カスタムSQLのGRANTステートメントを使用して設定
  • データベースロールは加算的です。つまり、ユーザーが2つのロールのメンバーである場合、そのユーザーにはその2つのロールのうち、より広いアクセス権が適用されます。ロールを追加してもアクセス権が失われることはありません。
  • データベースロールは他のロールに付与できるため、階層構造にできます。ロールは、自身がメンバーであるロールのすべての権限を継承します。
  • データベースロールはサービスごとに一意であり、同じサービス内の複数のデータベースに適用できます。
以下の図は、ユーザーに権限を付与するさまざまな方法を示しています。

初期設定

データベースには default というアカウントがあり、サービスの作成時に自動的に追加され、default_role が付与されます。サービスを作成したユーザーには、サービス作成時に default アカウントに割り当てられる、自動生成されたランダムなパスワードが表示されます。このパスワードは初期設定後には表示されませんが、後からコンソールで Service Admin 権限を持つユーザーであれば変更できます。また、このアカウント、またはコンソール内で Service Admin 権限を持つアカウントを使用して、追加のデータベースユーザーやロールをいつでも設定できます。
コンソールで default アカウントに割り当てられたパスワードを変更するには、左側の Services メニューから対象のサービスを開き、Settings タブに移動して、Reset password ボタンをクリックします。
個人にひも付く新しいユーザーアカウントを作成し、そのユーザーに default_role を付与することを推奨します。これにより、ユーザーが実行した操作をそのユーザー ID にひも付けて識別でき、default アカウントは緊急時対応用の操作のために確保できます。
  CREATE USER userID IDENTIFIED WITH sha256_hash by 'hashed_password';
  GRANT default_role to userID;
適切な複雑さを備えた12文字以上のパスワードは、SHA256ハッシュジェネレーターや Python の hashlib などの関数を使って SHA256 文字列に変換し、その文字列をパスワードとしてシステム管理者に渡すことができます。これにより、管理者が平文のパスワードを見たり取り扱ったりせずに済みます。

SQL コンソール ユーザーのデータベースアクセス一覧

以下の手順で、組織内の SQL コンソール とデータベース全体にわたる完全なアクセス一覧を生成できます。
1

すべてのデータベース権限の一覧を取得する

以下のクエリを実行して、データベース内のすべての権限の一覧を取得します。
SELECT grants.user_name,
grants.role_name,
users.name AS role_member,
grants.access_type,
grants.database,
grants.table
FROM system.grants LEFT OUTER JOIN system.role_grants ON grants.role_name = role_grants.granted_role_name
LEFT OUTER JOIN system.users ON role_grants.user_name = users.name

UNION ALL

SELECT grants.user_name,
grants.role_name,
role_grants.role_name AS role_member,
grants.access_type,
grants.database,
grants.table
FROM system.role_grants LEFT OUTER JOIN system.grants ON role_grants.granted_role_name = grants.role_name
WHERE role_grants.user_name is null;
2

権限一覧を SQL コンソール にアクセスできる Console ユーザーに関連付ける

この一覧を、SQL コンソール にアクセスできる Console ユーザーに関連付けます。a. Console に移動します。b. 該当するサービスを選択します。c. 左側で Settings を選択します。d. SQL コンソール access セクションまでスクロールします。e. データベースにアクセスできるユーザー数を示すリンク There are # users with access to this service. をクリックして、ユーザー一覧を表示します。

ウェアハウスユーザー

ウェアハウスユーザーは、同じウェアハウス内の各サービス間で共有されます。詳細については、ウェアハウスのアクセス制御を参照してください。
最終更新日 2026年6月10日