チュートリアル: プライベート エンドポイントを使用して Data Factory マネージド VNet からオンプレミスの SQL Server にアクセスする方法

このチュートリアルでは、Azure portal を使用して Private Link サービスを設定し、プライベート エンドポイントを使用してマネージド仮想ネットワークからオンプレミスの SQL Server にアクセスする手順について説明します。 マネージド仮想ネットワークを使用すると、オンプレミスの SQL ソースとの間のすべてのトラフィックが独自のプライベート エンドポイントを通過するようになるため、セキュリティと分離のレイヤーが追加されてパブリック クラウドへの露出がセキュリティで保護されます。 このシナリオをサポートするには、以下に示すリソースが必要です。

Note

この記事に記載されているソリューションでは SQL Server 接続について説明しますが、同様の方法を使用して、Azure Data Factory でサポートされている他の使用可能なオンプレミスコネクタに接続し、クエリを実行することができます。

SQL Server のアクセス モデルを示すスクリーンショット。

前提条件

  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
  • Virtual Network。 仮想ネットワークがない場合は、仮想ネットワークの作成に関する記事に従って作成します。
  • オンプレミス ネットワークへの仮想ネットワークExpressRouteVPN のいずれかを使用して、仮想ネットワークとオンプレミス ネットワークの間の接続を作成します。 プライベート ネットワークのクラウド仮想マシンを使用する場合は、これを行うこともできます。 クラウド仮想マシン用の仮想ネットワークと、仮想ネットワークへのプライベート リンクを作成するだけで、クラウドでホストされている場合でも、プライベート ネットワーク内のオンプレミス マシンであるかのようにアクセスできます。
  • マネージド VNet が有効なデータ ファクトリ。 データ ファクトリがない、またはマネージド VNet が有効でない場合は、データ ファクトリとマネージド VNet の作成に関する記事に従って作成します。

リソース用のサブネットの作成

ポータルを使用して、仮想ネットワークにサブネットを作成します。

Subnet 説明
be-subnet バックエンド サーバー用のサブネット
fe-subnet 標準の内部ロード バランサー用のサブネット
pls-subnet Private Link サービス用のサブネット

サブネットを示すスクリーンショット。

Standard Load Balancer の作成

ポータルを使用して Standard 内部ロード バランサーを作成します。

  1. 画面の左上で、[リソースの作成] > [ネットワーク] > [Load Balancer] の順に選択します。

  2. [ロード バランサーの作成] ページの [基本] タブで、次の情報を入力または選択します。

    設定
    サブスクリプション サブスクリプションを選択します。
    Resource group リソース グループを選択します。
    名前 myLoadBalancer」と入力します。
    リージョン [米国東部] を選択します。
    Type [内部] を選択します。
    SKU [Standard] を選択します。
    仮想ネットワーク 仮想ネットワークを選択します。
    Subnet 前の手順で作成した fe-subnet を選択します。
    IP アドレスの割り当て [動的] を選択します。
    可用性ゾーン [ゾーン冗長] を選択します。
  3. 残りの設定は既定値をそのまま使用し、 [確認と作成] を選択します。

  4. [確認および作成] タブで、 [作成] を選択します。

    標準ロード バランサーを作成する手順を示すスクリーンショット。

ロード バランサーのリソースを作成する

バックエンド プールの作成

バックエンド アドレス プールには、ロード バランサーに接続された仮想 NIC の IP アドレスが含まれています。

バックエンド アドレス プール myBackendPool を作成し、インターネット トラフィックを負荷分散するために仮想マシンを含めます。

  1. 左側のメニューで [すべてのサービス][すべてのリソース] の順に選択し、リソースの一覧で [myLoadBalancer] を選択します。
  2. [設定] で、 [バックエンド プール][追加] の順に選択します。
  3. [バックエンド プールの追加] ページ上で、バックエンド プールの名前として「myBackendPool」と入力し、 [追加] を選択します。

正常性プローブの作成

ロード バランサーは、正常性プローブを使用してアプリの状態を監視します。

正常性プローブは、正常性チェックへの応答に基づいて、ロード バランサーに含める VM を追加したり削除したりします。

myHealthProbe という正常性プローブを作成し、VM の正常性を監視します。

  1. 左側のメニューで [すべてのサービス][すべてのリソース] の順に選択し、リソースの一覧で [myLoadBalancer] を選択します。

  2. [設定] で、 [正常性プローブ][追加] の順に選択します。

    設定
    名前 myHealthProbe」と入力します。
    Protocol [TCP] を選択します。
    Port 「22」を入力します。
    Interval プローブの試行の間隔を示す秒数として、「15」を入力します。
    異常のしきい値 異常しきい値またはプローブの連続する失敗の回数として [2] を選択します。この回数を超えると、VM は異常と見なされます。
  3. 残りは既定値のままにして、 [OK] を選択します。

