Share via


チュートリアル: Azure CLI を使用して Azure プライベート エンドポイント経由で Azure SQL サーバーに接続する

Azure プライベート エンドポイントは、Azure における Private Link の基本的な構成要素です。 仮想マシン (VM) などの Azure リソースと Private Link リソースとの非公開での通信が可能になります。

プライベート エンドポイントのクイックスタートで作成されたリソースの図。

このチュートリアルでは、次の作業を行う方法について説明します。

  • 仮想ネットワークと bastion ホストを作成します。
  • 仮想マシンを作成します。
  • Azure SQL サーバーとプライベート エンドポイントを作成します。
  • SQL サーバー プライベート エンドポイントへの接続をテストします。

前提条件

リソース グループを作成する

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 サーバーに接続します。

  1. Azure portal にサインインします。

  2. 左側のナビゲーション ペインで [リソース グループ] を選択します。

  3. [CreateSQLEndpointTutorial-rg] を選択します。

  4. [myVM] を選択します。

  5. myVM の [概要] ページで [接続][Bastion] の順に選択します。

  6. 青色の [Bastion を使用する] ボタンを選択します。

  7. 仮想マシンの作成時に入力したユーザー名とパスワードを入力します。

  8. 接続後にサーバーで Windows PowerShell を開きます。

  9. 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 アドレスが返されます。 このアドレスは、先ほど作成した仮想ネットワークのサブネット内に存在します。

  10. SQL Server Management StudiomyVM にインストールします。

  11. SQL Server Management Studio を開きます。

  12. [サーバーに接続] で、次の情報を入力または選択します。

    設定
    サーバーの種類 データベース エンジンを選択します。
    サーバー名 <sql-server-name>.database.windows.net」と入力します
    認証 [SQL Server 認証] を選択します。
    ユーザー名 サーバー作成中に入力したユーザー名を入力します
    Password サーバー作成中に入力したパスワードを入力します
    パスワードを保存する [はい] を選択します。
  13. [接続] を選択します。

  14. 左側のメニューでデータベースを参照します。

  15. (省略可能) 情報を作成するか、mysqldatabase に対して情報のクエリを実行します。

  16. myVM への bastion 接続を閉じます。

リソースをクリーンアップする

プライベート エンドポイント、SQL サーバー、VM を使い終えたら、リソース グループとそこに含まれるすべてのリソースを削除します。

az group delete \
    --name CreateSQLEndpointTutorial-rg

次のステップ

このチュートリアルでは、以下を作成しました。

  • 仮想ネットワークと bastion ホスト。
  • 仮想マシン。
  • Azure SQL サーバーとプライベート エンドポイント。

仮想マシンを使用して、プライベート エンドポイントを介した SQL サーバーへの接続を安全にテストしました。

次のステップとして、Azure SQL データベースへのプライベート接続を使用する Web アプリのアーキテクチャ シナリオを確認します。このシナリオでは、仮想ネットワークの外部にある Web アプリケーションをデータベースのプライベート エンドポイントに接続します。