mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-15 10:52:30 +00:00
141 lines
13 KiB
Markdown
141 lines
13 KiB
Markdown
---
|
||
sidebar_label: 概要
|
||
slug: /ja/cloud/security/cloud-access-management
|
||
title: クラウドアクセス管理
|
||
---
|
||
|
||
# ClickHouse Cloudのアクセス制御
|
||
ClickHouseはユーザーアクセスをコンソールとデータベースの2つの場所で制御します。コンソールアクセスはclickhouse.cloudのユーザーインターフェースを介して管理されます。データベースアクセスはデータベースのユーザーアカウントとロールを通じて管理されます。さらに、コンソールユーザーはSQLコンソールを介してデータベースとやり取りできるように、データベース内のロールを付与されることがあります。
|
||
|
||
## ロールの種類
|
||
利用可能なロールの種類は次のとおりです:
|
||
- **コンソールロール** clickhouse.cloudコンソールへのアクセスを可能にします
|
||
- **データベースロール** 単一のサービス内の権限管理を可能にします
|
||
- **SQLコンソールロール** コンソールユーザーがSQLコンソールを介して割り当てられた権限でデータベースにアクセスできるようにする特別に名付けられたデータベースロール。
|
||
|
||
## 定義済みのロール
|
||
ClickHouse Cloudは、アクセス管理を可能にするための限られた数の定義済みロールを提供します。追加のカスタムデータベースロールは、データベース内で[CREATE ROLE](/ja/sql-reference/statements/create/role)および[GRANT](/ja/sql-reference/statements/grant)コマンドを使用していつでも作成できます。
|
||
|
||
| コンテキスト | ロール名 | 説明 |
|
||
|--------------|-----------------------|------------------------------------------------------------------------------------|
|
||
| コンソール | Admin | ClickHouse組織への完全アクセス |
|
||
| コンソール | Developer | ClickHouse組織への読み取り専用アクセス |
|
||
| SQLコンソール | sql_console_admin | データベースへの管理者アクセス |
|
||
| SQLコンソール | sql_console_read_only | データベースへの読み取り専用アクセス |
|
||
| データベース | default | データベースへの管理者アクセス。サービス作成時に`default`ユーザーに自動的に付与される |
|
||
|
||
## 初期設定
|
||
ClickHouse Cloudアカウントを最初に設定したユーザーは、コンソール内で自動的にAdminロールが割り当てられます。このユーザーは、他のユーザーを組織に招待し、AdminまたはDeveloperロールをユーザーに割り当てることができます。
|
||
|
||
:::note
|
||
コンソール内でユーザーのロールを変更するには、左側のユーザーメニューに移動し、ドロップダウンでユーザーのロールを変更してください。
|
||
:::
|
||
|
||
データベースには、自動的に追加され、サービス作成時にdefault_roleが付与された`default`というアカウントがあります。サービスが作成されたときに、このアカウントのランダムに生成されたパスワードが使用されたユーザーに表示されます。初期設定後はパスワードは表示されませんが、コンソール内で管理者権限を持つユーザーが後で変更することができます。このアカウントまたはコンソール内で管理者権限を持つアカウントは、いつでも追加のデータベースユーザーとロールを設定することができます。
|
||
|
||
:::note
|
||
コンソール内で`default`アカウントに割り当てられたパスワードを変更するには、左側のサービスメニューに移動してサービスにアクセスし、設定タブに移動してパスワードのリセットボタンをクリックしてください。
|
||
:::
|
||
|
||
新しいユーザーアカウントを作成し、そのユーザーにdefault_roleを付与することをお勧めします。これは、ユーザーが行った操作が彼らのユーザーIDに関連付けられ、`default`アカウントが緊急時対応操作用に予約されるためです。
|
||
|
||
```
|
||
CREATE USER userID IDENTIFIED WITH sha256_hash by 'hashed_password';
|
||
GRANT default_role to userID;
|
||
```
|
||
|
||
ユーザーはSHA256ハッシュジェネレーターまたはPythonのhashlibのようなコード関数を使用して、適切な複雑性を持つ12文字以上のパスワードをSHA256文字列に変換し、システム管理者に提供できます。これにより、管理者がクリアテキストのパスワードを見たり扱ったりすることがなくなります。
|
||
|
||
## コンソールロール
|
||
コンソールユーザーにはロールが割り当てられ、AdminまたはDeveloperロールを割り当てることができます。各ロールに関連付けられた権限は以下に含まれています。
|
||
|
||
| コンポーネント | 機能 | Admin | Developer |
|
||
|-----------------------------------|-----------------------------|--------|-----------|
|
||
| サービスの管理 | サービスを見る | ✅ | ✅ |
|
||
| | サービスを作成する | ✅ | ❌ |
|
||
| | サービスを削除する | ✅ | ❌ |
|
||
| | サービスを停止する | ✅ | ❌ |
|
||
| | サービスを再起動する | ✅ | ❌ |
|
||
| | サービスパスワードのリセット | ✅ | ❌ |
|
||
| | サービスメトリクスを表示 | ✅ | ✅ |
|
||
| クラウドAPI | APIキーの記録を見る | ✅ | ✅ |
|
||
| | APIキーを作成する | ✅ | Read-Only |
|
||
| | APIキーを削除する | ✅ | 自分のキー|
|
||
| コンソールユーザーの管理 | ユーザーを見る | ✅ | ✅ |
|
||
| | ユーザーを招待する | ✅ | ❌ |
|
||
| | ユーザーロールを変更する | ✅ | ❌ |
|
||
| | ユーザーを削除する | ✅ | ❌ |
|
||
| 請求、組織、サポート | 請求を見る | ✅ | ✅ |
|
||
| | 請求を管理する | ✅ | ❌ |
|
||
| | 組織活動を見る | ✅ | ❌ |
|
||
| | サポートリクエストを提出する| ✅ | ✅ |
|
||
| | 統合を見る | ✅ | ✅ |
|
||
|
||
## SQLコンソールロール
|
||
私たちのコンソールには、パスワード無しの認証でデータベースとやり取りするためのSQLコンソールが含まれています。コンソールで管理者権限が付与されたユーザーは、組織内のすべてのデータベースに対する管理アクセス権を持っています。Developerロールが与えられたユーザーにはデフォルトでアクセス権がありませんが、コンソールから“フルアクセス”または“読み取り専用”のデータベース権限が割り当てられる場合があります。“読み取り専用”ロールは最初に読み取り専用アクセスをアカウントに付与します。しかし、読み取り専用アクセスが付与された後、特定のSQLコンソールユーザーのために新しいカスタムロールを作成し、そのユーザーがSQLコンソールを介してデータベースに接続する際に使用されるようにそのユーザーに関連付けることができます。
|
||
|
||
:::note
|
||
コンソール内のDeveloperロールを持つユーザーがSQLコンソールにアクセスできるようにするには、左側のサービスメニューに移動し、サービスにアクセスして設定をクリックし、SQLコンソールアクセスセクションまでスクロールし、“フルアクセス”または“読み取り専用”を選択します。アクセス権が付与されたら、以下の***SQLコンソールロールの作成***で示されているプロセスを使用してカスタムロールを割り当ててください。
|
||
:::
|
||
|
||
### パスワードレス認証について
|
||
SQLコンソールユーザーは各セッションごとに作成され、自動でローテーションされるX.509証明書を使用して認証されます。セッションが終了するとユーザーは削除されます。監査のためにアクセスリストを生成する場合は、コンソールのサービスの設定タブに移動して、SQLコンソールアクセスとデータベース内に存在するデータベースユーザーを確認してください。カスタムロールが構成されている場合、ユーザーのアクセスはユーザーのユーザー名で終わるロールにリストされます。
|
||
|
||
## SQLコンソールロールの作成
|
||
SQLコンソールユーザーに関連付けられたカスタムロールを作成することができます。SQLコンソールはユーザーが新しいセッションを開くたびに新しいユーザーアカウントを作成するため、システムはロール名の命名規則を使用してカスタムデータベースロールをそのユーザーに関連付けます。これにより、それぞれのユーザーに個別のロールが割り当てられます。個別のロールは、GRANT文を通じて直接アクセス権を割り当てることができるか、一般的な新しいロール(例えばdatabase_developerやsecurity_administrator)を確立し、個別のユーザーロールにその一般的なロールを通じてアクセス権を与えることができます。
|
||
|
||
SQLコンソールユーザー用のカスタムロールを作成し、一般的なロールを付与するには、次のコマンドを実行します。メールアドレスはコンソール内のユーザーのメールアドレスと一致している必要があります。
|
||
1. database_developerロールを作成し、SHOW、CREATE、ALTER、およびDELETE権限を付与します。
|
||
|
||
```
|
||
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コンソールユーザー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`;
|
||
```
|
||
|
||
このロールの構成を使用すると、ユーザーが存在しない場合にユーザーアクセスを表示するクエリは、ロール対ロールの付与を含めるために修正される必要があります。
|
||
|
||
```
|
||
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;
|
||
```
|
||
|
||
## データベースロール
|
||
ユーザーとカスタムロールは、CREATE User, CREATE Role, GRANTステートメントを使用してデータベース内で直接作成することもできます。SQLコンソール用に作成されたロールを除き、これらのユーザーとロールはコンソールユーザーとロールとは独立しています。
|
||
|
||
データベースロールは加算的です。これはつまり、ユーザーが2つのロールのメンバーである場合、ユーザーはその2つのロールに付与された最も多いアクセス権を持っていることになります。ロールを追加することでアクセス権が失われることはありません。
|
||
|
||
データベースロールは他のロールに付与することができ、階層構造が可能です。ロールは、メンバーであるロールのすべての権限を継承します。
|
||
|
||
データベースロールはサービスごとにユニークであり、同じサービス内の複数のデータベースに適用することができます。
|
||
|
||
以下の図は、ユーザーに権限が付与される可能性のある異なる方法を示しています。
|
||
|
||
![Screenshot 2024-01-18 at 5 14 41 PM](https://github.com/ClickHouse/clickhouse-docs/assets/110556185/94b45f98-48cc-4907-87d8-5eff1ac468e5)
|