Icebergデータへの安全なアクセス
ClickHouse Cloud は、ARN ベースの AWS IAM 信頼関係を利用して、オブジェクトストレージ (通常は S3) に保存された Iceberg データへの安全なロールベースアクセスをサポートします。このガイドでは、Accessing S3 data securely と同じ安全な設定パターンに従い、ClickHouse に Iceberg 固有の設定を追加します。
概要
- ClickHouse Cloud のサービスロール ID (IAM) を取得します。
- ClickHouse が引き受けられる IAM ロールを AWS アカウントに作成します。
- Iceberg 固有のオブジェクトポリシーとカタログポリシーをロールにアタッチします。
- ロールベースの認証情報を使用して、Iceberg テーブル関数または IcebergS3 テーブルエンジンを使用します。
ClickHouse のサービスロール ID (ARN) を取得する
1. ClickHouse Cloud アカウントにログインします。
2. Iceberg データをクエリする ClickHouse サービスを選択します。
3. 設定 タブを開きます。
4. ネットワーク セキュリティ情報 までスクロールします。
IAM Assume Role をセットアップする
1. AWS にログインし、IAM サービスに移動します。
2. Roles を選択し、次に Create role を選択します。
Trusted entity type で Custom trust policy を選択し、ステップ 3 の内容に基づいて値を入力します。
3. 信頼ポリシーと IAM ポリシーを追加します。
{service-role-id} を、ClickHouse インスタンスの サービスロール ID (IAM) に置き換えます。
読み取り/書き込みワークロードでは、IAM ポリシーに s3:PutObject、s3:DeleteObject、および Iceberg のメタデータを変更するアクションを含める必要があります。上記のサンプルは、保守的な読み取り専用の例です。
より強力な分離が必要な場合は、リクエスト元を ClickHouse Cloud の VPC エンドポイントに制限してください。このオプションの詳細については、Secure S3 advanced action control を参照してください。
4. ロールの作成を完了します。
a. Next をクリックし、権限割り当て画面でもう一度 Next をクリックします。
b. 名前 (例: iceberg-role-for-clickhouse) と説明を追加します。
c. タグを追加します (任意) 。
d. ポリシーを確認します。
e. Create role を選択します。
5. 作成後、新しい IAM Role ARN をコピーします。
ClickHouse Cloud での Iceberg アクセスを設定する
オプション A: ロール ARN を使用する Iceberg テーブル関数
NOSIGN オプションとロールベースの認証情報を指定して、icebergS3 テーブル関数を使用します。ClickHouse Cloud は STS を呼び出して、そのロールを引き受けます。
オプションB: 永続型 Iceberg テーブルエンジン
オプション C: Glue カタログ + IcebergS3
注意: Glue カタログ を使用する場合は、IAM ロールに S3 と Glue の両方に対する読み取り権限と一覧表示権限があることを確認してください.
オプション D: Glue 向け DataLake Catalog
DataLake Catalog for Glue は、バージョン 26.2 で提供予定です。
アクセスを確認する
- 簡単なクエリを実行します:
AccessDeniedやInvalidAccessKeyIdなどの IAM エラーが発生していないか確認します。
トラブルシューティング
- ClickHouse Cloud のサービス設定で、ロール ARN を確認してください。
- レイテンシーとコストを抑えるため、バケットやオブジェクトが Iceberg クエリと同じリージョンにあることを確認してください。
- Iceberg テーブルのパスが、有効な Iceberg メタデータの場所 (テーブルルート配下の
metadata/v1/...ファイル) を指していることを確認してください。 - カタログモードでは、AWS Glue コンソールで Glue メタデータとパーティションの可視性を確認してください。
