App Service のクライアント証明書要求設定の確認

証明書による呼び出し元の認証が必要なパスで、適切に要求と検証を行ってください。

説明

クライアント証明書は、内部 API や B2B 連携の呼び出し元認証に使えます。すべてのアプリに必須ではありませんが、要求する設計のサービスで証明書を求めなかったり検証しなかったりすると、意図した保護が欠けます。App Service が転送する証明書の有効性と信頼性はアプリで検証する必要があります。

想定される影響

証明書の要求や信頼性の検証が不十分だと、信頼された証明書で制限する予定の機能に、呼び出し元がアクセスできるおそれがあります。

対処方法

必要なアプリでクライアント証明書を有効にし、HTTPS と Required モードを使ってください。除外パスを確認し、アプリで証明書チェーン、有効期間、許可する ID を検証してください。HTTP/2 や TLS 1.3 では、TLS 再ネゴシエーションが必要なモードや除外パスを使わない構成にしてください。

例

AzureRM 3.x の従来の azurerm_app_service の例です。現在のリソースでは client_certificate_enabled と client_certificate_mode を使い、証明書検証コードは別途用意します。

変更前

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

  client_cert_enabled = true
}

変更後はクライアント証明書を有効にします。この設定だけで発行元や呼び出し権限まで検証されるわけではありません。

参考資料