Azure Functions Flex ConsumptionのTLS/SSL証明書対応を解説|変更点と移行時の注意点

Azure FunctionsのFlex Consumptionで独自ドメインや証明書まわりを運用している場合、今回のポイントは「TLS/SSL証明書をFlex Consumptionでも扱えるようになったが、証明書はアプリ単位で管理する」という点です。従来のApp Service系ホスティングプランで使われてきたWebspaceスコープの共有モデルとは異なり、Flex ConsumptionではFunction Appごとに証明書を持つため、移行時は証明書の再追加、コードからの読み込み方法、IaCテンプレートの見直しが必要になります。なお、この機能はPublic Previewであり、本番利用前には制限事項とサポート状況を必ず確認してください。MicrosoftのAzure Updatesでも、Azure Functions向けの「Public Preview: TLS/SSL certificate support for Azure Functions Flex Consumption」として案内されています。(Microsoft Azure)

目次

Azure Functions Flex ConsumptionのTLS/SSL証明書対応で何が変わるのか

今回の更新により、Azure FunctionsのFlex Consumptionプランで、TLS/SSL証明書を扱うための「site-scoped certificates」がPublic Previewとして利用できるようになりました。Microsoft Learnでは、Flex Consumptionの証明書は個々のFunction Appにスコープされ、同じWebspace内の複数アプリで共有される従来モデルとは異なると説明されています。(Microsoft Learn)

一番大きな変更点は、証明書の管理単位です。

項目Flex ConsumptionPremium / Dedicated / 従来のConsumptionなど
証明書モデルsite-scopedwebspace-scoped
証明書のスコープFunction App単位同一リージョン、同一リソースグループ内のWebspace単位
コードからのアクセス証明書ごとの明示的な切り替えWEBSITE_LOAD_CERTIFICATESを使う方式
移行時の扱い新しいFlex Consumptionアプリに再追加が必要既存モデルに依存
プレビュー状況Previewプランにより既存対応

これまでの感覚で「同じリソースグループにあるから証明書を共有できる」と考えると、Flex Consumptionではつまずきます。Flex Consumptionでは、Function Appごとに証明書を追加・バインド・コードアクセス設定する前提で設計し直す必要があります。

対象になる管理者・開発者

今回の変更で特に確認が必要なのは、次のようなチームです。

  • Azure FunctionsをFlex Consumptionへ移行しようとしている
  • 独自ドメインでHTTPS公開しているHTTPトリガーFunctionがある
  • 外部API接続でクライアント証明書を使っている
  • 証明書をKey Vaultで管理している
  • Terraform、Bicep、ARMテンプレートなどでFunction Appを自動展開している
  • WEBSITE_LOAD_CERTIFICATESやWindows証明書ストア前提のコードを書いている

単に「HTTPSでアクセスできればよい」ケースでは、App Service Managed Certificateを使えば運用負荷を抑えられる可能性があります。一方、外部システムとのmTLS、証明書ベースのAPI認証、社内CAの証明書、複数証明書の使い分けがある場合は、プレビュー段階の制限を含めて慎重に検証すべきです。

サポートされる証明書タイプ

Flex Consumptionのsite-scoped certificatesでは、複数の証明書タイプがサポートされています。Microsoft Learnでは、App Service Managed Certificate、App Service Certificate、Key Vaultからのインポート、PFXアップロード、CERアップロードが整理されています。(Microsoft Learn)

証明書タイプ主な用途確認ポイント
App Service Managed Certificate独自ドメインのHTTPS化を低コストで行うAzureポータルで作成・バインド。発行まで時間がかかる場合がある
App Service CertificateAzure上で購入・管理する証明書を使うKey Vault連携や更新運用を確認する
Key Vaultからのインポート既存の証明書管理基盤を使うマネージドIDとRBAC、Key Vaultのネットワーク制限を確認する
PFXアップロード外部CAや社内CAの秘密鍵付き証明書を使うパスワード付きPFX、証明書チェーンの同梱が必要
CERアップロード公開証明書をコードから参照する秘密鍵を含まない用途に限定する

App Service Managed Certificateは、独自ドメインのHTTPS化には便利です。ただし、すべての証明書要件を満たす万能な選択肢ではありません。ワイルドカード証明書、社内CA、クライアント証明書認証などが絡む場合は、PFXやKey Vault管理の証明書を検討します。

Flex Consumptionで必ず確認すべき制限事項

Public Previewの段階では、利用前に押さえるべき制限があります。Microsoft Learnでは、Flex Consumptionのsite-scoped certificatesについて、既存アプリに対する証明書の移行パスが現時点でないこと、Azure CLIによる証明書管理がまだ利用できないこと、アプリごとに秘密証明書3件・公開証明書3件までであること、E2E暗号化が未サポートであることなどが示されています。(Microsoft Learn)

