このチュートリアルでは、Azure portal を使用して Private Link サービスを設定し、プライベート エンドポイントを使用してマネージド仮想ネットワークからオンプレミスの SQL Server にアクセスする手順について説明します。 マネージド仮想ネットワークを使用すると、オンプレミスの SQL ソースとの間のすべてのトラフィックが独自のプライベート エンドポイントを通過するようになるため、セキュリティと分離のレイヤーが追加されてパブリック クラウドへの露出がセキュリティで保護されます。 このシナリオをサポートするには、以下に示すリソースが必要です。
Note
この記事に記載されているソリューションでは SQL Server 接続について説明しますが、同様の方法を使用して、Azure Data Factory でサポートされている他の使用可能なオンプレミスコネクタに接続し、クエリを実行することができます。
前提条件
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- Virtual Network。 仮想ネットワークがない場合は、仮想ネットワークの作成に関する記事に従って作成します。
- オンプレミス ネットワークへの仮想ネットワーク。 ExpressRoute と VPN のいずれかを使用して、仮想ネットワークとオンプレミス ネットワークの間の接続を作成します。 プライベート ネットワークのクラウド仮想マシンを使用する場合は、これを行うこともできます。 クラウド仮想マシン用の仮想ネットワークと、仮想ネットワークへのプライベート リンクを作成するだけで、クラウドでホストされている場合でも、プライベート ネットワーク内のオンプレミス マシンであるかのようにアクセスできます。
- マネージド VNet が有効なデータ ファクトリ。 データ ファクトリがない、またはマネージド VNet が有効でない場合は、データ ファクトリとマネージド VNet の作成に関する記事に従って作成します。
リソース用のサブネットの作成
ポータルを使用して、仮想ネットワークにサブネットを作成します。
Subnet | 説明 |
---|---|
be-subnet | バックエンド サーバー用のサブネット |
fe-subnet | 標準の内部ロード バランサー用のサブネット |
pls-subnet | Private Link サービス用のサブネット |
Standard Load Balancer の作成
ポータルを使用して Standard 内部ロード バランサーを作成します。
画面の左上で、[リソースの作成] > [ネットワーク] > [Load Balancer] の順に選択します。
[ロード バランサーの作成] ページの [基本] タブで、次の情報を入力または選択します。
設定 値 サブスクリプション サブスクリプションを選択します。 Resource group リソース グループを選択します。 名前 「myLoadBalancer」と入力します。 リージョン [米国東部] を選択します。 Type [内部] を選択します。 SKU [Standard] を選択します。 仮想ネットワーク 仮想ネットワークを選択します。 Subnet 前の手順で作成した fe-subnet を選択します。 IP アドレスの割り当て [動的] を選択します。 可用性ゾーン [ゾーン冗長] を選択します。 残りの設定は既定値をそのまま使用し、 [確認と作成] を選択します。
[確認および作成] タブで、 [作成] を選択します。
ロード バランサーのリソースを作成する
バックエンド プールの作成
バックエンド アドレス プールには、ロード バランサーに接続された仮想 NIC の IP アドレスが含まれています。
バックエンド アドレス プール myBackendPool を作成し、インターネット トラフィックを負荷分散するために仮想マシンを含めます。
- 左側のメニューで [すべてのサービス] 、 [すべてのリソース] の順に選択し、リソースの一覧で [myLoadBalancer] を選択します。
- [設定] で、 [バックエンド プール] 、 [追加] の順に選択します。
- [バックエンド プールの追加] ページ上で、バックエンド プールの名前として「myBackendPool」と入力し、 [追加] を選択します。
正常性プローブの作成
ロード バランサーは、正常性プローブを使用してアプリの状態を監視します。
正常性プローブは、正常性チェックへの応答に基づいて、ロード バランサーに含める VM を追加したり削除したりします。
myHealthProbe という正常性プローブを作成し、VM の正常性を監視します。
左側のメニューで [すべてのサービス] 、 [すべてのリソース] の順に選択し、リソースの一覧で [myLoadBalancer] を選択します。
[設定] で、 [正常性プローブ] 、 [追加] の順に選択します。
設定 値 名前 「myHealthProbe」と入力します。 Protocol [TCP] を選択します。 Port 「22」を入力します。 Interval プローブの試行の間隔を示す秒数として、「15」を入力します。 異常のしきい値 異常しきい値またはプローブの連続する失敗の回数として [2] を選択します。この回数を超えると、VM は異常と見なされます。 残りは既定値のままにして、 [OK] を選択します。
ロード バランサー規則の作成
ロード バランサー規則の目的は、一連の VM に対するトラフィックの分散方法を定義することです。 着信トラフィック用のフロントエンド IP 構成と、トラフィックを受信するためのバックエンド IP プールを定義します。 送信元と送信先のポートは、この規則で定義します。
このセクションでは、ロード バランサー規則を作成します。
左側のメニューで [すべてのサービス] 、 [すべてのリソース] の順に選択し、リソースの一覧で [myLoadBalancer] を選択します。
[設定] で、 [負荷分散規則] 、 [追加] の順に選択します。
負荷分散規則の構成には、以下の値を使用します。
設定 値 Name 「myRule」を入力します。 IP バージョン [IPv4] を選択します。 フロントエンド IP アドレス [LoadBalancerFrontEnd] を選択します。 Protocol [TCP] を選択します。 Port 「1433」を入力します。 バックエンド ポート 「1433」を入力します。 バックエンド プール [myBackendPool] を選択します。 正常性プローブ [myHealthProbe] を選択します。 アイドル タイムアウト (分) スライダーを 15 分に移動します。 TCP リセット [無効] をクリックします。 残りの部分は既定値のままにし、次に [OK] を選択します。
プライベート リンク サービスを作成する
このセクションでは、Standard ロード バランサーの背後に Private Link サービスを作成します。
Azure portal のページ左上隅の領域にある [リソースの作成] を選択します。
[Marketplace を検索] ボックスで「Private Link」を検索します。
[作成] を選択します
[Private Link センター] の [概要] で、青色の [Create private link service](Private Link サービスの作成) ボタンを選択します。
[Create private link service](Private Link サービスの作成) の [基本] タブで、次の情報を入力または選択します。
設定 値 プロジェクトの詳細 サブスクリプション サブスクリプションを選択します。 リソース グループ リソース グループを選択します。 インスタンスの詳細 名前 「myPrivateLinkService」と入力します。 リージョン [米国東部] を選択します。 [送信設定] タブを選択するか、ページ下部の [Next: Outbound settings](次へ: 送信設定) を選択します。
[送信設定] タブで、次の情報を入力または選択します。
設定 値 Load Balancer [myLoadBalancer] を選択します。 ロード バランサーのフロントエンド IP アドレス [LoadBalancerFrontEnd] を選択します。 ソース NAT サブネット pls-subnet を選択します。 TCP プロキシ v2 を有効にする 既定値の [いいえ] のままにします。 プライベート IP アドレスの設定 既定の設定のままにします。 [アクセス セキュリティ] タブを選択するか、ページ下部の [Next: Access security](次へ: アクセス セキュリティ) を選択します。
[アクセス セキュリティ] タブは、既定値の [ロールベースのアクセス制御のみ] のままにします。
タグ タブを選択するか、次へ: タグ がページの下部にあるので、これをクリックします。
[確認と作成] タブを選択するか、ページの下部にある [次へ: 確認と作成] を選択します。
[確認と作成] タブの [作成] を選択します。
バックエンド サーバーの作成
ポータルの左上で、[リソースの作成] > [Compute] > [仮想マシン] の順に選択します。
[仮想マシンの作成] の [Basic] タブに、値を入力するか選択します。
設定 値 プロジェクトの詳細 サブスクリプション Azure サブスクリプションを選択します。 リソース グループ リソース グループを選択します。 インスタンスの詳細 仮想マシン名 「myVM1」と入力します。 リージョン [米国東部] を選択します。 可用性オプション [可用性ゾーン] を選択します。 可用性ゾーン [1] を選択します。 Image [Ubuntu Server 22.04 LTS] を選択します。 Azure Spot インスタンス このため、 [いいえ] を選択します。 サイズ VM サイズを選択するか、既定の設定を使用します。 管理者アカウント ユーザー名 ユーザー名を入力します。 SSH 公開キーのソース 新しいキーの組を生成します。 キーの組名 mySSHKey。 受信ポートの規則 パブリック受信ポート なし [ネットワーク] タブまたは [次へ: ディスク] を選択してから [次へ: ネットワーク] を選択します。
[ネットワーク] タブで、次を選択または入力します。
設定 値 ネットワーク インターフェイス 仮想ネットワーク 仮想ネットワークを選択します。 Subnet be-subnet。 パブリック IP [なし] を選択します。 NIC ネットワーク セキュリティ グループ [なし] を選択します。 負荷分散 この仮想マシンを既存の負荷分散ソリューションの後ろに配置しますか? [はい] を選択します。 ロード バランサーの設定 負荷分散のオプション [Azure load balancing](Azure 負荷分散) を選択します。 ロード バランサーを選択する [myLoadBalancer] を選択します。 バックエンド プールを選択する [myBackendPool] を選択します。 [Review + create](レビュー + 作成) を選択します。
設定を確認し、 [作成] を選択します。
手順 1 から 6 を繰り返して 2 つ以上のバックエンド サーバー VM を用意し、HA を実現できます。
エンドポイントへの転送ルールの作成
ログインしてスクリプト ip_fwd.sh をバックエンド サーバー VM にコピーします。
次のオプションを使用してスクリプトを実行します。
sudo ./ip_fwd.sh -i eth0 -f 1433 -a <FQDN/IP> -b 1433
プレースホルダー
<FQDN/IP>
をターゲット SQL Server IP に設定します。Note
Azure DNS ゾーンにレコードを追加しない限り、オンプレミスの SQL Server では FQDN が機能しません。
次のコマンドを実行し、バックエンド サーバー 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 が再起動するたびに、再構成が必要になります。
Private Link サービスに対するプライベート エンドポイントの作成
左側のメニューで [すべてのサービス] を選択し、[すべてのリソース] を選択してから、リソースの一覧で自分のデータ ファクトリを選択します。
[Author & Monitor]\(作成と監視\) を選択して、別のタブで Data Factory (UI) を起動します。
[管理] タブに移動してから、 [Managed private endpoints](マネージド プライベート エンドポイント) セクションに移動します。
[Managed private endpoints](マネージド プライベート エンドポイント) で、 [+ 新規] を選択します。
一覧から [Private Link サービス] タイルを選択し、 [続行] を選択します。
プライベート エンドポイントの名前を入力して、Private Link サービスの一覧で myPrivateLinkService を選択します。
ターゲットのオンプレミス SQL Server の
<FQDN>
を追加します。注意
仮想ネットワーク内の仮想マシンに SQL Server をデプロイする場合は、privatelink を追加して FQDN を拡張することが不可欠です。 そうしないと、DNS 設定の他のレコードと競合します。 たとえば、SQL Server の FQDN を sqlserver.westus.cloudapp.azure.net から sqlserver.privatelink.westus.cloudapp.azure.net に変更するだけです。
Note
現在、ApplicationIntent と MultiSubnetFailover は SQL 接続プロパティではサポートされていません。
プライベート エンドポイントを作成します。
リンク サービスの作成と接続のテスト
[管理] タブに移動し、[リンクされたサービス] セクションに移動します。
[リンクされたサービス] で [新規] を選択します。
一覧から [SQL Server] タイルを選択し、 [続行] を選択します。
インタラクティブな編集を有効にします。
オンプレミスの SQL Server の FQDN、ユーザー名、パスワードを入力します。
次に、 [テスト接続] をクリックします。
注意
複数の SQL Server がある場合に、複数のロード バランサー規則と IP テーブル レコードを異なるポートで定義する必要がある場合は、リンクされたサービスを編集するときに FQDN の後にポート名を明示的に追加してください。 NAT VM によってポート変換が処理されます。 明示的に指定されていない場合、接続は常にタイムアウトします。
トラブルシューティング
バックエンド サーバー VM に移動し、SQL Server が動作していることを telnet で確認します (telnet <FQDN> 1433.)。
関連するコンテンツ
次のチュートリアルに進み、プライベート エンドポイントを使用して Data Factory マネージド VNet から Microsoft Azure SQL Managed Instance にアクセスする方法について確認します。