【AWS】2019年6月24日(月) に Amazon S3 の署名バージョン 2 が廃止され、署名バージョン 4 の API リクエストのみ受け付けるため注意!【S3 に接続できなくなる】

Amazon S3 を利用している企業(AWS を利用している企業はほぼ S3 を利用していると思いますが)にとって重要な情報です。

AWS 公式サイトによると 2019年6月24日(月) 以降は Amazon S3 の署名バージョン 2 が廃止され、署名バージョン 4 で署名された API リクエストのみ受け付けるようになります。

 

Amazon S3 における AWS 署名バージョン 2 の廃止

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

【AWS】2019年6月24日(月) に Amazon S3 の署名バージョン 2 が廃止され、署名バージョン 4 の API リクエストのみ受け付けるため注意!【S3 に接続できなくなる】

 

そのため署名バージョンを 4 にバージョンアップしておかないと、突然 S3 に接続できなくなる可能性があります。

S3 には重要な情報が保存され、企業を支える各システムと連携していると思いますので、業務が止まらないように事前に対策しておきましょう。

 

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

https://dev.classmethod.jp/cloud/aws/s3-sigv2-abolition/

 

 

Amazon S3 における署名(しょめい)バージョンとは?

AWS には 2 つの署名バージョンがあります。

  • 署名バージョン 4
  • 署名バージョン 2 

HTTP で AWS に対して HTTP リクエストを送る場合に、リクエストに署名する必要があります。

リクエストを送る先は Amazon S3 の API だったり、各 AWS のオブジェクトに送信します。

その署名にバージョン 2 と 4 があり、署名バージョン 3 はないようです。

 

その署名は Amazon S3 でも利用していおり、S3 へ API リクエストを投げ、Amazon S3 は署名内容を見てリクエストの送信者を識別し、認証を通ったリクエストのみ許可します。(アカウントとパスワードの組み合わせで認証が通らなかったらアクセスさせないといったようなもの)

 

 

 

通常の AWS へのリクエスト

通常 AWS へリクエストを投げる時はアクセスキー」を使用して署名します。

アクセスキーは、以下の 2 つのキーで構成されます。

  • アクセスキー ID
  • シークレットアクセスキー

これらの 2 つのキーはセキュリティ認証情報と呼ばれます。

 

AWS CLI 及び AWS SDK を利用した AWS リクエストの場合は自動的に署名される

AWS CLI(AWS Command Line Interface)もしくは AWS SDK を利用して AWS へのリクエストを作成すると、ツールの中で自動的にリクエストに署名されます。

つまり、自分で署名する必要はありません。

ただし、自動的に署名されるということは、知らず知らずのうちに古いバージョンで署名されている可能性があり、今自分が投げているリクエストのバージョンが古いことに気が付かない可能性もあります。

 

では、どうすれば自分が利用している AWS CLI 及び AWS SDK で自動署名されるバージョンが分かるのでしょうか?

 

 

AWS CLI 及び AWS SDK のバージョンでどの署名バージョンが使われるかが決まる

AWS CLI 及び AWS SDK のバージョンでどの署名バージョンが使われるかが決まります。

つまり、古い AWS CLI もしくは 古い AWS SDK を利用している場合は、署名バージョンが 2 の可能性が高いです。

 

署名バージョン 4 への移行が必要な AWS CLI と AWS SDK のバージョン一覧

以下のページに各バージョンと最低限アップグレードするバージョンが記載されています。

 

署名バージョン 2 から署名バージョン 4 への移行

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

 

【AWS】2019年6月24日(月) に Amazon S3 の署名バージョン 2 が廃止され、署名バージョン 4 の API リクエストのみ受け付けるため注意!【S3 に接続できなくなる】

 

 

 

一番簡単な対処方法

一番簡単な対処方法ですが、AWS CLI も AWS SDK も最新のバージョンアップすることです。

とりあえずこれで対策は完了です。

※ただし全部を無計画に最新にバージョンアップするとアプリが動かなくなることもあるので注意が必要です。

 

 

AWS CLI のバージョン確認【Linux】

aws –version コマンドで確認できます。

[ec2-user@redhat7 ~]$ aws –version
aws-cli/1.16.92 Python/2.7.5 Linux/3.10.0-957.el7.x86_64 botocore/1.12.82
[ec2-user@redhat7 ~]$

 

aws –version コマンドで以下のバージョンが分かります。

  • aws-cli バージョン : 1.16.92
  • Python バージョン : 2.7.5
  • Linux カーネルバージョン : 3.10.0-957
  • botocore バージョン : 1.12.82

 

下の表で確認すると AWS CLI は 1.11.108 以上にアップグレードすれば問題ないということなので、現在のバージョンは 1.16.92 だから問題ないと言えます。

【AWS】2019年6月24日(月) に Amazon S3 の署名バージョン 2 が廃止され、署名バージョン 4 の API リクエストのみ受け付けるため注意!【S3 に接続できなくなる】

 

ただし定期的に最新のバージョンにアップグレードすることを推奨しているのでバージョンアップを実施してみます。

 

 

botocore とは?

botocore とは、ローレベルのライブラリで、その上に AWS CLI や boto3 などが動いています。

 

botocore の公式サイトです。

 

Welcome to botocore

https://botocore.amazonaws.com/v1/documentation/api/latest/index.html

 

