必見の記事

【超重要】対応しないと使えなくなるかも?!今、全S3ユーザがチェックすべき署名バージョン2の廃止について

2019.03.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ご機嫌いかがでしょうか、豊崎です。

注意喚起記事です。一部のS3利用者に影響が出ることなので、是非ご確認、および対象の方はご対応いただければと思います。

具体的に何のことかというと、Amazon S3のAWS署名バーション2の廃止についてです。

弊社suzukiがすでに記事を書いていますが、Amazon S3のAWS署名バーション2が2019年6月24日に廃止されます。これは、より安全にAWSおよびS3を利用できるようにするために署名バージョンの変更が行われるためです。

これによって一部のAWSユーザのS3の利用に影響が出ます。

 

署名バージョン4専用のS3エンドポイントを古いCLIで試してみた

AWSの各サービスのAPIを利用する際、AWSが送信元を特定できるようにリクエストに署名が必要です。現在AWSのAPIで利用されている署名バーションは「2」と「4」の2種類あり、「4」が推奨されています。

しかし、古いAWS CLIやAWS SDKのバージョンのものではリクエスト時の署名がバージョン2で行われているケースがあります。

そしてこれまでバージョン2、4どちらでも利用できていたS3のAPIリクエストの署名バージョン2が2019年6月24日に廃止されます。

つまりどういうことか?

古いAWS CLIやSDKを使ってる人は、何も対応しないで放っておくとS3バケット・オブジェクトにアクセスできなくなります!!

まじか、、、これはしっかりと対応しなければ。。

慌てても仕方ないので、誰が対象で、何をどのようにすればいいかをまとめていきたいと思います。

どのようなユーザが対象?

対象者の切り分けを以下のステップで行いましょう

  1. まずは以下の表でご自身が利用しているSDKを確認ください。
  2. 次に利用中のSDKのアップグレード要否を確認しましょう。
  3. 最後にアプリケーションコードの修正要否を確認しましょう。

ご自身の環境で何を対応すれば良いか確認できましたでしょうか。必要に応じてSDKのアップグレード、およびアプリケーションコードの修正を行いましょう。

ただし、以下の表はあくまで「必要最低限のバーション」が記載されています。可能であれば最新のSDKを導入することが望ましいです。ただし、現在稼働中のアプリケーションの改修が発生する可能性があるため、状況に応じて判断を行いましょう。

参考:https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html#UsingAWSSDK-move-to-Sig4

利用中のSDK SDKのアップグレード要否 アプリケーションコードの修正要否
AWS SDK for Java v1 Java 1.11.x あるいは v2 in Q4 2018 にアップグレード。 はい
AWS SDK for Java v2 (プレビュー) SDK のアップグレードは不要です。 いいえ
AWS SDK for .NET v1 3.1.10 以降にアップグレード。 はい
AWS SDK for .NET v2 3.1.10 以降にアップグレード。 いいえ
AWS SDK for .NET v3 SDK のアップグレードは不要です。 はい
AWS SDK for JavaScript v1 2.68.0 以降にアップグレード。 はい
AWS SDK for JavaScript v2 2.68.0 以降にアップグレード。 はい
AWS SDK for JavaScript v3 現在のところ、何もする必要はありません。主要バージョン V3 in Q3 2019 にアップグレード。 いいえ
AWS SDK for PHP v1 主要バージョン V3 にアップグレード。 はい
AWS SDK for PHP v2 主要バージョン V3 にアップグレード。 はい
AWS SDK for PHP v3 SDK のアップグレードは不要です。 いいえ
Boto2 Boto2 v2.49.0 にアップグレード。 はい
Boto3 1.5.71 (Botocore)、1.4.6 (Boto3) にアップグレード。 はい
AWS CLI 1.11.108 にアップグレード。 はい
AWS CLI v2 (プレビュー) SDK のアップグレードは不要です。 いいえ
AWS SDK for Ruby v1 Ruby V3 にアップグレード。 はい
AWS SDK for Ruby v2 Ruby V3 にアップグレード。 はい
AWS SDK for Ruby v3 SDK のアップグレードは不要です。 いいえ
Go SDK のアップグレードは不要です。 いいえ
C++ SDK のアップグレードは不要です。 いいえ

 

また、S3を利用する製品やオープンソースで署名バージョン2が利用されている可能性もあると思われます。心当たりのあるかたは確認を行うことをお勧めいたします。

S3のログから判断する方法

S3 バケットのデータイベントログで署名バージョンを確認することができるようになっています(※1)。

 

CloudTrailのログからも署名バージョン2を利用しているかどうかが確認できます。こちらの記事も併せて確認することが望ましいです。

 

 

廃止予定のS3署名バージョン2API利用をCloudWatchEventで検出してみた

S3バケットにオブジェクトレベルのデータイベントが出力されていればAthenaなどで確認することも可能です。何はともあれ、まずはログを出力する設定を行いましょう。

課金に関する注意点

CloudTrailの有効化とS3のログ保管においては課金が発生します。高頻度のS3利用があるケースではご注意いただきますようお願いいたします。ただし、S3が全く利用できなくなった場合の業務影響を考えると、多くのケースでは目をつぶれる金額におさまるものと思われます。

さいごに

現在稼働中の環境でS3をご利用の方は是非一度ご確認いただければと思います。この記事が誰かのお役にたてば幸いです。

注釈

※1:2019/03/05のアップデートでS3のサーバアクセスログに「署名バーション(Signature Version)」を含む新しいフィールドが追加されています。執筆時点では英語ページのみの記載でした。

https://docs.aws.amazon.com/AmazonS3/latest/dev/WhatsNew.html

 参考

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html#UsingAWSSDK-sig2-deprecation

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html#UsingAWSSDK-move-to-Sig4

https://docs.aws.amazon.com/ja_jp/general/latest/gr/signing_aws_api_requests.html

https://forums.aws.amazon.com/ann.jspa?annID=5816

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/user-guide/enable-cloudtrail-events.html