Azure Private LinkとSnowflake¶
このトピックでは、Azure Virtual Network(VNet)をAzureのSnowflake VNet に接続するための、Azure Private Linkの構成方法について説明します。
Azure Private Linkは、Snowflakeが提供するサービスでは ありません。SnowflakeアカウントでSnowflakeを使用できるようにする、Microsoftのサービスです。
このトピックの内容:
概要¶
Azure Private Link は、Snowflakeへのアクセスがプライベート IP アドレスを介して行われるようにすることで、Snowflakeへのプライベート接続を提供します。トラフィックは、Microsoftバックボーンを使用して、顧客の仮想ネットワーク(VNet)からSnowflake VNet にのみ発生し、パブリックインターネットを回避します。これにより、アクセスルールをプライベートに保ちながら安全でプライベートな通信を提供することにより、ネットワーク構成が大幅に簡素化されます。
次の図は、顧客 VNet およびSnowflake VNet に関するAzure Private Linkアーキテクチャをまとめたものです。
仮想マシン(1)から、またはピアリング(2)経由のいずれかから、仮想ネットワークのAzure Private Linkエンドポイント(3)に接続できます。次に、そのエンドポイントはPrivate Link Service(4)に接続し、Snowflakeにルーティングします。
SnowflakeとAzure Private Linkを統合するための上位レベルの手順は次のとおりです。
プライベートエンドポイントを作成します。
Azureサブスクリプションからアクセストークンを生成して取得します。
Azure Private Linkを使用してAzure上のSnowflake内部ステージに接続する予定がある場合は、プライベートエンドポイントから内部ステージに接続する前に、サブスクリプションをAzure Storageリソースプロバイダーに登録する必要があります。
AzureでSnowflakeアカウントを有効にして、Azure Private Linkを使用します。
送信ファイアウォール設定を更新して、Snowflakeアカウント URL および OCSP URL を許可します。
DNS サーバーを更新して、アカウント URL および OCSP URL をPrivate Link IP アドレスに解決します。DNS エントリをオンプレミス DNS サーバーまたは VNet のプライベート DNS に追加し、 DNS 転送を使用して、ユーザーがSnowflakeにアクセスする他の場所からエントリのクエリを送信できます。
プライベートエンドポイントに Approved の CONNECTION STATE 値が表示された後に、 SnowCD (Connectivity Diagnostic Tool) と SYSTEM$ALLOWLIST_PRIVATELINK を使用して、Snowflakeへの接続をテストします。
プライベート接続アカウント URL を使用してSnowflakeに接続します。
要件と制限¶
Azure VNetをAzureのSnowflake VNetに接続するようにAzure Private Linkを構成する前に、次に注意してください。
サブネットレベルのAzureでは、必要に応じて、プライベートエンドポイントの ネットワークポリシーを有効にします。
TCP ポート443および80が、プライベートエンドポイントネットワークカードのネットワークセキュリティグループ内で
0.0.0.0
へのトラフィックを許可していることを確認します。ポートの構成については、社内のAzure管理者にお問い合わせください。
ARM VNets を使用します。
IPv4 TCP トラフィックのみを使用します。
現在、このトピックで説明されているセルフサービスの有効化プロセスは、Azure Data Factory、Synapse、またはその他のマネージドサービスからのマネージドプライベートエンドポイントに対する承認をサポートしていません。
このユースケースでマネージドプライベートエンドポイントを構成する方法の詳細については、この 記事 (Snowflakeコミュニティ内)をご参照ください。
Microsoft Azure Private Linkの要件と制限の詳細については、Microsoftドキュメントの プライベートエンドポイントの制限 および Private Linkサービスの制限 をご参照ください。
Azure Private Linkを使用したSnowflakeへのアクセスの構成¶
注意
このセクションでは、 VNet 環境を設定するためのSnowflake固有の詳細のみを説明します。また、必要なファイアウォールの更新、および DNS 記録の実際の構成に対して、Snowflakeは責任を 負いません 。これらの構成タスクのいずれかで問題が発生した場合は、Microsoftのサポートに直接お問い合わせください。
このセクションでは、Azure Private Linkを使用して、AzureのSnowflake VNet に接続するための、Azure VNet の構成方法について説明します。Azure Private Linkを使用してSnowflakeに接続を開始した後、Azureポータルで接続の承認状態を確認できます。
インストールのヘルプについては、 Azure CLI または Azure PowerShell のMicrosoftドキュメントをご参照ください。
Microsoft Azure VNet を構成し、SnowflakeへのAzure Private Link接続を開始するための構成手順を完了します。
手順¶
この手順により、AzureでAzure Private Linkを使用してSnowflakeに接続するために必要な、Azure Private Linkリソースを手動で作成して初期化します。この手順では、ユースケースに Azure Private Linkでの SSO の使用 (このトピック内)が含まれていないことを前提としています。
Azure CLI を使用した代表的な例として、
az account list --output table
を実行します。Name
、SubscriptionID
、 およびCloudName
列の出力値に注意します。Name CloudName SubscriptionId State IsDefault ------- ---------- ------------------------------------ ------- ---------- MyCloud AzureCloud 13c... Enabled True
Azureポータルに移動します。 Private Link を検索して Private Link をクリックします。
Private endpoints をクリックしてから、 Add をクリックします。
Basics セクションで、ご使用の環境の Subscription、 Resource group、 Name、および Region フィールドに入力し、 Next: Resource をクリックします。
Resource セクションで、 Connection method および Resource ID or alias Field フィールドを完了します。
Connection Method には、 Connect to an Azure resource by resource ID or alias を選択します。
Snowflakeで、 SYSTEM$GET_PRIVATELINK_CONFIG を実行し、
privatelink-pls-id
の値を Resource ID or alias フィールドに入力します。このステップのスクリーンショットでは、east-us-2
地域のエイリアス値を代表例として使用しており、Azureは有効なエイリアス値を緑色のチェックマークで確認しています。エイリアス値に関するエラーメッセージが表示された場合は、 Snowflakeサポート に連絡してリソース ID 値を受け取り、リソース ID 値を使用してこの手順を繰り返します。
Private endpoints セクションに戻り、数分待ちます。承認されると、プライベートエンドポイントには Pending の CONNECTION STATE 値が表示されます。次のステップで認証が完了すると、この値は Approved に更新されます。
次のステップを実行して、AzureでSnowflakeアカウントを有効にしてAzure Private Linkを使用できるようにします。
コマンドライン環境で、次のAzure CLI ネットワーク コマンドを使用して、プライベートエンドポイントリソース ID の値を記録します。
az network private-endpoint show
プライベートエンドポイントは、前のステップでテンプレートファイルを使用して作成されました。リソース ID の値は、切り捨てられた値を持つ次の形式を取ります。
/subscriptions/26d.../resourcegroups/sf-1/providers/microsoft.network/privateendpoints/test-self-service
コマンドライン環境で、次の Azure CLI アカウント コマンドを実行し、出力を保存します。出力は、次のステップで
federated_token
引数の値として使用されます。az account get-access-token --subscription <SubscriptionID>
コマンド出力からアクセストークン値を抽出します。この値は、次のステップで
federated_token
値として使用します。この例では、値は切り捨てられ、アクセストークンの値はeyJ...
になります。{ "accessToken": "eyJ...", "expiresOn": "2021-05-21 21:38:31.401332", "subscription": "0cc...", "tenant": "d47...", "tokenType": "Bearer" }
重要
Azureアクセストークンを生成するユーザーは、サブスクリプションに対する読み取りアクセス権限を持っている必要があります。最小の権限は Microsoft.Subscription/ subsets /acceptOwnershipStatus/read です。または、既定のロール
Reader
により、粒度の荒い権限が付与されます。accessToken
値は機密情報であり、パスワード値のように扱う必要があります。この値は、共有 しないでください。Snowflakeサポートに連絡する必要がある場合は、サポートチケットを作成する前に、コマンドと URLs からアクセストークンを編集します。
Snowflakeで、この例では切り捨てられている
private-endpoint-resource-id
値とfederated_token
値を引数として使用して、 SYSTEM$AUTHORIZE_PRIVATELINK 関数を呼び出します。USE ROLE ACCOUNTADMIN; SELECT SYSTEM$AUTHORIZE_PRIVATELINK ( '/subscriptions/26d.../resourcegroups/sf-1/providers/microsoft.network/privateendpoints/test-self-service', 'eyJ...' );
承認済みの構成を検証するには、AzureのSnowflakeアカウントで SYSTEM$GET_PRIVATELINK 関数を呼び出します。Snowflakeは、承認に成功すると
Account is authorized for PrivateLink.
を返します。SnowflakeアカウントでAzure Private Linkを 無効 にする必要がある場合は、
private-endpoint-resource-id
とfederated_token
の引数値を使用して、 SYSTEM$REVOKE_PRIVATELINK 関数を呼び出します。DNS 設定。Snowflakeへのすべてのリクエストは、プライベートエンドポイント経由でルーティングする必要があります。DNS を更新して、Snowflakeアカウントと OCSP URLs をプライベートエンドポイントのプライベート IP アドレスに解決します。
エンドポイント IP アドレスを取得するには、Azureポータルの検索バーに移動し、エンドポイントの名前を入力します(つまり、ステップ5の NAME 値)。ネットワークインターフェイスの結果を見つけてクリックします。
Private IP address (つまり、
10.0.27.5
)の値をコピーします。SYSTEM$GET_PRIVATELINK_CONFIG 関数からの次のエンドポイント値がプライベート IP アドレスに解決されるように、 DNS を構成します。
これらのエンドポイント値により、Snowflake、 Snowsight、および Snowflake Marketplace にアクセスするのと同時に、 OCSP を使用して、Snowflakeクライアントが HTTPS および 接続 URLs を介してエンドポイントへの接続を試みる際に、証明書が取り消されていないかどうかを確認できるようになります。
取得する関数値は次のとおりです。
privatelink-account-url
privatelink-connection-ocsp-urls
privatelink-connection-urls
privatelink-ocsp-url
regionless-privatelink-account-url
regionless-snowsight-privatelink-url
snowsight-privatelink-url
regionless-snowsight-privatelink-url
とsnowsight-privatelink-url
の値により、プライベート接続を使用して Snowsight と Snowflake Marketplace にアクセスできることに注意してください。ただし、 URL リダイレクトを有効にする場合は、追加の構成があります。詳細については、 Snowsightおよびプライベート接続 をご参照ください。
注釈
DNS 構成の詳細な説明は、この手順の範囲外です。たとえば、 Azure Private DNS ゾーン を環境に統合することを選択できます。Azureおよびクラウドインフラストラクチャの内部管理者と相談して、 DNS プロパティにある URLs を適切に構成および解決してください。
アウトバウンドファイアウォール設定と DNS 記録にAzure Private Linkアカウントと OCSP URLs が含まれることを確認した後、 SnowCD (Connectivity Diagnostic Tool) と SYSTEM$ALLOWLIST_PRIVATELINK を使用してSnowflakeへの接続をテストします。
プライベート接続アカウント URL を使用してSnowflakeに接続します。
Azure Private Linkを介してSnowsightに接続する場合は、 Snowsightドキュメント の手順に従います。
Azure Private Linkでの SSO の使用¶
Snowflakeは、Azure Private LinkでのSSOの使用をサポートしています。詳細については、次をご参照ください。
Azure Private Linkでのクライアントリダイレクトの使用¶
Snowflakeは、Azure Private Linkでのクライアントリダイレクトの使用をサポートしています。
詳細については、 クライアント接続のリダイレクト をご参照ください。
プライベート接続での複製とTri-Secret Secureの使用¶
Snowflakeは、ターゲットアカウントでTri-Secret Secureまたはこの機能を有効にするかどうかに関係なく、ソースアカウントからターゲットアカウントへのデータの複製をサポートします。
詳細については、 データベースの複製と暗号化 をご参照ください。
パブリックアクセスのブロック --- オプション¶
SnowflakeとAzure Private Linkの接続をテストした後、 オプションで ネットワークポリシーを使用したネットワークトラフィックの制御 を使用して、Snowflakeへのパブリックアクセスをブロックできます。
組織の IP アドレス範囲 を使用してSnowflakeへのパブリックアクセスをブロックするように CIDR ブロック範囲を設定します。この範囲は、ご利用の仮想ネットワーク内から指定できます。
CIDR ブロック範囲が設定されると、 CIDR ブロック範囲内の IP アドレスのみがSnowflakeにアクセスできます。
ネットワークポリシーを使用してパブリックアクセスをブロックするには、
新しいネットワークポリシーを作成するか、既存のネットワークポリシーを編集します。組織の CIDR ブロック範囲を追加します。
アカウントのネットワークポリシーをアクティブにします。