Snowpipe Streamingの設定

Snowpipe Streamingプロパティ

profile.json ファイルで API 接続設定を構成します。プロパティについては、このトピックで説明します。

Java の例 (GitHub)で示されているように、変数 PROFILE_PATH への入力としてファイルパスを指定することにより、 profile.json から設定を読み込むことができます。

必須のプロパティ

authorization_type

ユーザーの認証および承認メソッドを構成します。次のいずれかのメソッドを使用します。

  • JWT : JSON Webトークン(JWT)によるキーペア認証。このメソッドがデフォルトです。 authorization_type が構成されていない場合、デフォルトのメソッド JWT が使用されます。キーペア認証用に次の private_key を構成します。

    • private_key ユーザーを認証するための秘密キー。ヘッダーまたはフッターではなく、キーのみを含めます。キーが複数の行に分割されている場合、改行を削除します。

      暗号化されていないキーを提供するか、暗号化されたキーを提供して snowflake.private.key.passphrase パラメーターを提供し、Snowflakeがキーを復号化できるようにします。このパラメータは、 snowflake.private.key パラメーター値が暗号化されている場合 にのみ 使用します。

  • OAuth : Snowflake OAuth。このオプションは、Snowflake Ingest SDK バージョン2.0.3以降でのみ使用できます。 profile.json ファイル内のSnowflake OAuth に対して次のパラメーターを構成します。

    • oauth_client_id : OAuth 統合のクライアント ID。

    • oauth_client_secret : OAuth 統合のクライアントシークレット。

    • oauth_refresh_token : OAuth 統合の有効なリフレッシュトークン。

    Snowflake/ OKTA OAuth でトークン更新をサポートするには、3つのパラメータを設定する必要があります: oauth_client_idoauth_client_secret 、および oauth_refresh_token。ただし、トークン更新リクエストでこれらの値を必要としない、 OAuth 用にカスタマイズされた API エンドポイントを使用する場合は、これらのパラメータのフィールドに任意のプレースホルダを入力できます。

url

Snowflakeアカウントにアクセスするための URL。この URL には、使用する アカウント識別子 が含まれている必要があります。プロトコル(https://)とポート番号はオプションです。

すでにSnowflake Ingest SDK を使用しており、 profile.json ファイルで hostscheme、および port プロパティを設定している場合は、 url は必要ありません。

user

Snowflakeアカウントのユーザーログイン名。

オプションのプロパティ

enable_iceberg_streaming

プロパティを true にセットすると、Snowflakeが管理する Apache Iceberg™ テーブルでSnowpipe Streamingが有効になります。詳細については、 Snowpipe Streamingを Apache Iceberg™ テーブルで使用する をご参照ください。

max_client_lag

このプロパティを使用して、データフラッシュレイテンシーを構成します。デフォルトでは、Snowpipe Streamingは標準的なSnowflakeテーブル(非Apache Iceberg)のデータを1秒ごとにフラッシュします。max_client_lag構成では、これをオーバーライドし、1秒から10分までの希望するフラッシュレイテンシーにセットすることができます。詳細情報については、 Snowpipe Streamingのレイテンシーの推奨事項 を参照してください。

snowflake.private.key.passphrase

キーが暗号化されている場合に秘密キーを復号化するためのパスフレーズ。詳細については、 キーペア認証およびキーローテーションの使用 (このトピック内) をご参照ください。

role

Snowflakeに接続した後にセッションに使用するアクセス制御ロール。

role プロパティは、Snowflake Ingest SDK バージョン2.0.3以降ではオプションとなります。これは、Ingest SDK の旧バージョンでは必要です。

認証および承認

Snowflake OAuth を使用する

Snowflake Ingest SDK バージョン2.0.3以降、またはKafkaバージョン2.1.2用Snowflakeコネクタでは、認証方法として Snowflake OAuth を使用できます。

ワークフロー に従ってSnowflake OAuth 統合を作成し、 OAuth エンドポイントを呼び出して認証コードを要求してアクセストークンをリフレッシュします。トークンリクエストの応答には oauth_refresh_token が含まれます。Snowflakeの OAuth 統合 が作成されたら、 SYSTEM$SHOW_OAUTH_CLIENT_SECRETS 関数を実行して oauth_client_idoauth_client_secret を取得します。

Snowflake OAuth を有効にするには、 profile.json ファイルの authorization_typeOAuth に設定し、 oauth_refresh_tokenoauth_client_idoauth_client_secret フィールドに上記で取得したパラメーターを入力します。

キーペア認証とキーローテーションの使用

API 呼び出しは、 JSON Webトークン(JWT)によるキーペア認証に依存しています。JWTs では、 RSA 暗号化を使用した公開/秘密キーペアを使用して署名されます。この認証方法には、2048ビット(最小)の RSA キーペアが必要です。 OpenSSLを使用して公開キーと秘密キーのペアを生成します。公開キーは、プロパティファイルで定義されたSnowflakeユーザーに割り当てられます。

キーペアのローテーション で説明されているキーペアの認証手順を完了します。秘密キー全体をコピーして、プロパティファイルの snowflake.private.key フィールドに貼り付けます。ファイルを保存します。

フィンガープリントを作成して JWT トークンを生成する例については、 Javaの例 をご参照ください。

次に、 シークレットの外部化 (このトピック内) の推奨事項を評価します。

シークレットの外部化

Snowflakeは、秘密キーなどの秘密を外部化し、暗号化された形式、または AWS Key Management Service(KMS)、Microsoft Azure Key Vault、 HashiCorp Vaultなどのキー管理サービスで保存することを強くお勧めします。

詳細については、この サービス のConfluent説明をご参照ください。