しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure App Service の OS が Windows Server 2022 にアップデートされ始めているので確認した

先日の Ignite 2023 では App Service の TLS 1.3 対応が発表されて、一部のリージョンでは既に有効化されていることを以下のエントリで触れましたが、TLS 1.3 対応と同時に App Service の OS が Windows Server 2022 へとアップデートされ始めています。

App Service のマルチテナント版だけではなく、App Service Environment v3 でも TLS 1.3 対応がデプロイされるようです。流石にメンテナンス通知は来ると信じています。

先日の GitHub Universe 2023 と Microsoft Ignite 2023 のキャッチアップイベントでも少し話しましたので、興味があれば以下のアーカイブを参照してください。

6 年振りに App Service の Windows Server がアップデートされるので、Windows Server 2016 へのアップデートが行われた時のエントリを拾ってきました。2016 へのアップデートは HTTP/2 の有効化が目玉と言えますが、今回の 2022 では TLS 1.3 の有効化が目玉だと言えます。

HTTP/2 は明示的に有効化しない限り、自動的に有効にはなりませんでしたが、TLS 1.3 についてはクライアント側が対応していれば自動的に使われるようです。設定としては最低の TLS バージョンしか用意されないので、TLS 1.3 の無効化は出来ないと考えています。

今回のアップデートも完全にインプレースかつ Scale unit 単位で段階的にで実行されるようなので、気が付いたら稼働中の App Service の OS が 2022 になっているはずです。このあたりのアップデートについてはドキュメントが少しだけあるので、興味があれば参照してください。

ちなみに既に Web App for Container (Windows) は Windows Server 2022 にアップデートされていました。しかし Frontend や Web Worker は Windows Server 2016 のままだったので、その部分が今回アップデートされようとしているようです。

App Service の Frontend は Windows / Linux / Container で全て共通なので、今回のアップデートで App Service for Linux などでも TLS 1.3 が自動的に有効になるはずです。Windows を使っていなくても影響のある部分なので少し気を付けたいです。

意外に App Service が使われているサービスは多いので影響範囲は広そうです。Azure Functions や Logic Apps で使われていることは広く知られていると思いますが、API Management の Consumption や Basic v2 / Standard v2 でも App Service が使われているので、自動的に TLS 1.3 が有効化されると考えています。

互換性への影響

インプレースでアップデートされるので、既に App Service で本番環境を運用している場合には互換性が心配だと思いますが、結論から言うとほぼ気にする必要はないと考えています。Windows Server 2019 / 2022 でのアップデート内容は以下のドキュメントで公開されていますが、App Service で使われている機能に対しての大きな変更などはありません。

互換性に一番影響しそうな .NET Framework のバージョンについても、これまで通りの 4.8 となっていましたのでアップデートされたことに気が付かないまま Windows Server 2022 になっていそうです。

但し Windows Server 2022 は .NET Framework 4.8.1 のインストールに対応しているため、将来的に .NET Framework 4.8.1 にアップデートされる可能性はあると考えています。とはいえ互換性に影響しそうなアップデートはないので、ほぼ気にする必要はなさそうです。

正直なところ一番互換性に影響しそうなのは、TLS 1.3 が自動的に有効化される点でしょう。通常の環境ではまず影響しないはずですが、謎のプロキシがある場合には TLS 1.3 が通らないというケースもありそうです。

以下は Free プランで動かしている App Service ですが、TLS 1.3 が有効化されていることを確認しました。

何も設定をしていなくても、App Service の Frontend がアップデートされたタイミングで TLS 1.3 が有効になるのは、頭の片隅にでも入れておいた方が良さそうです。

クライアント証明書を有効化している場合、TLS 1.3 では利用できない機能があるらしく TLS 1.2 になるという話が公式ブログで紹介されていました。利用している場合には早めに検証しておいた方が良さそうです。

現在の Windows Server バージョンを確認

最後に App Service の Windows Server バージョンを確認する方法を何種類か紹介しておきます。一番簡単な方法は Azure Portal の Console から ver コマンドを実行する方法です。

定番の方法としては Kudu の Environment にある System info から OS Version を確認するというものもあります。この表示は C# の Environment.OSVersion を使っているので若干大雑把な表示です。

最後は Kudu が提供する Runtime API を利用する方法です。呼び出すと以下のように OS バージョンが細かいレベルまで返ってきますが、何故か OS 名は Windows Server 2016 のままになるので、ビルド番号を確認するのが正確な方法になります。

6 年振りの Windows Server バージョンのアップデートなので経験したことが無い方も多いと思いますが、基本は内部のテスト用環境から段階的にロールアウトされていくので、OS バージョンに依存した処理を書いていない限りは問題ないので安心してください。

日本リージョンにデプロイされるのは恐らく来年になると思うので、年内は US リージョンでテストされて問題があらかた潰れたタイミングでアップデートされることになるでしょう。