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

141 lines
13 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 41PM](https://github.com/ClickHouse/clickhouse-docs/assets/110556185/94b45f98-48cc-4907-87d8-5eff1ac468e5)