App Service の FTP 転送保護の確認

ファイル転送には FTPS を使い、不要な FTP アクセスは無効にしてください。

説明

site_config.ftps_state = "AllAllowed" は、暗号化されていない FTP も許可します。平文 FTP を使うと、認証情報やファイル内容が転送中に漏えいするおそれがあります。必要な転送は FTPS に限定し、使わない場合は FTP 機能を無効にしてください。

想定される影響

平文通信を観察・改ざんできる攻撃者が、発行用の認証情報やデプロイファイルを狙う可能性があります。

対処方法

site_config.ftps_state を FtpsOnly に設定し、FTP が不要なら Disabled にしてください。クライアントによる TLS とサーバー証明書の検証を確認し、発行用の認証情報を制限・管理してください。別のデプロイ経路でも認証と転送保護を確認してください。

例

AzureRM 3.x の従来の azurerm_app_service を使う例です。現在の Linux・Windows Web App リソースでも FTP の状態を設定できます。

変更前

hcl
resource "azurerm_app_service" "example" {
  name                = "example-app-service"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  app_service_plan_id = azurerm_app_service_plan.example.id

  site_config {
    dotnet_framework_version = "v4.0"
    scm_type                 = "LocalGit"
    ftps_state               = "AllAllowed"
  }
}

変更後

hcl
resource "azurerm_app_service" "example" {
  name                = "example-app-service"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  app_service_plan_id = azurerm_app_service_plan.example.id

  site_config {
    dotnet_framework_version = "v4.0"
    scm_type                 = "LocalGit"
    ftps_state               = "FtpsOnly"
  }
}

変更後は FTPS のみを許可します。これはファイル転送経路の設定であり、Web アプリの HTTPS 専用設定やユーザー認証を代替しません。

参考資料