Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

GCS データへの安全なアクセス

このガイドでは、Google Cloud Storage (GCS) への安全な認証を行い、ClickHouse Cloud からデータにアクセスする方法を説明します。

はじめに

ClickHouse Cloud は、Google Cloud のサービスアカウントに関連付けられた HMAC (Hash-based Message Authentication Code) キーを使用して GCS に接続します。 この方法では、認証情報をクエリに直接埋め込むことなく、GCS バケットに安全にアクセスできます。

仕組みは次のとおりです。

  1. 適切な GCS 権限を持つ Google Cloud のサービスアカウントを作成します
  2. そのサービスアカウント用の HMAC キーを生成します
  3. これらの HMAC 認証情報を ClickHouse Cloud に渡します
  4. ClickHouse Cloud はこれらの認証情報を使用して GCS バケットにアクセスします

この方法では、サービスアカウントに設定した IAM ポリシーを通じて GCS バケットへのアクセスを一元管理できるため、個々のバケット ポリシーを変更しなくても、アクセスの付与や取り消しを簡単に行えます。

前提条件

このガイドを進めるには、以下が必要です。

  • 有効な ClickHouse Cloud サービス
  • Cloud ストレージが有効になっている Google Cloud プロジェクト
  • GCP プロジェクトでサービス アカウントを作成し、HMAC キーを生成するための権限

セットアップ

Google Cloud のサービス アカウントを作成する

  1. Google Cloud Console で、IAM & Admin → Service Accounts に移動します
  1. 左側のメニューで Service accounts をクリックし、続いて Create service account をクリックします。

サービス アカウントの名前と説明を入力します。たとえば次のとおりです。

Service account name: clickhouse-gcs-access (or your preferred name)
Service account description: Service account for ClickHouse Cloud to access GCS buckets

Create and continue をクリックします

service account に Storage Object User ロールを付与します。

このロールにより、GCS object への読み取りおよび書き込みアクセスが可能になります

Continue をクリックし、次に Done をクリックします

service account のメールアドレスを控えておきます。

サービス アカウントにバケットへのアクセス権を付与する

アクセス権は、プロジェクト レベルまたは個々のバケット レベルで付与できます。

オプション 1: 特定のバケットへのアクセス権を付与する (推奨)

  1. Cloud ストレージBuckets に移動します
  2. アクセス権を付与するバケットをクリックします
  3. Permissions タブを開きます
  4. "Permissions" で、前の手順で作成したプリンシパルに対して Grant access をクリックします
  5. "New principals" フィールドに、サービス アカウントのメールアドレスを入力します
  6. 適切なロールを選択します。
  • 読み取り/書き込みアクセスの場合は Storage Object User
  • 読み取り専用アクセスの場合は Storage Object Viewer
  1. Save をクリックします
  2. 追加のバケットがある場合は同様に繰り返します

オプション 2: プロジェクト レベルのアクセス権を付与する

  1. IAM & AdminIAM に移動します
  2. Grant access をクリックします
  3. New principals フィールドに、サービス アカウントのメールアドレスを入力します
  4. Storage Object User を選択します (読み取り専用の場合は Storage Object Viewer)
  5. SAVE をクリックします

サービス アカウント用の HMAC キーを生成する

Cloud StorageSettingsInteroperability に移動します。

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 は後でもう一度表示することはできません。

キーの例を以下に示します:

Access Key: GOOG1EF4YBJVNFQ2YGCP3SLV4Y7CMFHW7HPC6EO7RITLJDDQ75639JK56SQVD
Secret: nFy6DFRr4sM9OnV6BG4FtWVPR25JfqpmcdZ6w9nV

ClickHouse Cloud で HMAC キーを使用する

これで、HMAC 認証情報を使用して ClickHouse Cloud から GCS にアクセスできます。 これには、GCS テーブル関数を使用します。

SELECT *
FROM gcs(
    'https://storage.googleapis.com/clickhouse-docs-example-bucket/epidemiology.csv',
    'GOOG1E...YOUR_ACCESS_KEY',
    'YOUR_SECRET_KEY',
    'CSVWithNames'
);

複数のファイルにはワイルドカードを使用します。

SELECT *
FROM gcs(
'https://storage.googleapis.com/clickhouse-docs-example-bucket/*.parquet',
'GOOG1E...YOUR_ACCESS_KEY',
'YOUR_SECRET_KEY',
'Parquet'
);

GCS 向け ClickPipes の HMAC 認証

ClickPipes では、Google Cloud Storage への認証に HMAC (Hash-based Message Authentication Code) キーを使用します。

GCS ClickPipe を設定する際は、次の手順に従ってください。

  1. ClickPipe の設定時に、Authentication methodCredentials を選択します
  2. 前の手順で取得した HMAC 認証情報を入力します

HMAC キーは、roles/storage.objectViewer ロールを持つサービスアカウントに関連付けられている必要があります。このロールには、次の権限が含まれます。

  • バケット内のオブジェクトを一覧表示するための storage.objects.list
  • オブジェクトを取得して読み取るための storage.objects.get

ベストプラクティス

環境ごとに別々のサービスアカウントを使用する

開発、ステージング、本番の各環境ごとに、別々のサービスアカウントを作成します。例:

  • clickhouse-gcs-dev@project.iam.gserviceaccount.com
  • clickhouse-gcs-staging@project.iam.gserviceaccount.com
  • clickhouse-gcs-prod@project.iam.gserviceaccount.com

これにより、他の環境に影響を与えることなく、特定の環境のアクセス権を簡単に取り消せます。

最小権限の原則を適用する

必要最小限の権限のみを付与します。

  • Storage Object Viewer は read-only アクセスに使用します
  • プロジェクト全体ではなく、特定のバケットに対してアクセス権を付与します
  • バケットレベルの条件を使用して、特定のパスへのアクセスを制限することを検討してください

HMACキーを定期的にローテーションする

次のようなキーローテーションのスケジュールを実施します。

  • 新しいHMACキーを生成する
  • 新しいキーでClickHouseの設定を更新する
  • 新しいキーで正しく動作することを確認する
  • 古いHMACキーを削除する

Cloud Audit Logs でアクセスを監視する

Cloud ストレージ の Cloud Audit Logs を有効にして、アクセス状況を監視します。

  1. IAM と Admin → Audit Logs に移動します
  2. 一覧から Cloud ストレージ を探します
  3. Admin ReadData ReadData Write logs を有効にします
  4. これらのログを使用してアクセスパターンを監視し、異常を検出します
Navigation