旧 Azure MySQL Server のパブリックネットワークアクセスの確認

MySQL の接続経路とファイアウォールを制限し、サポートされるサービスへ移行してください。

説明

Azure MySQL Server でパブリックネットワークアクセスを有効にし、ファイアウォールも広く許可すると、不要な外部からの接続試行が可能になるおそれがあります。ネットワークの到達性とデータベースの認証・権限は、別々に管理する必要があります。

azurerm_mysql_server は、2024 年 9 月 16 日に廃止された Azure Database for MySQL Single Server の旧リソースです。Flexible Server への移行時に、現在のサービスのネットワーク設定を確認する必要があります。

想定される影響

  • 未承認の外部送信元から、接続やログインを試みられる可能性があります。
  • 廃止されたサービスの構成に依存し続けると、セキュリティの維持や運用上の復旧が難しくなるおそれがあります。

対処方法

サポートされる MySQL Flexible Server への移行時は、必要なプライベート経路と DNS を構成・試験してから不要なパブリックアクセスを無効にしてください。パブリック接続が必要な場合は、実際のクライアントアドレスだけをファイアウォールで許可してください。旧 Single Server の構成を保守する場合は、public_network_access_enabled=false の影響と接続経路を確認してください。認証とデータ権限も別途制限してください。

例

ネットワークオプションを示す旧 Single Server の抜粋です。SKU やバージョンなど、他の必須設定は省略しています。現在の新規デプロイ例として使用せず、例のパスワードも本番で使用しないでください。

変更前

hcl
resource "azurerm_mysql_server" "app_db" {
  name                = "example-mysqlserver"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name

  administrator_login          = "mysqladminun"
  administrator_login_password = "H@Sh1CoR3!"
}

旧サーバーのパブリックネットワークアクセスを明示的に無効にしていない構成です。

変更後

hcl
resource "azurerm_mysql_server" "app_db" {
  name                         = "example-mysqlserver"
  location                     = azurerm_resource_group.example.location
  resource_group_name          = azurerm_resource_group.example.name
  administrator_login          = "mysqladminun"
  administrator_login_password = "H@Sh1CoR3!"
  public_network_access_enabled = false
}

旧サーバーで public_network_access_enabled を false にします。現在のデプロイでは、Flexible Server がサポートするネットワークオプションと移行手順を使用してください。

参考資料