チュートリアル: Azure CLI を使用して Azure プライベート エンドポイント経由で Azure SQL サーバーに接続する
Azure プライベート エンドポイントは、Azure における Private Link の基本的な構成要素です。 仮想マシン (VM) などの Azure リソースと Private Link リソースとの非公開での通信が可能になります。
このチュートリアルでは、次の作業を行う方法について説明します。
- 仮想ネットワークと bastion ホストを作成します。
- 仮想マシンを作成します。
- Azure SQL サーバーとプライベート エンドポイントを作成します。
- SQL サーバー プライベート エンドポイントへの接続をテストします。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- Azure portal にサインインし、
az login
を実行して、ご利用のサブスクリプションがアクティブであることを確認します。 az --version
を実行して、ターミナルまたはコマンド ウィンドウの Azure CLI のバージョンを確認します。 最新バージョンについては、最新のリリース ノートを参照してください。- 最新バージョンを使用していない場合は、オペレーティング システムまたはプラットフォーム用のインストール ガイドに従ってインストールを更新します。
リソース グループを作成する
Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
az group create を使用して、次のようにリソース グループを作成します。
- 名前は CreateSQLEndpointTutorial-rg にします。
- 場所は eastus にします。
az group create \
--name CreateSQLEndpointTutorial-rg \
--location eastus
仮想ネットワークと bastion ホストの作成
このセクションでは、仮想ネットワーク、サブネット、bastion ホストを作成します。
bastion ホストは、プライベート エンドポイントをテストする目的で、仮想マシンに安全に接続するために使用されます。
az network vnet create を使用して仮想ネットワークを作成します。
- 名前は myVNet にします。
- アドレス プレフィックスは 10.0.0.0/16 にします。
- サブネットの名前は myBackendSubnet にします。
- サブネット プレフィックスは 10.0.0.0/24 にします。
- リソース グループは CreateSQLEndpointTutorial-rg にします。
- 場所は eastus にします。
az network vnet create \
--resource-group CreateSQLEndpointTutorial-rg\
--location eastus \
--name myVNet \
--address-prefixes 10.0.0.0/16 \
--subnet-name myBackendSubnet \
--subnet-prefixes 10.0.0.0/24
az network vnet subnet update を使用してサブネットを更新し、プライベート エンドポイントのプライベート エンドポイント ネットワーク ポリシーを無効にします。
az network vnet subnet update \
--name myBackendSubnet \
--resource-group CreateSQLEndpointTutorial-rg \
--vnet-name myVNet \
--disable-private-endpoint-network-policies true
az network public-ip create を使用して、bastion ホストのパブリック IP アドレスを作成します。
- myBastionIP という名前の Standard ゾーン冗長パブリック IP アドレスを作成します。
- リソース グループは CreateSQLEndpointTutorial-rg にします。
az network public-ip create \
--resource-group CreateSQLEndpointTutorial-rg \
--name myBastionIP \
--sku Standard
az network vnet subnet create を使用して、bastion サブネットを作成します。
- 名前は AzureBastionSubnet にします。
- アドレス プレフィックスは 10.0.1.0/24 にします。
- 仮想ネットワークは myVNet にします。
- リソース グループは CreateSQLEndpointTutorial-rg にします。
az network vnet subnet create \
--resource-group CreateSQLEndpointTutorial-rg \
--name AzureBastionSubnet \
--vnet-name myVNet \
--address-prefixes 10.0.1.0/24
az network bastion create を使用して、bastion ホストを作成します。
- 名前: myBastionHost
- リソース グループは CreateSQLEndpointTutorial-rg にします。
- パブリック IP myBastionIP に関連付けます。
- 仮想ネットワーク myVNet に関連付けます。
- 場所は eastus にします。
az network bastion create \
--resource-group CreateSQLEndpointTutorial-rg \
--name myBastionHost \
--public-ip-address myBastionIP \
--vnet-name myVNet \
--location eastus
Azure Bastion ホストがデプロイされるまでに数分かかる場合があります。
テスト用の仮想マシンを作成する
このセクションでは、プライベート エンドポイントのテストに使用する仮想マシンを作成します。
az vm create を使用して VM を作成します。 メッセージが表示されたら、VM の資格情報として使用するパスワードを入力します。
- 名前は myVM にします。
- リソース グループは CreateSQLEndpointTutorial-rg にします。
- ネットワークは myVNet にします。
- サブネットは myBackendSubnet にします。
- サーバー イメージは Win2019Datacenter にします。
az vm create \
--resource-group CreateSQLEndpointTutorial-rg \
--name myVM \
--image Win2019Datacenter \
--public-ip-address "" \
--vnet-name myVNet \
--subnet myBackendSubnet \
--admin-username azureuser
Note
パブリック IP が割り当てられていない VM、または内部の Basic Azure Load Balancer のバックエンド プール内にある VM に対しては、Azure によって既定のアウトバウンド アクセス IP が提供されます。 デフォルト送信アクセス IP メカニズムは、構成できないアウトバウンド IP アドレスを提供します。
次のいずれかのイベントが発生すると、既定のアウトバウンド アクセス IP は無効になります。
- パブリック IP アドレスが VM に割り当てられます。
- アウトバウンド規則の有無にかかわらず、VM は標準ロード バランサーのバックエンド プール内に配置されます。
- Azure NAT Gateway リソースが VM のサブネットに割り当てられている。
フレキシブル オーケストレーション モードの仮想マシン スケール セットによって作成された VM には、既定のアウトバウンド アクセスがありません。
Azure のアウトバウンド接続の詳細については、「Azure での既定の送信アクセス」および「送信接続での送信元ネットワーク アドレス変換 (SNAT)を使用する」を参照してください。
Azure SQL サーバーを作成する
このセクションでは、SQL サーバーおよびデータベースを作成します。
az sql server create を使用して、SQL サーバーを作成します。
- <sql-server-name> を一意のサーバー名に置き換えます。
- <your-password> を、実際のパスワードに置き換えます。
- リソース グループは CreateSQLEndpointTutorial-rg にします。
- リージョンは eastus にします。
az sql server create \
--name <sql-server-name> \
--resource-group CreateSQLEndpointTutorial-rg \
--location eastus \
--admin-user sqladmin \
--admin-password <your-password>
az sql db create を使用してデータベースを作成します。
- 名前は myDataBase にします。
- リソース グループは CreateSQLEndpointTutorial-rg にします。
- <sql-server-name> を一意のサーバー名に置き換えます。
az sql db create \
--resource-group CreateSQLEndpointTutorial-rg \
--server <sql-server-name> \
--name myDataBase \
--sample-name AdventureWorksLT
プライベート エンドポイントの作成
このセクションでは、プライベート エンドポイントを作成します。
az sql server list を使用して、SQL サーバーのリソース ID をシェル変数に格納します。
az network private-endpoint create を使用して、エンドポイントと接続を作成します。
- 名前は myPrivateEndpoint にします。
- リソース グループは CreateSQLEndpointTutorial-rg にします。
- 仮想ネットワークは myVNet にします。
- サブネットは myBackendSubnet にします。
- 接続名は myConnection にします。
id=$(az sql server list \
--resource-group CreateSQLEndpointTutorial-rg \
--query '[].[id]' \
--output tsv)
az network private-endpoint create \
--name myPrivateEndpoint \
--resource-group CreateSQLEndpointTutorial-rg \
--vnet-name myVNet --subnet myBackendSubnet \
--private-connection-resource-id $id \
--group-ids sqlServer \
--connection-name myConnection
プライベート DNS ゾーンを構成する
このセクションでは、az network private-dns zone create を使用してプライベート DNS ゾーンを作成し、構成します。
az network private-dns link vnet create を使用して、DNS ゾーンへの仮想ネットワーク リンクを作成します。
az network private-endpoint dns-zone-group create を使用して、DNS ゾーン グループを作成します。
- ゾーン名は privatelink.database.windows.net にします。
- 仮想ネットワークは myVNet にします。
- リソース グループは CreateSQLEndpointTutorial-rg にします。
- DNS リンク名は myDNSLink にします。
- myPrivateEndpoint に関連付けます。
- ゾーン グループ名は MyZoneGroup にします。
az network private-dns zone create \
--resource-group CreateSQLEndpointTutorial-rg \
--name "privatelink.database.windows.net"
az network private-dns link vnet create \
--resource-group CreateSQLEndpointTutorial-rg \
--zone-name "privatelink.database.windows.net" \
--name MyDNSLink \
--virtual-network myVNet \
--registration-enabled false
az network private-endpoint dns-zone-group create \
--resource-group CreateSQLEndpointTutorial-rg \
--endpoint-name myPrivateEndpoint \
--name MyZoneGroup \
--private-dns-zone "privatelink.database.windows.net" \
--zone-name sql
プライベート エンドポイントへの接続のテスト
このセクションでは、前の手順で作成した仮想マシンを使用し、プライベート エンドポイントを通じて SQL サーバーに接続します。
Azure portal にサインインします。
左側のナビゲーション ペインで [リソース グループ] を選択します。
[CreateSQLEndpointTutorial-rg] を選択します。
[myVM] を選択します。
myVM の [概要] ページで [接続] 、 [Bastion] の順に選択します。
青色の [Bastion を使用する] ボタンを選択します。
仮想マシンの作成時に入力したユーザー名とパスワードを入力します。
接続後にサーバーで Windows PowerShell を開きます。
「
nslookup <sqlserver-name>.database.windows.net
」と入力します。 <sqlserver-name> を、前の手順で作成した SQL サーバーの名前に置き換えます。 以下に表示されるようなメッセージが返されます。Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: mysqlserver8675.privatelink.database.windows.net Address: 10.0.0.5 Aliases: mysqlserver8675.database.windows.net
SQL サーバー名に対応する 10.0.0.5 というプライベート IP アドレスが返されます。 このアドレスは、先ほど作成した仮想ネットワークのサブネット内に存在します。
SQL Server Management Studio を myVM にインストールします。
SQL Server Management Studio を開きます。
[サーバーに接続] で、次の情報を入力または選択します。
設定 値 サーバーの種類 データベース エンジンを選択します。 サーバー名 「<sql-server-name>.database.windows.net」と入力します 認証 [SQL Server 認証] を選択します。 ユーザー名 サーバー作成中に入力したユーザー名を入力します Password サーバー作成中に入力したパスワードを入力します パスワードを保存する [はい] を選択します。 [接続] を選択します。
左側のメニューでデータベースを参照します。
(省略可能) 情報を作成するか、mysqldatabase に対して情報のクエリを実行します。
myVM への bastion 接続を閉じます。
リソースをクリーンアップする
プライベート エンドポイント、SQL サーバー、VM を使い終えたら、リソース グループとそこに含まれるすべてのリソースを削除します。
az group delete \
--name CreateSQLEndpointTutorial-rg
次のステップ
このチュートリアルでは、以下を作成しました。
- 仮想ネットワークと bastion ホスト。
- 仮想マシン。
- Azure SQL サーバーとプライベート エンドポイント。
仮想マシンを使用して、プライベート エンドポイントを介した SQL サーバーへの接続を安全にテストしました。
次のステップとして、Azure SQL データベースへのプライベート接続を使用する Web アプリのアーキテクチャ シナリオを確認します。このシナリオでは、仮想ネットワークの外部にある Web アプリケーションをデータベースのプライベート エンドポイントに接続します。