Azure Storage アカウントの TLS 1.2 未満の使用状況を確認してみた

2023.11.05

いわさです。

AWS での TLS 1.2 対応が終わって落ち着いているみなさま。Microsoft Azure も対応済みですか。
先日 Azure Storage の最低 TLS バージョンが 1.2 になるというアナウンスがありました。

2024 年 11 月 1 日 に既存および新規の Azure Storage アカウントの最小 TLS バージョンが 1.2 からとなり、その時点で TLS 1.0 や TLS 1.1 を使っているクライアントからのアクセスに失敗するようになります。

私も Azure Storage アカウントいくつか使っているのですよ。これは確認せねば。

自分の Azure Storage の最低 TLS バージョン設定状況を確認してみた

過去に Azure と AWS のストレージ連携を行う記事を紹介したことがあります。この時には最低 TLS バージョンを意識してませんでしたね。

そこでまずは Azure Storage の最低 TLS バージョンの設定が現在どうなっているのかを確認してみることにしました。

Azure の最低 TLS バージョンの確認および設定方法は非常に簡単です。
Azure ポータルの以下で確認出来ます。

私が使用している Azure Storage のアカウントは全て最低 TLS バージョンが 1.2 でした。
正直言うとあまり意識していなかったのですが、既に TLS 1.2 未満ではアクセス出来ないようになっているようです。

確認のために TLS 1.1 を使ってオブジェクトを取得てみました。

# TLS 1.2
% curl https://iwasaazurecost.blob.core.windows.net/export/hoge.txt              
aaaa

# TLS 1.1
% curl --tls-max 1.1 https://iwasaazurecost.blob.core.windows.net/export/hoge.txt
<?xml version="1.0" encoding="utf-8"?><Error><Code>TlsVersionNotPermitted</Code><Message>The TLS version of the connection is not permitted on this storage account.
RequestId:0786fdde-501e-0000-378d-0fd6c0000000
Time:2023-11-05T02:12:16.3221139Z</Message></Error>

このように、TLS 1.1 の場合はアクセスが出来ない状態でした。

現状利用にあたってアクセス出来ない状態は発生してないので、つまり私が利用している範囲については冒頭のアナウンスで通知されている 2024 年 11 月 1 日の強制切り替え時には特に影響は受けないということですね。良かったです。

最低 TLS バージョン 1.2 未満の設定が可能

Azure ストレージアカウントでササッと設定出来るのは非常に楽ですね。
ストレージアカウントの構成メニューから設定が可能で、本日時点では TLS 1.0 から設定が可能です。

試しに最低 TLS バージョンを 1.1 に変更したときのアクセス結果を確認してみました。

# TLS 1.2
% curl https://iwasaazurecost.blob.core.windows.net/export/hoge.txt              
aaaa

# TLS 1.1
% curl --tls-max 1.1 https://iwasaazurecost.blob.core.windows.net/export/hoge.txt
aaaa

# TLS 1.0
% curl --tls-max 1.0 https://iwasaazurecost.blob.core.windows.net/export/hoge.txt -i
HTTP/1.1 400 The TLS version of the connection is not permitted on this storage account.
Content-Length: 266
Content-Type: application/xml
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: e2af5bc0-101e-0007-518d-0f2045000000
Date: Sun, 05 Nov 2023 02:14:43 GMT
Connection: close

<?xml version="1.0" encoding="utf-8"?><Error><Code>TlsVersionNotPermitted</Code><Message>The TLS version of the connection is not permitted on this storage account.
RequestId:e2af5bc0-101e-0007-518d-0f2045000000
Time:2023-11-05T02:14:43.8486147Z</Message></Error>

今度は TLS 1.1 でアクセス出来るようになりましたね。
この設定の場合は、TLS 1.1 が許可されているので 2024 年 11 月 1 日に突然アクセスできなくなるクライアントが発生する可能性があるということですね。

TLS 1.2 未満がクライアントで使われているか確認する

最低バージョンを TLS 1.1 以下に設定している場合ですが、2024 年 10 月 31 日までに TLS 1.2 未満で接続するクライアントが無い状態にしなければなりません。
最低 TLS バージョンはあくまでも Azure Storage アカウントの設定であり、最低 TLS バージョンが 1.1 だとしても全てのクライアントが 1.2 以上でアクセスしている可能性もあります。

2024 年 11 月 1 日前の対処法としては、最低 TLS バージョン を 1.2 に設定してしまい、1.0 と 1.1 での接続が不可能な状態になっていれば、2024 年 11 月 1 日時点でクライアントが影響を受けることはなくなります。
とはいえ TLS 1.2 以上を強制した時点で接続できなくなるクライアントが発生する可能性はあります。
エイヤで構成変更するのもありだと思いますが、ストレージのログ機能を有効化すると現在のアクセス状況を解析して TLS 1.1 以下が使われているのか確認することが出来ます。

Azure Storage アカウントの Diagnostic settings から有効化が可能で、デフォルトでは無効化されています。

収集データの構成方法などについては環境に応じていくつかの設定パターンがありますので詳細は公式ドキュメントを一度見て頂いたほうが良いです。
共通点としては StorageRead/StorageWrite は有効化しておくという点でしょうか。

以下では blog に対して有効化を行いました。

有効化して少し経つと、それ以降のログを Monitoring -> Logs から確認することが出来ます。
Log Analytics からアカウントを横断して確認することも可能です。

上記は例ですが、クエリで確認してみると TLS 1.1 と TLS 1.0 が使われていることが確認出来ます。
StorageBlogLgos のデータからアクセス元などより詳細なデータを確認し、どのクライアントからアクセスされているのか特定してクライアント側の TLS バージョンを上げるような対応が必要です。

あるいは一定期間のアクセスログから古い TLS バージョンの使用が確認出来なかった場合は Azure Storage アカウント側の最低 TLS バージョンをさっさと上げてしまうのもアリですね。

さいごに

本日は Azure Storage アカウントの TLS 1.2 未満の使用状況を確認してみました。

まだ強制的な移行まで 1 年近くありますが、アクセスログの収集なども含めて早めの対応をしておきましょう。