確認項目内容実務上の影響
プレビュー機能site-scoped certificatesはPublic Preview本番適用前にSLA、サポート、社内基準を確認する
既存アプリの移行機能公開前に作成済みのアプリには証明書移行パスがない必要に応じて新しいFlex Consumption Function Appを作成する
Azure CLIsite-scoped certificatesの管理はCLI未対応AzureポータルまたはARM/Bicepで管理する
証明書数秘密証明書3件、公開証明書3件まで複数ドメイン・複数外部API利用時は設計を見直す
E2E暗号化現時点では未サポートコンプライアンス要件がある場合は代替構成を検討する
実行環境Flex ConsumptionはLinuxで動作Windows証明書ストア前提のコードは修正が必要

特に見落としやすいのは、証明書数の上限です。開発・検証・本番で同じアプリに複数の接続先証明書を載せる構成にしていると、上限に達しやすくなります。環境ごとにFunction Appを分ける、証明書を統合できるか確認する、不要な証明書を棚卸しする、といった事前整理が必要です。

既存のAzure Functionsから移行する前の確認ポイント

Flex Consumptionへ移行する場合は、コードだけでなく証明書利用の棚卸しが必要です。Microsoft Learnの移行ガイドでは、既存アプリでTLS/SSL証明書を利用している場合、新しいFlex Consumptionアプリへ移行後に証明書を再追加する必要があると説明されています。(Microsoft Learn)

まず、現在のリソースグループで利用可能な証明書を確認します。

az webapp config ssl list --resource-group <RESOURCE_GROUP>

このコマンドで結果が返る場合、そのFunction Appまたは同一Webspace内で利用している証明書がある可能性があります。移行計画では、証明書を「存在するか」だけでなく、次の観点で確認します。

確認するもの具体的な見方
証明書の用途独自ドメイン用か、外部サービス接続用か、社内認証用か
証明書形式PFXかCERか、Key Vault管理か
証明書の参照方法サムプリント参照、ファイルパス参照、環境変数参照のどれか
更新方法自動更新か、手動アップロードか、Key Vault更新か
証明書数Flex Consumptionの上限に収まるか
コードの前提Windows証明書ストアを参照していないか

WEBSITE_LOAD_CERTIFICATESを使っているアプリは注意が必要です。Flex Consumptionではこの設定ではなく、証明書ごとに「Accessible to app code」を有効化する方式になります。(Microsoft Learn)

証明書をコードから使う場合の変更点

Flex ConsumptionではLinux環境で動作するため、コードから証明書を読む場合はWindows証明書ストアではなく、ファイルパスから読み込む必要があります。公開証明書は/var/ssl/certs、秘密証明書は/var/ssl/privateに配置され、証明書ファイル名はサムプリントベースになります。(Microsoft Learn)

たとえば、外部APIにクライアント証明書付きで接続している場合、移行前に次のようなコードを探します。

  • Windows証明書ストアを参照しているコード
  • WEBSITE_LOAD_CERTIFICATESに依存している設定
  • サムプリントを固定値で参照しているコード
  • 証明書ファイルの配置場所をアプリ内パスで決め打ちしているコード
  • 証明書更新時にサムプリントが変わることを考慮していないコード

証明書を追加しただけでは、必ずしもFunctionコードから参照できるとは限りません。Azureポータルで対象証明書に対して「Make accessible to app code」を有効にし、実行環境へファイルとしてロードされる状態にする必要があります。(Microsoft Learn)

App Service Managed Certificateで独自ドメインをHTTPS化する手順

独自ドメインのHTTPS化が目的であれば、App Service Managed Certificateを使うのが分かりやすい選択肢です。Microsoft Learnでは、Azureポータルからカスタムドメインを追加し、TLS/SSL certificateでApp Service Managed Certificate、TLS/SSL typeでSNI SSLを選択する流れが案内されています。(Microsoft Learn)

手順操作
1Azureポータルで対象のFunction Appを開く
2SettingsからCustom domainsを開く
3Add custom domainを選択する
4TLS/SSL certificateでApp Service Managed Certificateを選ぶ
5TLS/SSL typeでSNI SSLを選ぶ
6ドメイン検証を完了してAddを実行する
7発行・バインド後にHTTPSアクセスを確認する

証明書の発行には最大で10分程度かかる場合があります。(Microsoft Learn) DNS検証が正しく終わっていない、CNAMEやTXTレコードの反映が遅れている、既存の証明書バインドと競合している、といった理由で失敗することがあるため、切り替え作業はアクセスが少ない時間帯に実施すると安全です。

