Azureのデータベースサービスである Azure Database for MySQLフレキシブルサーバーを触る機会があり、その際にローカル環境から接続する方法について調べる(悩む)ことがありました。いくつかパターンが考えられるので挙げていきます。
仕事でAzure Database for MySQL フレキシブルサーバーやAzure Database for PostgreSQL フレキシブルサーバーへオンプレ(ローカル)環境から接続したいときの参考にしてください。
グローバルIPで接続
オンプレで使用しているグローバルIPをDB側で許可して接続する方式です。一番シンプルな接続方法になります。公式ドキュメント では、パブリックアクセスという方式になります。
しかし、この方式ではアクセス元を絞り切れていないこと、Azure側にファイアウォールが無いこと、間に通信を監視するサービスが無い点が運用上の懸念点として挙げられます。
対策として、DBの認証方法をMicrosoft Entra IDをもつユーザーに制限するとか、監査ログを採取しておき、インシデント発生時のログを残しておくことが挙げられるでしょう。
VPNとVNET統合使用
VNET内にDB専用のサブネット(委任されたサブネット)を配置し、サーバー名(XXXXXX.database.azure.com)を接続URLとして使用する方法になります。
DBに割り振られるローカルIPは常に同じ(静的)とは限りません。
注意しなければならない点は、もし別のVNETから接続しようとしたとき、VNETのIPレンジが被っているなどしてピアリングできない状態だと接続ができません。 DB作成後に後述するプライベートエンドポイントを作成できないこと、パブリックエンドポイントが無いのことがないことも注意点として挙げられます。
VPNとプライベートエンドポイント使用
ローカルIPに別エイリアス (CNAME)を付与する
パブリックDNSにフレキシブルサーバーに使用するローカルIPにエイリアスを付与します。 VPNをつないだローカルPCでIPを解決できるようになるので接続できます。
所感
閉域への接続めんどくさい。Basisionサーバーとか立てて、そこで作業するとか、うまくローカルへ作業することが無いようにつくりたい。
参考文献
ネットワークの概要 - Azure Database for MySQL - Flexible Server | Microsoft Learn オンプレミス から PaaS へのプライベート接続を試す! Azure Private Endpoint のための DNS 構成パターン #Azure - Qiita VNet統合、プライベートエンドポイント、サービスエンドポイントについて(App Service、Azure Database)