はじめに
- 適切な GCS 権限を持つ Google Cloud のサービスアカウントを作成します
- そのサービスアカウント用の HMAC キーを生成します
- これらの HMAC 認証情報を ClickHouse Cloud に渡します
- ClickHouse Cloud はこれらの認証情報を使用して GCS バケットにアクセスします
前提条件
- 有効な ClickHouse Cloud サービス
- Cloud ストレージが有効になっている Google Cloud プロジェクト
- GCP プロジェクトでサービス アカウントを作成し、HMAC キーを生成するための権限
セットアップ
Google Cloud のサービス アカウントを作成する
- Google Cloud Console で、IAM & Admin → Service Accounts に移動します
- 左側のメニューで
Service accountsをクリックし、続いてCreate service accountをクリックします。
Create and continue をクリックしますservice account に Storage Object User ロールを付与します。このロールにより、GCS object への読み取りおよび書き込みアクセスが可能になりますContinue をクリックし、次に Done をクリックしますservice account のメールアドレスを控えておきます。サービス アカウントにバケットへのアクセス権を付与する
アクセス権は、プロジェクト レベルまたは個々のバケット レベルで付与できます。オプション 1: 特定のバケットへのアクセス権を付与する (推奨)
Cloud ストレージ→Bucketsに移動します- アクセス権を付与するバケットをクリックします
Permissionsタブを開きます- “Permissions” で、前の手順で作成したプリンシパルに対して
Grant accessをクリックします - “New principals” フィールドに、サービス アカウントのメールアドレスを入力します
- 適切なロールを選択します。
- 読み取り/書き込みアクセスの場合は Storage Object User
- 読み取り専用アクセスの場合は Storage Object Viewer
Saveをクリックします- 追加のバケットがある場合は同様に繰り返します
オプション 2: プロジェクト レベルのアクセス権を付与する
IAM & Admin→IAMに移動しますGrant accessをクリックしますNew principalsフィールドに、サービス アカウントのメールアドレスを入力します- Storage Object User を選択します (読み取り専用の場合は Storage Object Viewer)
SAVEをクリックします
サービス アカウント用の HMAC キーを生成する
Cloud Storage → Settings → Interoperability に移動します。Access keys セクションが表示されない場合は、Enable interoperability access をクリックしますAccess keys for service accounts の下で、Create a key for a service account をクリックします。先ほど作成したサービス アカウントを選択します (例: clickhouse-gcs-access@your-project.iam.gserviceaccount.com)Create key をクリックします。HMAC キーが表示されます。
Access Key と Secret の両方をすぐに保存してください。Secret は後でもう一度表示することはできません。キーの例を以下に示します:ClickHouse Cloud で HMAC キーを使用する
これで、HMAC 認証情報を使用して ClickHouse Cloud から GCS にアクセスできます。 これには、GCS テーブル関数を使用します。GCS 向け ClickPipes の HMAC 認証
ClickPipes では、Google Cloud Storage への認証に HMAC (Hash-based Message Authentication Code) キーを使用します。GCS ClickPipe を設定する際は、次の手順に従ってください。- ClickPipe の設定時に、
Authentication methodでCredentialsを選択します - 前の手順で取得した HMAC 認証情報を入力します
現時点ではサービスアカウント認証はサポートされていないため、HMAC キーを使用する必要があります
GCS バケットの URL は、
https://storage.googleapis.com/<bucket>/<path> 形式である必要があります (gs:// は使用できません)roles/storage.objectViewer ロールを持つサービスアカウントに関連付けられている必要があります。このロールには、次の権限が含まれます。- バケット内のオブジェクトを一覧表示するための
storage.objects.list - オブジェクトを取得して読み取るための
storage.objects.get
ベストプラクティス
環境ごとに別々のサービスアカウントを使用する
clickhouse-gcs-dev@project.iam.gserviceaccount.comclickhouse-gcs-staging@project.iam.gserviceaccount.comclickhouse-gcs-prod@project.iam.gserviceaccount.com
最小権限の原則を適用する
- Storage Object Viewer は read-only アクセスに使用します
- プロジェクト全体ではなく、特定のバケットに対してアクセス権を付与します
- バケットレベルの条件を使用して、特定のパスへのアクセスを制限することを検討してください
HMACキーを定期的にローテーションする
- 新しいHMACキーを生成する
- 新しいキーでClickHouseの設定を更新する
- 新しいキーで正しく動作することを確認する
- 古いHMACキーを削除する
Cloud Audit Logs でアクセスを監視する
- IAM と Admin → Audit Logs に移動します
- 一覧から Cloud ストレージ を探します
Admin Read、Data Read、Data Write logsを有効にします- これらのログを使用してアクセスパターンを監視し、異常を検出します