Share via


Azure CLI を使用した Azure Database for MySQL - フレキシブル サーバーの Private Link の作成と管理

適用対象: Azure Database for MySQL - フレキシブル サーバー

この記事では、Azure CLI を使用して、VNet 内の VM から Azure Database for MySQL フレキシブル サーバーにアクセスするためのプライベート エンドポイントを作成する方法について説明します。

Azure Cloud Shell を起動する

Azure Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。 標準的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。

Cloud Shell を開くには、コード ブロックの右上隅にある [使ってみる] を選択します。 https://shell.azure.com/bash に移動して、別のブラウザー タブで Cloud Shell を開くこともできます。 [コピー] を選択してコードのブロックをコピーし、Cloud Shell に貼り付けてから、 [入力] を選択して実行します。

CLI をローカルにインストールして使用する場合、このクイックスタートでは、Azure CLI バージョン 2.0 以降が必要です。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

前提条件

az login コマンドを使用してアカウントにログインする必要があります。 id プロパティに注意してください。これは、お使いの Azure アカウントのサブスクリプション ID を参照します。

az login

az account set コマンドを使用して、アカウントの特定のサブスクリプションを選択します。 このコマンドで、az login の出力の id 値を、subscription 引数の値として使用します。 複数のサブスクリプションをお持ちの場合は、リソースが課金の対象となる適切なサブスクリプションを選択してください。 お使いのすべてのサブスクリプションを取得するには、az account list を使用します。

az account set --subscription <subscription id>

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

リソースを作成する前に、仮想ネットワークをホストするリソース グループを作成する必要があります。 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 の作成

を使用して VM を作成します az vm create。 メッセージが表示されたら、VM のサインイン資格情報として使用するパスワードを入力します。 この例では、myVm という名前の VM を作成します。

az vm create \
  --resource-group myResourceGroup \
  --name myVm \
  --image Win2019Datacenter

注意

次の手順でインターネットから接続する際に必要な VM のパブリック IP アドレスを記録します。

リソース グループにパブリック アクセス権を持つ Azure Database for MySQL フレキシブル サーバー インスタンスを作成する

パブリック アクセスを使用して Azure Database for MySQL フレキシブル サーバー インスタンスを作成し、それにアクセスするためのクライアント IP アドレスを追加します。

az mysql flexible-server create \
  --name mydemoserver \
  --resource-group myResourcegroup \
  --location westeurope \
  --admin-user mylogin \
  --admin-password <server_admin_password> \
  --public-access <my_client_ip>

Note

場合によっては、Azure Database for MySQL フレキシブル サーバー インスタンスと VNet サブネットが異なるサブスクリプションに存在します。 このような場合は、次の構成を確認する必要があります。

  • 両方のサブスクリプションで Microsoft.DBforMySQL/flexibleServer リソース プロバイダーが登録されていることを確認してください。 詳細については、resource-manager-registration に関するページをご覧ください。

プライベート エンドポイントを作成する

仮想ネットワークで Azure Database for 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/flexibleServers" --query "id" -o tsv) \
    --group-id mysqlServer \
    --connection-name myConnection \
    --location location

プライベート DNS ゾーンを構成する

Azure Database for MySQL フレキシブル サーバーのプライベート DNS ゾーンを作成しメイン仮想ネットワークとの関連付けリンクを作成します。

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 MySQL flexible server 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>

Note

お客様の DNS 設定の FQDN は、構成されたプライベート IP を解決しません。 こちらで示すように、構成された FQDN のための DNS ゾーンを設定する必要があります。

インターネットから VM に接続する

次のように、インターネットから VM myVm に接続します。

  1. ポータルの検索バーに、「myVm」と入力します。

  2. [接続] を選択します。 [接続] ボタンを選択すると、 [Connect to virtual machine](仮想マシンに接続する) が開きます。

  3. [RDP ファイルのダウンロード] を選択します。 リモート デスクトップ プロトコル ( .rdp) ファイルが作成され、お使いのコンピューターにダウンロードされます。

  4. downloaded.rdp ファイルを開きます。

    1. メッセージが表示されたら、 [Connect] を選択します。

. VM の作成時に指定したユーザー名とパスワードを入力します。 > [!注意] >[その他][別のアカウントを使用する] を選択して、VM の作成時に入力した資格情報を指定する必要があります。

  1. [OK] を選択します。

  2. サインイン処理中に証明書の警告が表示される場合があります。 証明書の警告が表示された場合は、[はい] または [続行] を選択します。

  3. VM デスクトップが表示されたら最小化してローカル デスクトップに戻ります。

VM から Azure Database for MySQL フレキシブル サーバー インスタンスにプライベートにアクセスする

  1. myVM のリモート デスクトップで、PowerShell を開きます。

  2. 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
    
  3. 使用可能なクライアントを使用して、Azure Database for MySQL フレキシブル サーバー インスタンスのプライベート リンク接続をテストします。 次の例では、MySQL Workbench を使用して操作を実行します。

  4. [新しい接続] で、この情報を入力または選択します。

    設定
    接続名 ご自身で選んだ接続の名前を選択します。
    hostname mydemoserver.privatelink.mysql.database.azure.com を選択します。
    ユーザー名 Azure Database for MySQL フレキシブル サーバー インスタンスの作成時に指定username@servernameユーザー名を入力します。
    Password Azure Database for MySQL フレキシブル サーバー インスタンスの作成時に指定したパスワードを入力します。
  5. [接続] を選択します。

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

  7. (必要に応じて)Azure Database for MySQL フレキシブル サーバー データベースから情報を作成または照会します。

  8. myVm へのリモート デスクトップ接続を閉じます。

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

不要になったら、リソース グループとそのグループに含まれるすべてのリソースを削除するために使用 az group delete できます。

az group delete --name myResourceGroup --yes

プライベート リンク可能なサブリソースを一覧表示する (groupIds)

az network private-link-resource list --id {PrivateLinkResourceID}  // or -g MyResourceGroup -n MySA --type Microsoft.Storage/storageAccounts

特定のリソースのプライベート エンドポイント接続を一覧表示する

az network private-endpoint-connection list --id {PrivateLinkResourceID}

特定のリソースのプライベート エンドポイント接続を承認する

az network private-endpoint-connection approve --id {PrivateEndpointConnectionID}  --description "Approved!"

特定のリソースのプライベート エンドポイント接続を拒否する

az network private-endpoint-connection reject --id {PrivateEndpointConnectionID}  --description "Rejected!"

特定のリソースのプライベート エンドポイント接続を削除する

az network private-endpoint-connection delete --id {PrivateEndpointConnectionID}

次の手順

  • Azure portal から Azure Database for MySQL フレキシブル サーバー用のプライベート リンクを構成する方法について学習します。
  • Azure Database for MySQL フレキシブル サーバーへの接続を管理する方法について説明します。
  • カスタマー マネージド キーを使用して Azure Database for MySQL フレキシブル サーバーに別の暗号化レイヤーを 追加する方法について説明します
  • Azure Database for MySQL フレキシブル サーバー インスタンスで Microsoft Entra 認証を構成して使用する方法について説明します。