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

ClickHouse Cloudにおけるアクセス制御

ClickHouseは、コンソールとデータベースの2か所でユーザーアクセスを制御します。コンソールアクセスは、clickhouse.cloudユーザーインターフェイスを介して管理されます。データベースアクセスは、データベースユーザーアカウントとロールを介して管理されます。さらに、コンソールユーザーには、SQLコンソールを介してデータベースと対話するための権限を持つロールをデータベース内に付与することができます。

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

コンソール > ユーザーとロールページで、組織およびサービスロールの割り当てを設定します。各サービスの設定ページでSQLコンソールロールの割り当てを設定します。

ユーザーには組織レベルのロールが割り当てられる必要があり、一つまたは複数のサービスのためにサービスロールが任意で割り当てられることがあります。サービス設定ページで、ユーザーがSQLコンソールにアクセスするためのサービスロールが任意で設定されることがあります。

  • Organization Adminロールが割り当てられているユーザーには、デフォルトでService Adminが付与されます。
  • SAML統合を介して組織に追加されたユーザーには、メンバーのロールが自動的に割り当てられます。
  • Service AdminはデフォルトでSQLコンソール管理者ロールが付与されます。SQLコンソールの権限は、サービス設定ページで削除されることがあります。
コンテキストロール説明
組織Admin組織のすべての管理活動を行い、すべての設定を制御します。デフォルトで組織内の最初のユーザーに割り当てられます。
組織Developerサービスを除くすべての表示アクセス、読み取り専用APIキーを生成する能力。
組織Billing使用状況および請求書を表示し、支払い方法を管理します。
組織Memberサインインのみで、個人のプロフィール設定を管理する能力があります。デフォルトでSAML SSOユーザーに割り当てられます。
サービスService Adminサービス設定を管理します。
サービスService Read Onlyサービスおよび設定を表示します。
SQLコンソールSQLコンソール管理者サービス内のデータベースに対する管理アクセス(Defaultデータベースロールと同等)。
SQLコンソールSQLコンソール読み取り専用サービス内のデータベースに対する読み取り専用のアクセス。
SQLコンソールカスタムSQL GRANT文を使用して設定します。SQLコンソールユーザーには、ユーザー名の後にロールを付けて割り当てます。

SQLコンソールユーザーのためにカスタムロールを作成し、一般的なロールを付与するには、以下のコマンドを実行します。メールアドレスは、コンソール内のユーザーのメールアドレスと一致する必要があります。

  1. database_developerロールを作成し、SHOWCREATEALTER、およびDELETE権限を付与します。

  2. SQLコンソールユーザー[email protected]のためのロールを作成し、database_developerロールを割り当てます。

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

SQLコンソールユーザーは各セッションのために作成され、自動的に回転されるX.509証明書を使用して認証されます。ユーザーはセッション終了時に削除されます。監査のためのアクセスリストを生成する際は、コンソール内のサービスの設定タブに移動し、データベース内に存在するデータベースユーザーに加えてSQLコンソールアクセスを記録してください。カスタムロールが設定されている場合、ユーザーのアクセスは、ユーザー名で終わるロールにリストされます。

データベース権限

以下をサービスとデータベース内でSQL GRANT文を使用して設定します。

ロール説明
Defaultサービスへのフル管理アクセス
CustomSQL GRANT文を使用して設定します
  • データベースロールは加算的です。これは、ユーザーが2つのロールのメンバーである場合、ユーザーは2つのロールで付与された最も多くのアクセスを持つことを意味します。ロールを追加してもアクセスを失いません。
  • データベースロールは、他のロールに付与することができ、階層構造を結果として持ちます。ロールは、メンバーであるロールのすべての権限を継承します。
  • データベースロールはサービスごとに固有であり、同じサービス内の複数のデータベースに適用される場合があります。

以下の図は、ユーザーが権限を付与される異なる方法を示しています。

初期設定

データベースには、defaultという名前のアカウントが自動的に追加され、サービス作成時にdefault_roleが付与されます。サービスを作成するユーザーには、サービスが作成されたときにdefaultアカウントに割り当てられる自動生成されたランダムパスワードが提示されます。初期設定後はパスワードは表示されず、後でコンソール内でService Admin権限を持つユーザーが変更できます。このアカウントまたはコンソール内でService Admin権限を持つアカウントは、いつでも追加のデータベースユーザーとロールを設定できます。

注記

コンソール内のdefaultアカウントに割り当てられたパスワードを変更するには、左側のサービスメニューに移動し、サービスにアクセスし、設定タブに移動してパスワードリセットボタンをクリックします。

新しいユーザーアカウントを作成し、そのユーザーにdefault_roleを付与することをお勧めします。これは、ユーザーによって実行された活動がそのユーザーIDに識別され、defaultアカウントは非常時対応の活動用に予約されるためです。

ユーザーは、SHA256ハッシュジェネレーターやPythonのhashlibのようなコード関数を使用して、適切な複雑さを持つ12文字以上のパスワードをSHA256文字列に変換し、それをシステム管理者にパスワードとして提供することができます。これにより、管理者はクリアテキストのパスワードを見たり扱ったりしないことが保証されます。

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

以下のプロセスを使用して、組織内のSQLコンソールとデータベース全体の完全なアクセスリストを生成できます。

  1. データベース内のすべてのグラントのリストを取得するには、以下のクエリを実行します。

  2. このリストをSQLコンソールへのアクセスを持つコンソールユーザーに結びつけます。

    a. コンソールに移動します。

    b. 該当するサービスを選択します。

    c. 左側の設定を選択します。

    d. SQLコンソールアクセスセクションまでスクロールします。

    e. データベースへのアクセスを持つユーザーの番号のリンクThere are # users with access to this service.をクリックして、ユーザーリストを表示します。