ロード バランサー規則の作成

ロード バランサー規則の目的は、一連の VM に対するトラフィックの分散方法を定義することです。 着信トラフィック用のフロントエンド IP 構成と、トラフィックを受信するためのバックエンド IP プールを定義します。 送信元と送信先のポートは、この規則で定義します。

このセクションでは、ロード バランサー規則を作成します。

  1. 左側のメニューで [すべてのサービス][すべてのリソース] の順に選択し、リソースの一覧で [myLoadBalancer] を選択します。

  2. [設定] で、 [負荷分散規則][追加] の順に選択します。

  3. 負荷分散規則の構成には、以下の値を使用します。

    設定
    Name myRule」を入力します。
    IP バージョン [IPv4] を選択します。
    フロントエンド IP アドレス [LoadBalancerFrontEnd] を選択します。
    Protocol [TCP] を選択します。
    Port 1433」を入力します。
    バックエンド ポート 1433」を入力します。
    バックエンド プール [myBackendPool] を選択します。
    正常性プローブ [myHealthProbe] を選択します。
    アイドル タイムアウト (分) スライダーを 15 分に移動します。
    TCP リセット [無効] をクリックします。
  4. 残りの部分は既定値のままにし、次に [OK] を選択します。

このセクションでは、Standard ロード バランサーの背後に Private Link サービスを作成します。

  1. Azure portal のページ左上隅の領域にある [リソースの作成] を選択します。

  2. [Marketplace を検索] ボックスで「Private Link」を検索します。

  3. [作成] を選択します

  4. [Private Link センター][概要] で、青色の [Create private link service](Private Link サービスの作成) ボタンを選択します。

  5. [Create private link service](Private Link サービスの作成)[基本] タブで、次の情報を入力または選択します。

    設定
    プロジェクトの詳細
    サブスクリプション サブスクリプションを選択します。
    リソース グループ リソース グループを選択します。
    インスタンスの詳細
    名前 myPrivateLinkService」と入力します。
    リージョン [米国東部] を選択します。
  6. [送信設定] タブを選択するか、ページ下部の [Next: Outbound settings](次へ: 送信設定) を選択します。

  7. [送信設定] タブで、次の情報を入力または選択します。

    設定
    Load Balancer [myLoadBalancer] を選択します。
    ロード バランサーのフロントエンド IP アドレス [LoadBalancerFrontEnd] を選択します。
    ソース NAT サブネット pls-subnet を選択します。
    TCP プロキシ v2 を有効にする 既定値の [いいえ] のままにします。
    プライベート IP アドレスの設定
    既定の設定のままにします。
  8. [アクセス セキュリティ] タブを選択するか、ページ下部の [Next: Access security](次へ: アクセス セキュリティ) を選択します。

  9. [アクセス セキュリティ] タブは、既定値の [ロールベースのアクセス制御のみ] のままにします。

  10. タグ タブを選択するか、次へ: タグ がページの下部にあるので、これをクリックします。

  11. [確認と作成] タブを選択するか、ページの下部にある [次へ: 確認と作成] を選択します。

  12. [確認と作成] タブの [作成] を選択します。

バックエンド サーバーの作成

  1. ポータルの左上で、[リソースの作成] > [Compute] > [仮想マシン] の順に選択します。

  2. [仮想マシンの作成][Basic] タブに、値を入力するか選択します。

    設定
    プロジェクトの詳細
    サブスクリプション Azure サブスクリプションを選択します。
    リソース グループ リソース グループを選択します。
    インスタンスの詳細
    仮想マシン名 myVM1」と入力します。
    リージョン [米国東部] を選択します。
    可用性オプション [可用性ゾーン] を選択します。
    可用性ゾーン [1] を選択します。
    Image [Ubuntu Server 22.04 LTS] を選択します。
    Azure Spot インスタンス このため、 [いいえ] を選択します。
    サイズ VM サイズを選択するか、既定の設定を使用します。
    管理者アカウント
    ユーザー名 ユーザー名を入力します。
    SSH 公開キーのソース 新しいキーの組を生成します。
    キーの組名 mySSHKey。
    受信ポートの規則
    パブリック受信ポート なし
  3. [ネットワーク] タブまたは [次へ: ディスク] を選択してから [次へ: ネットワーク] を選択します。

  4. [ネットワーク] タブで、次を選択または入力します。

    設定
    ネットワーク インターフェイス
    仮想ネットワーク 仮想ネットワークを選択します。
    Subnet be-subnet
    パブリック IP [なし] を選択します。
    NIC ネットワーク セキュリティ グループ [なし] を選択します。
    負荷分散
    この仮想マシンを既存の負荷分散ソリューションの後ろに配置しますか? [はい] を選択します。
    ロード バランサーの設定
    負荷分散のオプション [Azure load balancing](Azure 負荷分散) を選択します。
    ロード バランサーを選択する [myLoadBalancer] を選択します。
    バックエンド プールを選択する [myBackendPool] を選択します。
  5. [Review + create](レビュー + 作成) を選択します。

  6. 設定を確認し、 [作成] を選択します。

  7. 手順 1 から 6 を繰り返して 2 つ以上のバックエンド サーバー VM を用意し、HA を実現できます。

