Azureサービスのリソースログ収集の確認

重要なAzureサービスで必要なリソースログを収集し、集約先へ送信してください。

説明

App Service、Storage Account、Event Hubs、Service Bus、Application Gatewayのリソースログは、サービスの動作やリクエストの調査に役立ちます。必要なログを収集していないと、障害の原因分析やセキュリティ調査が難しくなる場合があります。

対応するカテゴリを診断設定でエクスポートし、サービス固有のロギングの前提条件を確認してください。診断設定がなくても、アプリケーションログや自動収集されるActivity Logまで存在しないとは限りません。

想定される影響

  • サービス障害や異常な動作を分析する資料が不足するおそれがあります。
  • 複数のサービスにまたがる関連イベントを、一元的に結び付けて調査しにくくなる場合があります。

対処方法

  • 重要なサービスごとに、必要なログカテゴリと既存の収集経路を確認してください。
  • azurerm_monitor_diagnostic_settingに対応するログと、Log Analytics、Storage Account、Event Hubsのいずれかの送信先を設定してください。
  • サービス固有の追加ログ設定、保存先の権限と保持期間を確認し、実際のリクエストでログの配信をテストしてください。

例

従来のazurerm_app_service形式を使う抜粋です。参照先リソースは省略しています。使用するAzureRMバージョンに対応したWebアプリのリソース形式を選択してください。

変更前

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
}

この抜粋にはリソースログのエクスポートがありません。既存の別経路で必要なログを収集しているかも確認してください。

変更後

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
}

resource "azurerm_monitor_diagnostic_setting" "example" {
  name               = "app-service-diagnostics"
  target_resource_id = azurerm_app_service.example.id
  storage_account_id = azurerm_storage_account.example.id

  enabled_log {
    category = "AppServiceHTTPLogs"
  }
}

AppServiceHTTPLogsカテゴリの受信HTTPリクエストログをストレージアカウントへ送信します。このカテゴリだけですべての監査・アプリケーションイベントが含まれるわけではありません。

参考資料