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 Consumption | Premium / Dedicated / 従来のConsumptionなど |
|---|---|---|
| 証明書モデル | site-scoped | webspace-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 Certificate | Azure上で購入・管理する証明書を使う | 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 CLI | site-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)
| 手順 | 操作 |
|---|---|
| 1 | Azureポータルで対象のFunction Appを開く |
| 2 | SettingsからCustom domainsを開く |
| 3 | Add custom domainを選択する |
| 4 | TLS/SSL certificateでApp Service Managed Certificateを選ぶ |
| 5 | TLS/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)
確認すべきポイントは次の通りです。
| 項目 | 確認内容 |
|---|---|
| マネージドID | Function Appのシステム割り当てIDまたはユーザー割り当てIDを使うか |
| RBAC | Key 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のpropertiesにsiteScopedCertificatesEnabledをtrueとして設定し、証明書を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を新規作成し、証明書追加、ドメインバインド、コードからの読み込み、証明書更新、スケール時の動作を確認します。証明書は障害時の影響が大きいため、「デプロイできた」だけで終わらせず、期限切れ、更新、ロールバックまで含めて運用設計に落とし込むことが重要です。

コメント