PFX証明書をアップロードする場合の注意点

外部CAや社内CAで発行した秘密鍵付き証明書を使う場合は、PFX形式でアップロードします。Microsoft Learnでは、秘密証明書はパスワード付きPFXとしてエクスポートし、中間証明書とルート証明書を含める必要があると説明されています。(Microsoft Learn)

実務では、次のような失敗が起きやすいです。

よくある失敗原因対策
証明書の検証に失敗する中間証明書がPFXに含まれていないフルチェーンでエクスポートする
アプリから証明書が読めないAccessible to app codeを有効化していない証明書追加後に明示的に有効化する
更新後に接続エラーになるサムプリントが変わったのに設定を更新していないサムプリント参照箇所を棚卸しする
デプロイで再現できない手動アップロードに依存しているARM/Bicep管理を検討する
上限に達するテスト用証明書を残したままにしている不要な証明書を削除し、証明書数を管理する

PFXのパスワードやBase64化した証明書データをリポジトリに直書きするのは避けるべきです。CI/CDで扱う場合は、Key Vaultや安全なシークレット管理機能を使い、権限を最小限にします。

Key Vaultから証明書をインポートする場合の確認ポイント

証明書をKey Vaultで管理している場合、Flex ConsumptionのFunction AppにマネージドIDを付与し、Key Vault側で必要な権限を与えます。Microsoft Learnでは、サービスプリンシパルよりもマネージドIDを使ってKey Vaultへ認証する方法が推奨されています。(Microsoft Learn)

確認すべきポイントは次の通りです。

項目確認内容
マネージドIDFunction Appのシステム割り当てIDまたはユーザー割り当てIDを使うか
RBACKey Vault Certificate Userロールなど、必要最小限の権限を付与しているか
ネットワーク制限Key Vaultのパブリックアクセス無効化やファイアウォール設定でAzure Functionsプラットフォームからアクセスできるか
更新反映Key Vault側の証明書更新がFunction Appへ反映されるまでの時間を考慮しているか
監査誰が証明書を更新・参照できるかログで追えるか

Key Vault内の証明書を更新した場合、プラットフォームのバックグラウンドジョブにより、更新後の証明書はFunction Appへ24時間以内に同期されるとされています。(Microsoft Learn) 即時反映が必要な切り替えでは、同期タイミングを前提にした運用計画を立ててください。

ARM/Bicepで展開している場合の変更点

IaCでAzure Functionsを展開している場合、Flex Consumptionのsite-scoped certificatesをテンプレートに反映する必要があります。Microsoft Learnでは、Function AppのpropertiessiteScopedCertificatesEnabledtrueとして設定し、証明書をMicrosoft.Web/sites/certificatesの子リソースとして追加する構成が示されています。(Microsoft Learn)

Bicepの考え方は次のようになります。

resource functionApp 'Microsoft.Web/sites@2024-11-01' = {
  name: functionAppName
  location: location
  kind: 'functionapp,linux'
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    serverFarmId: serverFarmResourceId
    siteScopedCertificatesEnabled: true
    functionAppConfig: {
      // Flex Consumption向けのFunction App設定
    }
  }
}

resource certificate 'Microsoft.Web/sites/certificates@2024-11-01' = {
  parent: functionApp
  name: 'my-certificate'
  location: location
  properties: {
    password: pfxPassword
    pfxBlob: pfxBlobBase64
  }
}

既存のMicrosoft.Web/certificatesリソースをそのまま使い回す設計では、Flex Consumptionのsite-scoped modelと合いません。テンプレートのリソースタイプ、親子関係、証明書シークレットの扱い、デプロイ順序を見直します。

また、現時点ではAzure CLIによるsite-scoped certificatesの管理が未対応とされているため、CLI前提の運用スクリプトはそのまま移行できない可能性があります。(Microsoft Learn) 自動化が必要な環境では、ARM/Bicepを中心に構成するのが現実的です。

Flex Consumptionへ移行する場合の安全な進め方

Flex Consumptionでは、既存Function Appをインプレースで別プランへ移行する方式ではなく、新しいFlex Consumption Function Appを作成してコードを再デプロイする考え方になります。Microsoft Learnでも、別ホスティングプランからFlex Consumptionへの既存Function Appのインプレース移行はサポートされず、Flex Consumptionへ移るには新しいFunction Appを作成してコードを再デプロイする必要があると説明されています。(Microsoft Learn)

移行は、次の順序で進めると失敗を減らせます。

