> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# BYOC の権限

> 自社のクラウドインフラストラクチャにClickHouseをデプロイ

<div id="aws-iam-roles">
  ## AWS IAMロール
</div>

<div id="bootstrap-iam-role">
  ### Bootstrap IAM ロール
</div>

Bootstrap IAM ロールには、次の権限があります。

* **EC2 および VPC の操作**: VPC と EKS クラスターのセットアップに必要です。
* **S3 の操作 (例: `s3:CreateBucket`) **: ClickHouse BYOC ストレージ用のバケットを作成するために必要です。
* **IAM の操作 (例: `iam:CreatePolicy`) **: コントローラーが追加のロールを作成するために必要です (詳細は次のセクションを参照してください) 。
* **EKS の操作**: 名前が `clickhouse-cloud` プレフィックスで始まるリソースに限定されます。

<div id="additional-iam-roles-created-by-the-controller">
  ### コントローラーによって追加で作成される IAM ロール
</div>

CloudFormation で作成される `ClickHouseManagementRole` に加えて、コントローラーはいくつかの追加のロールも作成します。

これらのロールは、お客様の EKS クラスター内で実行されるアプリケーションが引き受けることを想定しています。

* **State Exporter Role**
  * サービスの正常性情報を ClickHouse Cloud に報告する ClickHouse コンポーネントです。
  * ClickHouse Cloud が所有する SQS キューへの書き込み権限が必要です。
* **Load-Balancer Controller**
  * 標準的な AWS ロードバランサーコントローラーです。
  * ClickHouse サービスのボリュームを管理する EBS CSI コントローラーです。
* **External-DNS**
  * DNS 設定を Route 53 に反映します。
* **Cert-Manager**
  * BYOC サービスのドメイン向けに TLS 証明書を発行します。
* **Cluster Autoscaler**
  * 必要に応じてノードグループのサイズを調整します。

**K8s-control-plane** と **k8s-worker** のロールは、AWS EKS サービスが引き受けることを想定しています。

最後に、**`data-plane-mgmt`** は、`ClickHouseCluster` や Istio の Virtual Service/Gateway など、必要なカスタムリソースを ClickHouse Cloud のコントロールプレーンコンポーネントがリコンサイルできるようにします。

<div id="gcp-service-accounts">
  ## GCP のサービスアカウント
</div>

<div id="bootstrap-service-account">
  ### Bootstrap サービス アカウント
</div>

Bootstrap サービス アカウントには、プロジェクト スコープのカスタム ロールとして、次の権限が付与されます。

* **Common**: 基本的な閲覧権限と ID 関連の権限。
* **VPC**: BYOC インフラストラクチャを支える VPC、サブネット、ルーティング、および Private Service Connect アタッチメントを管理します。
* **Cluster**: GKE クラスターとクラスター内のリソースを管理します。
* **Storage**: ClickHouse のバックアップ、共有状態、監視データに使用される Cloud ストレージ バケットの管理に使用されます。
* **IAM Role**: プロジェクト内のサービス アカウントとカスタム ロールを管理します。このロールでは、サービス アカウント キーの作成、組織ポリシーのバインド、または他のプロジェクト内のリソースの操作は許可されません。

<div id="additional-service-accounts-created-by-the-controller">
  ### コントローラーによって追加で作成されるサービスアカウント
</div>

オンボーディングの一環として Terraform 経由で作成される `clickhouse-management` サービスアカウントに加え、最初の BYOC サービスをプロビジョニングすると、ClickHouse のコントロールプレーン (`clickhouse-management` として認証) が、クラスター内の特定のワークロード向けにプロジェクト内へ追加のサービスアカウントを作成します。これらはそれぞれ、単一の用途に限定された最小限の権限セットで作成されます。

* **GKE ノード runtime identity**
  * BYOC クラスター内のすべての GKE ノード仮想マシンにアタッチされます。
  * キューブレット、ノードローカル agent、Cloud Operations collector が logs とメトリクスを送信するために使用されるほか、イメージ取得サブシステムがコンテナー イメージをダウンロードする際にも使用されます。
* **Billing scraper identity**
  * standalone scraper ワークロードが billing テレメトリーを収集するために使用されます。
* **Monitoring identity**
  * クラスター内で稼働する monitoring stack の対象 identity です。このデプロイメント専用の GCS bucket にある長期メトリクス ストレージの読み書きに使用されます。
* **ClickHouse runtime management identity**
  * ClickHouse の runtime データプレーン管理コントローラーが使用します。これは、Private Service Connect endpoint の管理、bucket ライフサイクルの調整、サービスアカウントのローテーションなどの day-2 operations を処理します。

<div id="azure-roles-and-identities">
  ## Azure のロールと ID
</div>

<div id="onboarding-service-principal">
  ### オンボーディング用サービス プリンシパル
</div>

[Azure 用 Terraform モジュール](https://github.com/ClickHouse/terraform-byoc-onboarding/tree/main/modules/azure)によるオンボーディングでは、クロステナント認証に関する Azure のガイダンスに従って、テナント内にマルチテナント アプリケーションをエンタープライズ アプリケーション (サービス プリンシパル) としてプロビジョニングします。サービス プリンシパルには、ターゲット サブスクリプションをスコープとする最小権限のカスタム ロールが割り当てられ、次の権限が付与されます。

* **ネットワーク**: BYOC インフラストラクチャをホストする VNet、サブネット、パブリック IP、NAT ゲートウェイ、ネットワーク セキュリティ グループ、DNS ゾーンを管理します。
* **クラスター**: AKS クラスターとノードプールを管理します。
* **ストレージ**: ClickHouse データ、バックアップ、監視データに使用するストレージ アカウントとブロブ コンテナーを管理します。
* **ID**: サブスクリプション内のユーザー割り当てマネージド ID と、そのフェデレーション ID 資格情報を管理します。
* **認可**: カスタム ロール定義とロールの割り当てを管理します。すべての権限はターゲット サブスクリプションに限定されるため、このロールは他のサブスクリプションやテナントのリソースにアクセスできません。

<div id="additional-managed-identities-created-by-the-controller">
  ### コントローラーが作成する追加のマネージド identity
</div>

BYOC サービスをプロビジョニングすると、ClickHouse のコントロールプレーンによって、お客様のサブスクリプション内にユーザー割り当てマネージド identity が作成されます。各 identity は、権限を限定し、単一の目的にのみ使用する特定の Kubernetes サービスアカウント (Workload identity) にフェデレーションされます。

* **サービスごとの identity**
  * 各 ClickHouse サービスが、テーブルデータとバックアップ用のストレージアカウントにアクセスする際に使用します。アクセスには、そのストレージアカウントをスコープとするカスタム ブロブ ストレージロールを使用します。
  * サービスをバックアップから復元する際には、ソースサービスのバックアップコンテナーに対する読み取り専用アクセスも追加で付与されます。
* **共有インフラストラクチャ identity**
  * プライベートリンク サービスの管理など、Day 2 運用において ClickHouse のruntimeデータプレーン管理コントローラーが使用します。
