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