フェーズ作業内容判断基準
棚卸し証明書、独自ドメイン、トリガー、アプリ設定を確認現行構成を再現できるか
互換性確認リージョン、ランタイム、デプロイスロット、証明書数を確認Flex Consumptionの制限に収まるか
新規作成Flex Consumption Function Appを作成site-scoped certificatesを有効化する
証明書追加Managed Certificate、PFX、Key Vaultなどを設定バインドとコードアクセスを確認する
コード修正証明書読み込みパス、サムプリント、環境変数を修正Linux環境で動作するか
検証HTTPS、外部API接続、証明書更新、スケール時の挙動を確認単一インスタンスだけでなく複数インスタンスで確認する
切り替えDNSやルーティングを変更ロールバック手順を用意する
監視Application Insightsやメトリックを確認失敗率、応答時間、証明書関連エラーを追う

特にHTTPトリガーで独自ドメインを公開している場合、証明書だけでなくDNS、カスタムドメイン検証、API利用者側のキャッシュ、外部監視サービスの設定も一緒に確認します。

本番適用前に見るべきチェックリスト

Public Preview段階の機能を使う場合、技術的に動くことと、運用に耐えることは別です。次のチェックリストを使って、本番適用の可否を判断してください。

チェック項目確認
Public Previewであることを社内基準上許容できる
証明書数が秘密3件・公開3件の上限に収まる
既存アプリを新規Flex Consumptionアプリへ再構築できる
WEBSITE_LOAD_CERTIFICATES依存がない、または修正済み
Windows証明書ストア依存のコードを修正済み
PFX証明書に中間証明書・ルート証明書チェーンを含めている
Key Vault連携でマネージドIDとRBACを確認済み
CLI未対応部分をARM/Bicepまたはポータル運用で補える
証明書更新時の手順と監視を決めている
E2E暗号化未サポートが要件に抵触しない
DNS切り替えとロールバック手順がある

このチェックで複数の未確認項目が残る場合は、いきなり本番Functionを移すのではなく、検証用のFunction Appを作って証明書ライフサイクルを一通り試すのが安全です。

よくある疑問

Flex Consumptionで独自ドメインのHTTPS化はできるのか

Public Previewのsite-scoped certificatesにより、Flex Consumptionでも独自ドメイン向けのTLS/SSL証明書を扱えるようになっています。App Service Managed Certificateを使う場合は、Azureポータルからカスタムドメイン追加時に証明書を作成・バインドできます。(Microsoft Learn)

既存の証明書は自動で引き継がれるのか

自動では引き継がれません。Flex Consumptionでは証明書がFunction App単位になるため、移行先の新しいFunction Appに証明書を再追加する必要があります。既存アプリで証明書を使っている場合、移行前に一覧化しておきましょう。(Microsoft Learn)

WEBSITE_LOAD_CERTIFICATESは使えるのか

Flex Consumptionでは、従来のWEBSITE_LOAD_CERTIFICATESではなく、証明書ごとに「Accessible to app code」を有効化する方式になります。証明書をコードから使う場合は、ファイルパスから読み込む実装に変える必要があります。(Microsoft Learn)

Azure CLIだけで証明書を管理できるのか

現時点では、Flex Consumptionのsite-scoped certificatesの管理にAzure CLIはまだ対応していないとされています。管理はAzureポータルまたはARM/Bicepテンプレートを使う前提で考える必要があります。(Microsoft Learn)

Key Vaultで更新した証明書はすぐ反映されるのか

Key Vault内の証明書を更新すると、プラットフォームのバックグラウンドジョブによってFunction Appへ24時間以内に同期されるとされています。即時反映を前提にした運用は避け、更新スケジュールと確認手順を用意してください。(Microsoft Learn)

まずやるべきこと

今回のAzure Functions Flex ConsumptionのTLS/SSL証明書対応は、Flex Consumptionを独自ドメインや証明書認証が必要な用途に広げる重要な更新です。ただし、Public Previewであり、証明書モデルも従来と異なります。

まずは既存Function Appで次の3点を確認してください。

  • 独自ドメイン用、外部接続用、コード参照用の証明書があるか
  • 証明書数、形式、更新方法がFlex Consumptionの制限に収まるか
  • コードがWEBSITE_LOAD_CERTIFICATESやWindows証明書ストアに依存していないか

そのうえで、検証用のFlex Consumption Function Appを新規作成し、証明書追加、ドメインバインド、コードからの読み込み、証明書更新、スケール時の動作を確認します。証明書は障害時の影響が大きいため、「デプロイできた」だけで終わらせず、期限切れ、更新、ロールバックまで含めて運用設計に落とし込むことが重要です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次