S3データへの安全なアクセス
この記事では、ClickHouse Cloudの顧客が役割ベースのアクセスを利用して、Amazon Simple Storage Service(S3)に認証し、安全にデータにアクセスする方法を示します。
はじめに
安全なS3アクセスの設定に入る前に、これがどのように機能するかを理解することが重要です。以下は、ClickHouseサービスが顧客のAWSアカウント内の役割に昇格することで、プライベートなS3バケットにアクセスできる方法の概要です。

このアプローチにより、顧客はすべてのS3バケットへのアクセスを一か所(昇格された役割のIAMポリシー)で管理でき、すべてのバケットポリシーを通過してアクセスを追加または削除する必要がなくなります。
設定
ClickHouseサービスのIAMロールArnの取得
1 - ClickHouse Cloudアカウントにログインします。
2 - 統合を作成するClickHouseサービスを選択します。
3 - 設定タブを選択します。
4 - ページの下部にあるこのサービスについてセクションまでスクロールします。
5 - 下記のようにサービスに属するIAMロールの値をコピーします。

IAMロールの設定
オプション1: CloudFormationスタックによるデプロイ
1 - IAMロールの作成と管理の権限を持つIAMユーザーで、ウェブブラウザからAWSアカウントにログインします。
2 - このURLを訪れてCloudFormationスタックを取得します。
3 - ClickHouseサービスに属するIAMロールを入力(または貼り付け)します。
4 - CloudFormationスタックを構成します。以下は、これらのパラメータに関する追加情報です。
パラメータ | デフォルト値 | 説明 |
---|---|---|
ロール名 | ClickHouseAccess-001 | ClickHouse CloudがあなたのS3バケットにアクセスするために使用する新しいロールの名前 |
ロールセッション名 | * | ロールセッション名は、バケットを更に保護するための共有秘密として使用できます。 |
ClickHouseインスタンスロール | このSecure S3統合を使用できるClickHouseサービスのIAMロールのカンマ区切りリスト。 | |
バケットアクセス | 読み取り | 提供されたバケットへのアクセスレベルを設定します。 |
バケット名 | このロールがアクセスできるバケット名のカンマ区切りリスト。 |
注: フルバケットArnは入力せず、バケット名のみを指定してください。
5 - AWS CloudFormationがカスタム名のIAMリソースを作成する可能性があることを理解しました。 チェックボックスを選択します。
6 - 右下のスタックを作成ボタンをクリックします。
7 - CloudFormationスタックがエラーなしで完了することを確認します。
8 - CloudFormationスタックの出力を選択します。
9 - この統合のためのRoleArnの値をコピーします。これがあなたのS3バケットにアクセスするために必要なものです。

オプション2: IAMロールを手動で作成する
1 - IAMロールの作成と管理の権限を持つIAMユーザーで、ウェブブラウザからAWSアカウントにログインします。
2 - IAMサービスコンソールに移動します。
3 - 以下のIAMポリシーとTrustポリシーを使用して新しいIAMロールを作成します。
Trustポリシー({ClickHouse_IAM_ARN}
をあなたのClickHouseインスタンスに属するIAMロールarnで置き換えてください):
IAMポリシー({BUCKET_NAME}
をあなたのバケット名で置き換えてください):
4 - 作成後に新しいIAMロールArnをコピーします。これがあなたのS3バケットにアクセスするために必要なものです。
ClickHouseAccessロールでS3バケットにアクセスする
ClickHouse Cloudには、S3テーブル関数の一部としてextra_credentials
を指定できる新機能があります。以下は、上記からコピーした新しく作成されたロールを使ってクエリを実行する方法の例です。
以下は、role_session_name
を共有秘密として使用してバケットからデータをクエリする例です。role_session_name
が正しくない場合、この操作は失敗します。
データ転送料を削減するため、ソースのS3がClickHouse Cloudサービスと同じリージョンにあることをお勧めします。詳細については、S3の料金を参照してください。