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

必要なデータベース接続経路を確認し、不要な公開アクセスを制限してください。

説明

Azure MSSQL Server でパブリックネットワークアクセスを有効にすると、パブリックエンドポイント経由のデータベース接続経路を利用できます。ファイアウォールも広く許可している場合、不要な外部からの接続試行が可能になるおそれがあります。

パブリックエンドポイントが有効でも、誰でもデータベースを読めるわけではありません。ファイアウォール、認証、データベース権限が適用されます。

想定される影響

  • アクセスが不要な外部クライアントから、接続やログインを試みられる可能性があります。
  • 漏えいした資格情報や誤った権限設定が悪用された場合に、ネットワーク制限による保護が弱まるおそれがあります。

対処方法

プライベート接続だけが必要な場合は、プライベートエンドポイント、DNS、クライアントの経路を構成・試験してから public_network_access_enabled を false に設定してください。パブリック接続が必要な場合は、ファイアウォールの許可範囲を実際に必要なクライアントに制限してください。強い認証と最小限のデータ権限を適用し、変更後のアプリケーション接続を確認してください。

例

同じ SQL サーバーのネットワーク設定を変更する抜粋です。プライベートエンドポイントと DNS は省略しています。公開された例のパスワードを本番で使わず、保護された入力として管理してください。

変更前

hcl
resource "azurerm_mssql_server" "app_db" {
  name                         = "mssqlserver"
  resource_group_name          = azurerm_resource_group.example.name
  location                     = azurerm_resource_group.example.location
  version                      = "12.0"
  administrator_login          = "mradministrator"
  administrator_login_password = "thisIsDog11"
}

パブリックネットワークアクセスを明示的に無効にしていません。実際に許可される送信元は、サーバーのファイアウォールルールで確認してください。

変更後

hcl
resource "azurerm_mssql_server" "app_db" {
  name                         = "mssqlserver"
  resource_group_name          = azurerm_resource_group.example.name
  location                     = azurerm_resource_group.example.location
  version                      = "12.0"
  administrator_login          = "mradministrator"
  administrator_login_password = "thisIsDog11"
  public_network_access_enabled = false
}

パブリックネットワークアクセスを無効にします。アプリケーションが、準備したプライベート経路で接続できる必要があります。

参考資料