内部ステージ用の AWS VPC インターフェイスエンドポイント¶
このトピックでは、 AWS VPC インターフェイスエンドポイントを介してSnowflake内部ステージに接続するための概念と、詳細な手順について説明します。
このトピックの内容:
概要¶
AWS VPC インターフェイスエンドポイント と AWS PrivateLink for Amazon S3 を組み合わせて、Snowflake内部ステージへの安全な接続を提供できます。この設定により、Snowflake内部ステージへのデータのロードとアンロードの操作には AWS 内部ネットワークを使用し、パブリックインターネットを介さないようになります。
AWS が内部ステージアクセス用の VPC インターフェイスエンドポイントをサポートする前は、Snowflake内部ステージへの安全なアクセスを容易にするため、 AWS VPC 内にプロキシファームを作成する必要がありました。Snowflake内部ステージ用の VPC インターフェイスエンドポイントのサポートが追加されたことで、ユーザーアプリケーションとクライアントアプリケーションは、プライベート AWS ネットワークを介してSnowflake内部ステージにアクセスできるようになりました。次の図は、この新しいサポートをまとめたものです。
BEFORE 図の番号に関して次の点に注意してください。
ユーザーには、Snowflake内部ステージに接続するための2つのオプションがあります。
オプションAは、番号1で示されているように、内部ステージへの直接のオンプレミス接続を許可します。
オプションBは、番号2および3で示されているように、プロキシファームを介した内部ステージへの接続を許可します。
プロキシファームを使用している場合、ユーザーは番号4で示されているようにSnowflakeに直接接続することもできます。
AFTER 図の番号に関して次の点に注意してください。
この機能の更新により、プロキシファームを介してSnowflakeまたはSnowflake内部ステージに接続する必要がなくなります。
オンプレミスユーザーは、番号5に示すようにSnowflakeに直接接続できます。
Snowflake内部ステージに接続するには、オンプレミスユーザーは、番号6のインターフェイスエンドポイントに接続し、次に番号7に示すように、 AWS PrivateLink for Amazon S3を使用してSnowflake内部ステージに接続します。
内部ステージの展開ごとに1つのAmazonS3バケットがあります。内部ステージのAmazon S3バケットの プレフィックス は、各Snowflakeアカウントのデータを整理するために使用されます。Amazon S3バケットのエンドポイント URLs は、バケットへの接続がプライベート接続を使用するかどうかによって異なります(つまり、 AWS PrivateLink for S3)。
- Amazon S3グローバルパブリックエンドポイント URL
<バケット名>.s3.region.amazonaws.com/prefix
- Amazon S3 プライベートエンドポイント URL
<vpceID>.s3.<リージョン>.vpce.amazonaws.com/prefix
利点¶
Snowflake内部ステージにアクセスするために VPC インターフェイスエンドポイントを実装すると、次の利点があります。
内部ステージのデータは、パブリックインターネットを通過しません。
AWS VPC の外部で実行されるクライアントおよび SaaS アプリケーション(Microsoft PowerBI など)は、安全にSnowflakeに接続できます。
管理者は、内部ステージデータにアクセスするためにファイアウォール設定を変更する必要がありません。
管理者は、ユーザーがストレージアカウントに接続する方法に関して、一貫したセキュリティと監視を実装できます。
制限事項¶
AWS Gov Cloud(US) は、 AWS PrivateLink for S3ではサポートされていません。
その他の制限については、 AWS のドキュメント をご参照ください。
Snowflake内部ステージにアクセスするための VPC インターフェイスエンドポイントの構成¶
Snowflake内部ステージにアクセスするように VPC インターフェイスエンドポイントを構成するには、組織内にある次のロール3つからのサポートが必要です。
Snowflakeアカウント管理者(つまり、Snowflake ACCOUNTADMIN システムロールを持つユーザー)。
AWS 管理者。
ネットワーク管理者。
組織によっては、次の構成ステップを実装するために、構成作業で複数の人またはチームとの調整が必要になる場合があります。
前提条件¶
-
重要
AWS PrivateLink for S3は、クラウド環境で有効にする必要がある AWS サービスです。
このサービスの構成と実装については、 AWS 内部管理者にお問い合わせください。
ファイアウォールの許可リストを次のように更新します。
送信のファイアウォールを使用する場合は、Snowflakeに必要なすべての URLs が許可されていることを確認します。詳細については、 SnowCD (Connectivity Diagnostic Tool) をご参照ください。
us-east-1
のお客様 限定: 次のSnowflakeクライアントのいずれかを使用してSnowflakeに接続する場合は、次のようにクライアントバージョンにアップグレードします。JDBC ドライバー3.13.3(またはそれ以上)
ODBC ドライバー2.23.2(またはそれ以上)
Snowflake用Pythonコネクタ: 2.5.1(またはそれ以上)
SnowSQL: 1.2.17 (またはそれ以上)
この機能を使用する前に、 SnowSQL をアップグレードします。詳細については、 SnowSQL のインストール をご参照ください。
SnowSQL
--noup
オプション を使用している場合、 SnowSQL 自動アップグレードは無効になり、新しい SnowSQL バージョンをダウンロードできないことに注意してください。アップグレードするには、--noup
オプションを無効にし、アップグレードの完了後に再度有効にします。
手順¶
次のステップを実行して、 VPC エンドポイントを介したSnowflake内部ステージへの安全なアクセスを構成および実装します。
Snowflakeアカウント管理者として、Snowflakeアカウントで次のステートメントを実行し、
privatelink_internal_stage
キーで定義された値を記録します。Amazon S3バケット名は、左から右に読み取るときに URL の最初のセグメントで定義されることに注意してください。詳細については、 ENABLE_INTERNAL_STAGES_PRIVATELINK および SYSTEM$GET_PRIVATELINK_CONFIG をご参照ください。use role accountadmin; alter account set ENABLE_INTERNAL_STAGES_PRIVATELINK = true; select key, value from table(flatten(input=>parse_json(system$get_privatelink_config())));
AWS 管理者として、 AWS コンソールを使用して、 AWS PrivateLink for S3の VPC エンドポイントを作成します。次のステップで使用するためにVPCE DNS 名を記録します。 VPCE DNS ゾーン名は、記録 しません。
VPCE DNS 名は、エンドポイントの作成後に、 インターフェイスエンドポイント を説明することで検索できます。
この例では、ワイルドカード(つまり、
*
)が VPCE DNS 名の先頭文字としてリストされています。先頭のワイルドカードを前のステップのAmazonS3バケット名に置き換えます。例:- 置換
*.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com
- 使用
<バケット名>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com
ネットワーク管理者として、次の URL を解決するように DNS 設定を更新します。
先頭のワイルドカードがAmazonS3バケット名に置き換えられた後、
<バケット名>.s3.<リージョン>.amazonaws.com
をVPCE DNS 名に変更します。この例では、
<バケット名>.s3.<リージョン>.amazonaws.com
を<バケット名>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com
に解決します。ちなみに
Snowflakeの外部にある他のAmazon S3バケットにアクセスすると影響を受ける可能性があるため、 DNS マッピングでワイルドカード文字(つまり
*
)は使用しないでください。テストには別のSnowflakeアカウントを使用し、テスト VPC でプライベートホスト DNS ゾーンを構成して機能をテストすることにより、テストが分離されて他のワークロードに影響を与えないようにします。
別のSnowflakeアカウントを使用できない場合は、テストユーザーを使用して、 DNS の変更を実行したテスト VPC からSnowflakeにアクセスします。
オンプレミスアプリケーションからテストするには、 DNS 転送を使用して、 DNS を設定する VPC 内にある AWS プライベートホストゾーンにリクエストを転送します。VPC とオンプレミスの両方にクライアントアプリケーションがある場合は、 AWS Transit Gatewayを使用します。
クライアントマシンから次のコマンドを実行して、返された IP アドレスがストレージアカウントのプライベート IP アドレスであることを確認します。
dig <bucket_name>.s3.<region>.amazonaws.com
us-east-1
にあるSnowflakeアカウントの場合は、Snowflakeクライアントが最新バージョンであることを確認します。