AWS KMS マネージドキーで暗号化された Amazon S3 オブジェクトにアクセスを試みると発生する、「リクエストには、AWS 署名バージョン 4 が必要です」というエラーをトラブルシューティングする方法を教えてください。

所要時間1分
0

AWS Key Management Service (AWS KMS) で暗号化された Amazon Simple Storage Service (Amazon S3) オブジェクトにアクセスしようとしたところ、次のエラーが発生します。 「AWS KMS マネージドキーによるサーバー側の暗号化を指定するリクエストには、AWS 署名バージョン 4 が必要です」

解決策

「AWS KMS マネージドキーを使用してサーバー側の暗号化を指定するリクエストには、AWS 署名バージョン 4 が必要です」というエラーは、次の理由で発生する場合があります。

  • リクエストが AWS 署名バージョン 4 で署名されていない。
  • 匿名のリクエストを行った。

リクエストが AWS 署名バージョン 4 で署名されていない

AWS KMS で暗号化されたオブジェクトで署名バージョン 2 を使用すると、エラーメッセージが表示される場合があります。一部の S3 REST API エンドポイントと AWS リージョンは、署名バージョン 2 で署名されたリクエストを引き続きサポートします。ただし、署名バージョン 4 を使用してサインインすることがベストプラクティスです。詳細については、「Amazon S3 では AWS 署名バージョン 2 が無効 (非推奨) となります」を参照してください。

署名バージョン 2 で署名されたリクエストは、署名バージョン 2 をサポートするリージョンのバケットに送信できます。ただし、AWS KMS では、リクエストが署名バージョン 4 で署名されている必要があります。

バケット内のオブジェクトへのリクエストに使用した署名バージョンを確認するには、次の操作を行います。

  • AWS CloudTrail イベントログを使用します
  • API の認証ヘッダーを確認します。ヘッダーには、AWS4-HMAC-SHA256 が含まれている必要があります。
    注: 署名付き URL を生成した場合は、クエリパラメータ?X-Amz-Algorithm=AWS4-HMAC-SHA256 が含まれているかどうかを確認します。このクエリパラメータが見つからない場合は、署名バージョン 4 を使用するようにコードを変更してください。

注: AWS KMS マネージドキーを指定するリクエストには、SSL または TLS を使用する必要があります。SSL または TLS を使用せず、保護されていない接続経由でリクエストを行うと、次のエラーが発生します。

「operation_performed 操作の呼び出し時にエラーが発生しました (InvalidArgument): AWS KMS マネージドキーによるサーバー側の暗号化を指定するリクエストは、保護された接続経由で行う必要があります。」「AWS KMS マネージドキーによるサーバー側の暗号化を指定するリクエストには、AWS 署名バージョン 4 が必要です」

匿名のリクエストを行った

匿名リクエストとは、AWS 認証情報で署名されていないリクエストです。たとえば、ブラウザまたは HTTP クライアントでオブジェクト URL を使用して S3 オブジェクトをダウンロードする場合が該当します。

オブジェクト URL の例: https://bucketname.s3.region.amazonaws.com/folder/file.txt

curl コマンドを実行し、匿名リクエストを行う場合の例を次に示します。

curl -vo ./local/path/file.txt https://bucketname.s3.region.amazonaws.com/folder/file.txt

このエラーメッセージが表示されないようにするには、リクエストが AWS 認証情報で署名されていることを確認してください。

AWS公式
AWS公式更新しました 4ヶ月前
コメントはありません