エンドポイントへの転送ルールの作成

  1. ログインしてスクリプト ip_fwd.sh をバックエンド サーバー VM にコピーします。

  2. 次のオプションを使用してスクリプトを実行します。

    sudo ./ip_fwd.sh -i eth0 -f 1433 -a <FQDN/IP> -b 1433
    

    プレースホルダー <FQDN/IP> をターゲット SQL Server IP に設定します。

    Note

    Azure DNS ゾーンにレコードを追加しない限り、オンプレミスの SQL Server では FQDN が機能しません。

  3. 次のコマンドを実行し、バックエンド サーバー VM の iptables をチェックします。 自分のターゲット IP と一緒に iptables のレコードを 1 つ確認できます。

    sudo iptables -t nat -v -L PREROUTING -n --line-number**
    

    コマンドのレコードを示すスクリーンショット。

    Note

    2 つ以上の SQL Server またはデータ ソースがある場合は、複数のロード バランサー規則と IP テーブル レコードを異なるポートで定義する必要があります。 そうしないと、なんらかの競合が発生します。 たとえば、次のように入力します。

    ロード バランサー規則のポート ロード バランサー規則のバックエンド ポート バックエンド サーバー VM で実行されるコマンド
    SQL Server 1 1433 1433 sudo ./ip_fwd.sh -i eth0 -f 1433 -a <FQDN/IP> -b 1433
    SQL Server 2 1434 1434 sudo ./ip_fwd.sh -i eth0 -f 1434 -a <FQDN/IP> -b 1433

    Note

    仮想マシン (VM) 内の構成は永続的ではないことに注意することが重要です。 つまり、VM が再起動するたびに、再構成が必要になります。

  1. 左側のメニューで [すべてのサービス] を選択し、[すべてのリソース] を選択してから、リソースの一覧で自分のデータ ファクトリを選択します。

  2. [Author & Monitor]\(作成と監視\) を選択して、別のタブで Data Factory (UI) を起動します。

  3. [管理] タブに移動してから、 [Managed private endpoints](マネージド プライベート エンドポイント) セクションに移動します。

  4. [Managed private endpoints](マネージド プライベート エンドポイント) で、 [+ 新規] を選択します。

  5. 一覧から [Private Link サービス] タイルを選択し、 [続行] を選択します。

  6. プライベート エンドポイントの名前を入力して、Private Link サービスの一覧で myPrivateLinkService を選択します。

  7. ターゲットのオンプレミス SQL Server の <FQDN> を追加します。

    プライベート エンドポイントの設定を示すスクリーンショット。

    注意

    仮想ネットワーク内の仮想マシンに SQL Server をデプロイする場合は、privatelink を追加して FQDN を拡張することが不可欠です。 そうしないと、DNS 設定の他のレコードと競合します。 たとえば、SQL Server の FQDN を sqlserver.westus.cloudapp.azure.net から sqlserver.privatelink.westus.cloudapp.azure.net に変更するだけです。

  8. プライベート エンドポイントを作成します。

リンク サービスの作成と接続のテスト

  1. [管理] タブに移動し、[リンクされたサービス] セクションに移動します。

  2. [リンクされたサービス][新規] を選択します。

  3. 一覧から [SQL Server] タイルを選択し、 [続行] を選択します。

    リンク サービスの作成ページを示すスクリーンショット。

  4. インタラクティブな編集を有効にします。

    インタラクティブな編集を有効にする方法を示すスクリーンショット。

  5. オンプレミスの SQL Server の FQDNユーザー名パスワードを入力します。

  6. 次に、 [テスト接続] をクリックします。

    SQL Server リンク サービスの作成ページを示すスクリーンショット。

    注意

    複数の SQL Server がある場合に、複数のロード バランサー規則と IP テーブル レコードを異なるポートで定義する必要がある場合は、リンクされたサービスを編集するときに FQDN の後にポート名を明示的に追加してください。 NAT VM によってポート変換が処理されます。 明示的に指定されていない場合、接続は常にタイムアウトします。

トラブルシューティング

バックエンド サーバー VM に移動し、SQL Server が動作していることを telnet で確認します (telnet <FQDN> 1433.)。

次のチュートリアルに進み、プライベート エンドポイントを使用して Data Factory マネージド VNet から Microsoft Azure SQL Managed Instance にアクセスする方法について確認します。