Tech Racho エンジニアの「?」を「!」に。
  • インフラ

AWS S3 APIのv2署名は6/24に廃止されず、まだ使える?(続報あり)

続報1(2019/06/17): 本記事公開後、以下の正式なアナウンスが公開されました🎉。これに油断せず、v4署名のライブラリにアップデートしましょう。

Original Plan – Support for SigV2 ends on June 24, 2019.
Revised Plan – Any new buckets created after June 24, 2020 will not support SigV2 signed requests, although existing buckets will continue to support SigV2 while we work with customers to move off this older request signing method.
上アナウンスより

続報2(2019/06/19):上アナウンスの日本語版も公開されました。


こんにちは、hachi8833です。AWS S3 APIを長く使っている人たちを数か月前に震撼させた「AWS S3 APIのv2署名が2019年6月24日で無効になる」の件ですが、本記事執筆時点のAWSのドキュメントでは、「2019年6月24日でS3 APIのv2署名のサポートを廃止」に相当する記述はなくなっています

既にご存知の方もいらっしゃるかと思いますが、この点にフォーカスした記事が見当たらなかったので、本記事に取り急ぎまとめました。以下はすべて本記事執筆時点の情報です。お気づきの点がありましたら@hachi8833までお知らせください。

現在のドキュメント


上ドキュメントより

該当部分の英文パラグラフを以下に取り出してみました。

Amazon S3 supports only AWS Signature Version 4 in most AWS Regions. In some of the older AWS Regions, Amazon S3 supports both Signature Version 4 and Signature Version 2. However, Signature Version 2 is being turned off (deprecated).
上英語ドキュメントより(強調は筆者)

「In some of the older AWS regions」では具体的にどの古いリージョンがv2署名とv4署名のサポート対象なのかがわかりませんが、「Amazon S3 supports both v4 and v2」ではv2署名とv4署名をサポートしていると現在形で記述されています。

「However, Signature Version 2 is being turned off (deprecated)」は「being turned off」なので、「ただしv2署名は廃止に向けて作業中」、「(deprecated)」は「(非推奨)」と読めます。

おまけ: 英文解釈について

なお、上述パラグラフの3番目の文は、現在の日本語ドキュメントの訳が紛らわしく、ちょっと残念です😢。

  • 「ただし、署名バージョン 2 はオフにされています (廃止)」となっているのが、v2署名が既にオフになってしまったかのように見える
  • deprecatedが「廃止」と訳されている(「非推奨」としたいところ)

参考: 過去のドキュメント

archive.orgで見つけた2018/10/06付けの同ドキュメント(日本語)には以下のように「6月24日に最終サポートを終了」という旨が記載されていました。

Amazon S3 における署名バージョン 2 は廃止され、署名バージョン 2 の最終サポートは 2019 年 6 月 24 日に終了します。2019 年 6 月 24 日以降、Amazon S3 は署名バージョン 4 を使用して署名された API リクエストのみを受けつけます。
上記archive.orgより

参考: フォーラムにはアナウンスが見当たらず

なお以下のAWSフォーラムにも、2018/06/11の「Announcement: AWS Signature Version 4 to replace AWS Signature Version 2 for signing S3 API requests」以降S3 APIのv2署名に関するアナウンスは見当たりませんでした。

どう解釈するか

  • S3 APIのv2署名は、v4署名同様(引き続き)サポートされる
    • ただしv2/v4署名を引き続きサポートする具体的なリージョンはこのパラグラフからはわからない
    • v2/v4署名をサポートするリージョンについては現状維持であると解釈できる
  • S3 APIのv2署名は非推奨であることは確か
  • S3 APIのv2署名サポートは将来廃止される可能性はあるかもしれないが、特に期限は切られていないように読める
    • なお以前示されていた廃止の日付は現在は削除され、現在は廃止の日付については書かれていない

もうひとつ記述があった

と、ここまで調べたところで、morimorihogeさんが同じドキュメントのもっと下の方に以下の記述を見つけてくれました😅。リンクを再録します。

なぜこの更新を実行するのですか。
署名バージョン 4 は、シークレットアクセスキーに代わって、署名されたキーを使用することでセキュリティの向上を提供します。署名バージョン 4 は現在すべての AWS リージョンでサポートされていますが、署名バージョン 2 は 2014 年 1 月以前に起動したリージョンにおいてのみサポートされます。この更新によって、すべてのリージョンを通してより一貫したエクスペリエンスを提供することができます。
同ドキュメント日本語版より(強調は筆者)

英語版も同様ですね。強調部分のlaunchedはリージョンの開設を指すと理解しました。

Why Are You Making the Update?
Signature Version 4 provides improved security by using a signing key instead of your secret access key. Signature Version 4 is currently supported in all AWS Regions, whereas Signature Version 2 is only supported in Regions that were launched before January 2014. This update allows us to provide a more consistent experience across all Regions.
同ドキュメント英語版より(強調は筆者)

さらに、AWSでv2署名をサポートするエンドポイントのリストもmorimorihogeさんに見つけていただきました。だいぶ下の方ですが、S3のTokyoリージョンは「バージョン2」「バージョン4」とあります。


同ドキュメントより(図は途中を省略しています)

なお、Osakaリージョンはバージョン4のみとなっています。新しいからでしょうね。


同ドキュメントより

結局どうなるのか

以上を勘案すれば、2014年1月より前からあった当該リージョンについては、S3 APIのv2署名のサポート廃止は少なくとも「6/24ではない」、つまりもうしばらくはS3 APIでv2署名を使えるだろうと考えられます。であれば緊急度は少し和らぐことになります。

6/24を過ぎれば何かわかるかもしれませんが、production環境でv2署名のままいけるかどうかを検証したい方はきっといないと思います😅。

結局、本当のところはAWSの中の人しかわかりません。どなたか強い方、詳しい方がいらっしゃいましたら@hachi8833などで教えていただけますでしょうか?🙇🙇

どうすればいいのか

S3 APIでの古いv2署名の利用が引き続き非推奨であることは変わりません。

いずれにしろ、該当の方は早いうちにライブラリをアップグレードすべきです。既にアップグレード完了した方の努力はもちろん無駄にはなりません。

S3 APIをおよそ5年以上利用している方が該当することが多いと思われますが、特に最近メンテナンスされていないプロジェクトでは、この機会に署名をチェックしましょう。

おたより発掘

関連記事

AWSマネジメントコンソールからEC2インスタンスの再起動を行う方法(非エンジニア向け)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。