FIXER cloud.config Tech Blog
Azure Private Linkを使ってSQLフェールオーバーグループに接続する
2020年08月20日 11時00分更新
こんにちは。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ゾーンが必要なので今回はデフォルトのまま画面の指示に従い新規作成します。
続いてフェールオーバーでプライマリからセカンダリに切り替わっても接続できるように西日本のSQL ServerにもAzure Private Linkを設定します。
ただし、今回はプライベートDNSゾーンの設定の際に新規作成ではなく、先に作成した東日本のSQL Serverで利用しているプライベートDNSに追加するように指定します。
ここまでの作業が完了すればVMからプライマリ、セカンダリのSQL Databaseへの接続が可能になります。
最後に
以上でAzure Private Linkを使ってSQLフェールオーバーグループに接続することができました。
SQL DatabaseなどのPaaSサービスへのトラフィックをプライベートのネットワークに閉じ込めることができるので、よりセキュアにPaaSサービスを利用する場合には便利なサービスです。
神田 仁/FIXER
cloud.config Division所属
Azureを用いたインフラ構築を行っています。構築のノウハウやTerraformを用いた効率化の方法などを紹介していけたらいいな。