AWS キー管理サービス (AWS KMS) で暗号化されている Amazon シンプルストレージサービス (Amazon S3) オブジェクトにアクセスしようとしています。「AWS KMS マネージドキーでサーバー側の暗号化を指定するリクエストには AWS 署名バージョン 4 が必要です」というエラーが表示されます。
解決方法
AWS 署名バージョン 4 以外の署名バージョンを使用して AWS KMS で暗号化されたオブジェクトにアクセスすると、このエラーが表示されます。AWS KMS キーで暗号化された S3 オブジェクトにアクセスするときは、すべてのリクエストがAWS 署名バージョン 4で署名されていることを確認してください。
匿名のリクエストをしていないことを確認してください
匿名のリクエストを行うと、このエラーが表示されることがあります。匿名リクエストとは、AWS 認証情報で署名されていないリクエストです。匿名リクエストの例としては、ブラウザまたは HTTP クライアント上のオブジェクト URL を使用して S3 オブジェクトをダウンロードすることが挙げられます。S3 オブジェクト URL は次のようになります。
https://bucketname.s3.region.amazonaws.com/folder/file.txt
curlなどの HTTP クライアントを使用すると、次のようなコマンドで匿名リクエストを行うことができます。
curl -vo ./local/path/file.txt https://bucketname.s3.region.amazonaws.com/folder/file.txt
AWS 署名バージョン 2 を使用していないことを確認してください
一部の S3 REST API エンドポイントとリージョンは、署名バージョン 2 を使用して署名されたリクエストを引き続きサポートします。ただし、サインインには署名バージョン 4 を使用するのがベストプラクティスです。詳細については、「Amazon S3の AWS 署名バージョン 2 がオフ (非推奨)」を参照してください。
一部のリージョンはまだ署名バージョン 2 をサポートしているため、署名バージョン 2 で署名されたリクエストをこれらのリージョンのバケットに送信できます。ただし、AWS KMS では、リクエストが署名バージョン 4 で署名されている必要があります。AWS KMS で暗号化されたオブジェクトで署名バージョン 2 を使用すると、次のエラーが表示されます:
AWS KMS マネージドキーによるサーバー側の暗号化を指定するリクエストには、AWS 署名バージョン 4 _ が必要です。_
バケット内のオブジェクトにリクエストを行うときに使用した署名バージョンを確認するには、以下を試してください。
注記: AWS KMS マネージドキーを指定するリクエストでは、セキュアソケットレイヤー (SSL) またはトランスポート層セキュリティ (TLS) を使用する必要があります。安全でない接続 (SSL/TLS なし) で AWS KMS キーを指定するリクエストを行うと、次のエラーが表示されます。
An error occurred (InvalidArgument) when calling the <operation_performed> operation: Requests specifying Server Side Encryption with AWS KMS managed keys must be made over a secure connection.
関連情報
AWS KMS (SSE-KMS) によるサーバー側の暗号化の指定
リクエストの認証 (AWS 署名バージョン 2)