このページの本文へ

FIXER cloud.config Tech Blog

Azure Private Linkを使ってSQLフェールオーバーグループに接続する

2020年08月20日 11時00分更新

文● 神田 仁/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 こんにちは。cloud.config Divの神田です。

 今回はAzure上のVirtual MachineからAzure Private Linkを使ってAzure SQL Databaseのフェールオーバーグループに接続します。

Azure Private Linkについて

 Azure Private Linkとは、仮想ネットワーク内に立てることができないAzureのPaaSサービス(SQL Database、Storage Accountなど)へのアクセスをプライベートエンドポイントを経由させることでトラフィックを外部にさらさずセキュアにアクセスできるようにするサービスです。

 似たようなサービスにサービスエンドポイントがありますが、接続先がPaaSサービスのプライベートIPかパブリックIPか、設定したサブネットにピアリングしている他の仮想ネットワークやオンプレ環境からもPaaSサービスにアクセスできるか否か、といった違いがあります。

参考 : Azure Private Link とは
https://docs.microsoft.com/ja-jp/azure/private-link/private-link-overview

参考 : Azure プライベート エンドポイントとは
https://docs.microsoft.com/ja-jp/azure/private-link/private-endpoint-overview

今回の目標

 今回は下記の画像の構成を作成し、パブリックIPを持つ踏み台のVM経由でパブリックIPを持たないVMにRDPでアクセスしこちらからSQL ServerのフェールオーバーグループにAzure Private Linkを用いてアクセスします。

 なお、今回作成するリソースは、セカンダリのSQL Serverに、Databaseは西日本リージョンに、それ以外は東日本リージョンにデプロイしています。

 また、この記事ではVM、SQL Server、SQL Database、フェールオーバーグループの作成は省略します。

構成図

Azure Private Linkを使わずにアクセスしてみる

 まずはパブリックIPを持たないVMからフェールオーバーグループにアクセスしてみます。

 ここでは、VMとプライマリのSQL Databaseは共に東日本リージョンにデプロイされています。また、アクセスにはSQL Server Management Studioを使用しています。

 アクセスしてみると”40914″のエラーコードが返されました。

 このエラーについてはMicrosoftのドキュメントで紹介されており、AzureポータルでSQL Serverの[ファイアウォールと仮想ネットワーク]からアクセス元の仮想ネットワークを許可すれば接続可能になるとのことです。

参考 : エラー 40914
https://docs.microsoft.com/ja-jp/azure/azure-sql/database/vnet-service-endpoint-rule-overview#error-40914

同一リージョンの場合のエラー

 ちなみにフェールオーバーを実行し接続先をセカンダリのSQL Database(西日本)に変えたところ別のエラーが返されました。

 どうも異なるリージョンに接続する際にはパブリックIPがないVMにはパブリックIPが割り振られてアクセスするようです。

 ただし、ファイアウォールで明示的に許可しないと弾かれます。

別リージョンでのエラー

Azure Private Linkを設定する

 まずは東日本のSQL ServerにAzure Private Linkを設定します。

 [リソースの種類]で[Microsoft.Sql/servers]、[リソース]で接続先のSQL Server、[対象サブリソース]で[sqlServers]を選択します。

対象のリソースを指定

 Azure Private LinkではプライベートDNSゾーンが必要なので今回はデフォルトのまま画面の指示に従い新規作成します。

プライベートDNSゾーンの作成(プライマリ)

 続いてフェールオーバーでプライマリからセカンダリに切り替わっても接続できるように西日本のSQL ServerにもAzure Private Linkを設定します。

 ただし、今回はプライベートDNSゾーンの設定の際に新規作成ではなく、先に作成した東日本のSQL Serverで利用しているプライベートDNSに追加するように指定します。

プライベートDNSゾーンの設定(セカンダリ)

 ここまでの作業が完了すればVMからプライマリ、セカンダリのSQL Databaseへの接続が可能になります。

接続に成功した

最後に

 以上でAzure Private Linkを使ってSQLフェールオーバーグループに接続することができました。

 SQL DatabaseなどのPaaSサービスへのトラフィックをプライベートのネットワークに閉じ込めることができるので、よりセキュアにPaaSサービスを利用する場合には便利なサービスです。

 神田 仁/FIXER

 cloud.config Division所属
 Azureを用いたインフラ構築を行っています。構築のノウハウやTerraformを用いた効率化の方法などを紹介していけたらいいな。

[転載元]
 Azure Private Linkを使ってSQLフェールオーバーグループに接続する

カテゴリートップへ