ClickHouse/docs/ja/cloud/security/common-access-management-queries.md
2024-11-18 11:58:58 +09:00

4.3 KiB

sidebar_label title slug
一般的なアクセス管理クエリ 一般的なアクセス管理クエリ /ja/cloud/security/common-access-management-queries

import CommonUserRolesContent from '@site/docs/ja/_snippets/_users-and-roles-common.md';

一般的なアクセス管理クエリ

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

この記事では、SQLユーザーとロールを定義し、それらの特権と権限をデータベース、テーブル、行、カラムに適用する基本的な方法を示します。

管理ユーザー

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

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

CREATE USER IF NOT EXISTS clickhouse_admin
IDENTIFIED WITH sha256_password BY 'P!@ssword42!';
GRANT default_role TO clickhouse_admin;

:::note 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コンソールユーザー専用のデータベースロールを作成する必要があります。例えば:

CREATE ROLE OR REPLACE sql-console-role:<email>;
GRANT <some grants> TO sql-console-role:<email>;

一致するロールが検出されると、テンプレートロールではなく、そのユーザーに割り当てられます。より複雑なアクセス制御の設定が可能となり、例えばsql_console_sa_rolesql_console_pm_roleのようなロールを作成し、特定のユーザーに付与することができます。例えば:

CREATE ROLE OR REPLACE sql_console_sa_role;
GRANT <whatever level of access> TO sql_console_sa_role;
CREATE ROLE OR REPLACE sql_console_pm_role;
GRANT <whatever level of access> TO sql_console_pm_role;
CREATE ROLE OR REPLACE `sql-console-role:christoph@clickhouse.com`;
CREATE ROLE OR REPLACE `sql-console-role:jake@clickhouse.com`;
CREATE ROLE OR REPLACE `sql-console-role:zach@clickhouse.com`;
GRANT sql_console_sa_role to `sql-console-role:christoph@clickhouse.com`;
GRANT sql_console_sa_role to `sql-console-role:jake@clickhouse.com`;
GRANT sql_console_pm_role to `sql-console-role:zach@clickhouse.com`;