Skip to main content
ClickHouse Cloud SQL Console で SET ROLE を実行すると、1 つのクエリではロールが変更されたように見えても、次のクエリでは元に戻ることがあります。クエリやセッションをまたいで権限を維持する必要がある場合は、ユーザーごとの SQL Console ロールを使用してください。

症状

次の現象が1つ以上発生する場合があります。
  • SET ROLE sql_console_developer を実行しても、その後のクエリが引き続き sql_console_read_only で実行される。
  • currentRolesenabledRolesdefaultRoles の結果がクエリごとに異なる。
  • SET ROLE と別のクエリをまとめて実行した場合、選択したロールが常に維持されるとは限らない。
  • SHOW GRANTS には想定どおりのロールが表示されるが、その権限は有効になっていない。
現在のユーザーとロールは、次の方法で確認できます。

この現象が発生する理由

SQL Console は、複数のレプリカを持つ ClickHouse Cloud サービスに対し、ステートレスな HTTP 接続を介してクエリを送信します。連続するクエリで同じ接続またはレプリカが使用されるとは限りません。 SET ROLE は、現在のセッションで有効なロールを変更します。ただし、このセッション状態は後続の SQL Console リクエストには保持されません。そのため、後続のクエリは、以前のリクエストで有効にしたロールなしで実行される可能性があります。 このため、SQL Console では SET ROLE を永続的なアクセス制御の仕組みとして使用しないでください。

SQL Console のユーザーロールの仕組み

ユーザーが SQL Console を開くと、ClickHouse Cloud は次の命名規則に従ってデータベースユーザーを作成します。
ClickHouse Cloud は、名前が次の命名規則に従うデータベースロールも確認します。
そのロールが存在する場合、ClickHouse Cloud は対応する SQL Console ユーザーにそのロールを割り当てます。これは、個々の SQL Console ユーザーに永続的なカスタム権限を付与するためにサポートされている方法です。

永続的な権限を設定する

sql_console_admin ロールを持つ SQL Console ユーザーや、ACCESS MANAGEMENT 権限を持つ別のユーザーなど、サービスに対する管理権限を持つユーザーとして、以下のステートメントを実行します。
1

カスタムロールを作成する

次の例では、カスタムロール sql_console_developer を作成し、my_database に対する権限を付与します。
sql_console_developer は組み込みの ClickHouse Cloud ロールではなく、あくまで例です。代わりに、ユーザーに必要な権限を持つ既存のカスタムロールを使用できます。
2

ユーザーごとの SQL Console ロールを作成する

名前にユーザーのメールアドレスを完全な形で含むロールを作成します。
ロール名には特殊文字が含まれるため、バッククォートが必要です。
3

カスタムロールを付与する

必要なロールをユーザーごとの SQL Console ロールに付与します。
必要に応じて、複数のロールを付与できます。
4

新しい SQL Console セッションを開始する

ユーザーに SQL Console からサインアウトして再度サインインするか、ブラウザーのタブを再読み込みするよう依頼します。新しいセッションでは、ClickHouse Cloud が sql-console-role:user@example.comsql-console:user@example.com に適用するため、SET ROLE ステートメントは必要ありません。有効なロールを確認します。
結果には、sql-console-role:user@example.com を通じて付与された権限が含まれているはずです。

管理対象ロールを変更しない

カスタム権限を付与するために、sql_console_adminsql_console_read_only を変更しないでください。これらの組み込みロールは ClickHouse Cloud によって管理されています。ユーザーごとの権限には、代わりに sql-console-role:<email> を使用してください。 ロール管理の一般的な例については、一般的なアクセス管理クエリを参照してください。
最終更新日 2026年8月14日