Botocore is a low-level interface to a growing number of Amazon Web Services. Botocore serves as the foundation for the AWS-CLI command line utilities. It will also play an important role in the boto3.x project.

The botocore package is compatible with Python versions 2.6.5, Python 2.7.x, and Python 3.3.x and higher.

 

botocore は、Amazon Web Service(AWS)の低レベルインターフェースです。

botocore は AWS-CLI コマンドラインユーティリティのベースとして機能します。

boto3.x プロジェクトでも重要な役割を果たしています。

 

 

AWS CLI のバージョンアップ手順【Linux】

AWS CLI のバージョンアップは pip コマンドで行います。

まずは pip がインストールされていることを確認します。

pip — version コマンドで結果が返ってくれば pip がインストールされています。

[ec2-user@redhat7 ~]$ pip –version
pip 18.1 from /usr/lib/python2.7/site-packages/pip-18.1-py2.7.egg/pip (python 2.7)
[ec2-user@redhat7 ~]$

 

 

awscli のバージョンアップは、「pip install –upgrade xxx」コマンドで行います。

[ec2-user@redhat7 ~]$ sudo pip install –upgrade awscli 
Collecting awscli 
  Downloading https://files.pythonhosted.org/packages/16/d1/43232fc0661b771c3a9a29c6518263217b2966a506b871cc0290c3e52c62/awscli-1.16.121-py2.py3-none-any.whl (1.5MB) 
    100% |????????????????????????????????| 1.5MB 17.1MB/s 
Requirement already satisfied, skipping upgrade: colorama<=0.3.9,>=0.2.5 in /usr/lib/python2.7/site-packages (from awscli) (0.3.9) 
Requirement already satisfied, skipping upgrade: rsa<=3.5.0,>=3.1.2 in /usr/lib/python2.7/site-packages (from awscli) (3.4.2) 
Requirement already satisfied, skipping upgrade: PyYAML<=3.13,>=3.10 in /usr/lib64/python2.7/site-packages (from awscli) (3.10) 
Requirement already satisfied, skipping upgrade: docutils>=0.10 in /usr/lib/python2.7/site-packages (from awscli) (0.14) 
Collecting s3transfer<0.3.0,>=0.2.0 (from awscli) 
  Downloading https://files.pythonhosted.org/packages/d7/de/5737f602e22073ecbded7a0c590707085e154e32b68d86545dcc31004c02/s3transfer-0.2.0-py2.py3-none-any.whl (69kB) 
    100% |????????????????????????????????| 71kB 28.8MB/s 
Collecting botocore==1.12.111 (from awscli) 
  Downloading https://files.pythonhosted.org/packages/58/dc/a1e204bd358e45d8e921a70882d5641eaf8890335dd80a210488076fc4dc/botocore-1.12.111-py2.py3-none-any.whl (5.3MB) 
    100% |????????????????????????????????| 5.3MB 8.4MB/s 
Requirement already satisfied, skipping upgrade: pyasn1>=0.1.3 in /usr/lib/python2.7/site-packages (from rsa<=3.5.0,>=3.1.2->awscli) (0.4.5) 
Requirement already satisfied, skipping upgrade: futures<4.0.0,>=2.2.0; python_version == “2.6” or python_version == “2.7” in /usr/lib/python2.7/site-packages (from s3transfer<0.3.0,>=0.2.0->awscli) (3.2.0) 
Requirement already satisfied, skipping upgrade: jmespath<1.0.0,>=0.7.1 in /usr/lib/python2.7/site-packages (from botocore==1.12.111->awscli) (0.9.3) 
Requirement already satisfied, skipping upgrade: python-dateutil<3.0.0,>=2.1; python_version >= “2.7” in /usr/lib/python2.7/site-packages (from botocore==1.12.111->awscli) (2.7.5) 
Requirement already satisfied, skipping upgrade: urllib3<1.25,>=1.20; python_version == “2.7” in /usr/lib/python2.7/site-packages (from botocore==1.12.111->awscli) (1.24.1) 
Requirement already satisfied, skipping upgrade: six>=1.5 in /usr/lib/python2.7/site-packages (from python-dateutil<3.0.0,>=2.1; python_version >= “2.7”->botocore==1.12.111->awscli) (1.9.0) 
Installing collected packages: botocore, s3transfer, awscli 
  Found existing installation: botocore 1.12.82 
    Uninstalling botocore-1.12.82: 
      Successfully uninstalled botocore-1.12.82 
  Found existing installation: s3transfer 0.1.13 
    Uninstalling s3transfer-0.1.13: 
      Successfully uninstalled s3transfer-0.1.13 
  Found existing installation: awscli 1.16.92 
    Uninstalling awscli-1.16.92: 
      Successfully uninstalled awscli-1.16.92 
Successfully installed awscli-1.16.121 botocore-1.12.111 s3transfer-0.2.0 
[ec2-user@redhat7 ~]$

 

 

再度バージョンを確認します。

[ec2-user@redhat7 ~]$ aws –version
aws-cli/1.16.121 Python/2.7.5 Linux/3.10.0-957.el7.x86_64 botocore/1.12.111
[ec2-user@redhat7 ~]$

 

AWS CLI のバージョンが「1.16.92」から「1.16.121」へアップグレードされています。

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人