S3 バケットへのリクエスト毎の TLS バージョンを確認したい時の方法

S3 バケットへのリクエスト毎の TLS バージョンを確認したい

外部公開している S3 バケットへのリクエストに利用可能な TLS のバージョンを 1.2 のみに制限したい場合に、既存ユーザーにどれくらい影響が出るかわからないので、TLS バージョンの利用状況を確認したい。

S3 バケットへのリクエスト毎の TLS バージョンを確認するにはどうすればいいの?

サーバーアクセスのログ記録機能を使う

S3 バケットの「プロパティ」に「サーバーアクセスのログ記録」という設定項目があります。

サーバーアクセスのログ記録

こちらを有効にすることで S3 バケットに対するリクエストの詳細が記録されるようになります。
このサーバーアクセスログから TLS のバージョンを確認することができます。
以下のように TLS バージョンはログの末尾に出力されます。

サンプルログ(長いので前半省略)
Copied!
... TLSV1.1

ベストエフォート型のサーバーログ配信

サーバーアクセスログレコードの配信は、ベストエフォートで行われます。ログ記録用に適切にバケットを設定した場合、そのバケットへのほとんどのリクエストについてログレコードが配信されます。ほとんどのログレコードは、記録された時間から数時間以内に配信されますが、配信間隔は短くなる場合もあります。
サーバーログの完全性や適時性は保証されません。リクエストのログレコードが、リクエストが実際に処理されてからかなり後に配信されたり、配信すらされないこともあり得ます。サーバーログの目的は、バケットに対するトラフィックの特性を理解することです。ログレコードが失われることはまれですが、すべてのリクエストが完全に報告されるとは限りません。
サーバーのログ作成機能はベストエフォート型であるため、AWS ポータルで利用できる使用状況レポート (AWSManagement Console でレポートされる請求およびコスト管理レポート) には、サーバーログに記録されていないアクセスリクエストが含まれる場合があります。

一方で、上記の記述のように、サーバーアクセスログレコードの配信は、ベストエフォートで行われ、完全性や適時性は保証されません。
つまり、リクエストが実際に処理されてからかなり後に配信される可能性があるので、実際にログが確認できるまで数時間かかる
可能性があります。
また、そもそもサーバーアクセスログレコードが配信されていない可能性もあります。

ログの保存先のバケットとして、ソースバケットと同じリージョンにあるユーザー所有のバケットを指定できます。これにはソースバケット自体も含まれます。ただし、ログを管理しやすくするため、アクセスログは別のバケットに保存することをお勧めします。

また、上記の記述のように、アクセスログの書き込み先のバケットには、サーバーアクセスログを有効にしたバケットと異なるバケットを指定することを推奨しているようです。

参考文献