CLI を使用して Azure Database for MySQL 用のプライベート リンクを作成および管理する
適用対象: Azure Database for MySQL - 単一サーバー
重要
Azure Database for MySQL シングル サーバーは廃止パスにあります。 Azure Database for MySQL フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for MySQL フレキシブル サーバーへの移行の詳細については、Azure Database for MySQL シングル サーバーの現状に関するページを参照してください
プライベート エンドポイントは、Azure におけるプライベート リンクの基本的な構成要素です。 これによって、仮想マシン (VM) などの Azure リソースが Private Link リソースと非公開で通信できるようになります。 この記事では、Azure CLI を使用して Azure Virtual Network 内に VM を作成し、Azure プライベート エンドポイントを含む Azure Database for MySQL サーバーを作成する方法について説明します。
注意
プライベート リンク機能は、General Purpose または Memory Optimized のいずれかの価格レベルの Azure Database for MySQL サーバーにのみ使用可能です。 データベース サーバーがこれらの価格レベルのいずれであるかを確認します。
前提条件
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。
CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
- この記事では、Azure CLI のバージョン 2.0.28 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。
リソース グループを作成する
リソースを作成するには、その前に、仮想ネットワークをホストするリソース グループを作成する必要があります。 az group create を使用して、リソース グループを作成します。 この例では、westeurope の場所に myResourceGroup という名前のリソース グループを作成します。
az group create --name myResourceGroup --location westeurope
仮想ネットワークを作成します
az network vnet create を使用して仮想ネットワークを作成します。 この例では、mySubnet という名前のサブネットを使って、myVirtualNetwork という名前の既定の仮想ネットワークを作成します。
az network vnet create \
--name myVirtualNetwork \
--resource-group myResourceGroup \
--subnet-name mySubnet
サブネットのプライベート エンドポイント ポリシーを無効にする
Azure では仮想ネットワーク内のサブネットにリソースがデプロイされるため、プライベート エンドポイントのネットワーク ポリシーを無効にするようにサブネットを作成または更新する必要があります。 az network vnet subnet update を使用して mySubnet という名前のサブネット構成を更新します。
az network vnet subnet update \
--name mySubnet \
--resource-group myResourceGroup \
--vnet-name myVirtualNetwork \
--disable-private-endpoint-network-policies true
VM の作成
az vm create を使って VM を作成します。 メッセージが表示されたら、VM のサインイン資格情報として使用するパスワードを入力します。 この例では、myVm という名前の VM を作成します。
az vm create \
--resource-group myResourceGroup \
--name myVm \
--image Win2019Datacenter
注意
VM のパブリック IP アドレス。 このアドレスは、次の手順でインターネットから VM に接続するために使用します。
Azure Database for MySQL サーバーの作成
az mysql server create コマンドを使用して Azure Database for MySQL を作成します。 MySQL サーバーの名前は Azure 全体で一意である必要があるため、角かっこ内のプレースホルダー値を独自の一意の値に置き換えることを忘れないでください。
# Create a server in the resource group
az mysql server create \
--name mydemoserver \
--resource-group myResourcegroup \
--location westeurope \
--admin-user mylogin \
--admin-password <server_admin_password> \
--sku-name GP_Gen5_2
Note
Azure Database for MySQL と VNet サブネットが異なるサブスクリプションに存在する場合があります。 このような場合は、次の構成を確認する必要があります。
- 両方のサブスクリプションに Microsoft.DBforMySQL リソース プロバイダーが登録されていることを確認してください。 詳細については、resource-manager-registration に関するページをご覧ください
プライベート エンドポイントを作成する
Virtual Network 内に MySQL サーバーのプライベート エンドポイントを作成します。
az network private-endpoint create \
--name myPrivateEndpoint \
--resource-group myResourceGroup \
--vnet-name myVirtualNetwork \
--subnet mySubnet \
--private-connection-resource-id $(az resource show -g myResourcegroup -n mydemoserver --resource-type "Microsoft.DBforMySQL/servers" --query "id" -o tsv) \
--group-id mysqlServer \
--connection-name myConnection
プライベート DNS ゾーンを構成する
MySQL サーバー ドメイン用のプライベート DNS ゾーンを作成し、Virtual Network との関連付けリンクを作成します。
az network private-dns zone create --resource-group myResourceGroup \
--name "privatelink.mysql.database.azure.com"
az network private-dns link vnet create --resource-group myResourceGroup \
--zone-name "privatelink.mysql.database.azure.com"\
--name MyDNSLink \
--virtual-network myVirtualNetwork \
--registration-enabled false
# Query for the network interface ID
$networkInterfaceId=$(az network private-endpoint show --name myPrivateEndpoint --resource-group myResourceGroup --query 'networkInterfaces[0].id' -o tsv)
az resource show --ids $networkInterfaceId --api-version 2019-04-01 -o json
# Copy the content for privateIPAddress and FQDN matching the Azure database for MySQL name
# Create DNS records
az network private-dns record-set a create --name myserver --zone-name privatelink.mysql.database.azure.com --resource-group myResourceGroup
az network private-dns record-set a add-record --record-set-name myserver --zone-name privatelink.mysql.database.azure.com --resource-group myResourceGroup -a <Private IP Address>
注意
お客様の DNS 設定の FQDN は、構成されている非公開 IP では解決されません。 こちらで示すように、構成された FQDN の DNS ゾーンを設定する必要があります。
インターネットから VM に接続する
次のように、インターネットから VM myVm に接続します。
ポータルの検索バーに、「myVm」と入力します。
[接続] を選択します。 [接続] ボタンを選択すると、 [Connect to virtual machine](仮想マシンに接続する) が開きます。
[RDP ファイルのダウンロード] を選択します。 リモート デスクトップ プロトコル ( .rdp) ファイルが作成され、お使いのコンピューターにダウンロードされます。
downloaded.rdp ファイルを開きます。
メッセージが表示されたら、 [Connect] を選択します。
VM の作成時に指定したユーザー名とパスワードを入力します。
Note
場合によっては、[その他]>[別のアカウントを使用する] を選択して、VM の作成時に入力した資格情報を指定する必要があります。
[OK] を選択します。
サインイン処理中に証明書の警告が表示される場合があります。 証明書の警告を受信する場合は、 [はい] または [続行] を選択します。
VM デスクトップが表示されたら最小化してローカル デスクトップに戻ります。
VM から MySQL サーバーにプライベートにアクセスする
myVM のリモート デスクトップで、PowerShell を開きます。
「
nslookup mydemomysqlserver.privatelink.mysql.database.azure.com
」と入力します。次のようなメッセージが返されます。
Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: mydemomysqlserver.privatelink.mysql.database.azure.com Address: 10.1.3.4
利用可能な任意のクライアントを使用して、MySQL サーバーのプライベート リンク接続をテストします。 次の例では、MySQL Workbench を使用して操作を行いました。
[新しい接続] で、この情報を入力または選択します。
設定 値 接続名 ご自身で選んだ接続の名前を選択します。 hostname mydemoserver.privatelink.mysql.database.azure.com を選択します。 ユーザー名 MySQL サーバーの作成時に指定されるユーザー名を「username@servername」として入力します。 Password MySQL サーバーの作成時に指定したパスワードを入力します。 [接続] を選択します。
左側のメニューでデータベースを参照します。
(省略可能) MySQL データベースから情報を作成または照会します。
myVm へのリモート デスクトップ接続を閉じます。
リソースをクリーンアップする
不要になったら、az group delete を使って、リソース グループとそのすべてのリソースを削除できます。
az group delete --name myResourceGroup --yes
次のステップ
- Azure プライベート エンドポイントの概要について学習します。