Amazon SQS のリクエストの認証 - Amazon Simple Queue Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SQS のリクエストの認証

署名認証とは、リクエストの送信者を特定し、検証するプロセスです。認証の最初の段階で、 はプロデューサーの ID と、プロデューサーが を使用するように登録 AWSされているかどうかを確認します (詳細については、 AWS 「」を参照してくださいステップ 1: AWS アカウント と IAM ユーザーを作成する)。次に、以下の手順 AWS に従います。

  1. プロデューサー (送信者) が必要な証明書を取得します。

  2. プロデューサーがリクエストと認証情報をコンシューマー (受信者) に送信します。

  3. コンシューマーは証明書を使用して、プロデューサーが本当にリクエストを送信したか検証します。

  4. 次のいずれかの結果になります。

    • 認証が成功すると、コンシューマーはリクエストを処理します。

    • 認証に失敗すると、コンシューマーによってリクエストが却下され、エラーが返されます。

HMAC-SHA による基本的な認証のプロセス

クエリAPIを使用してAmazon SQSにアクセスする場合は、リクエストの認証のために、以下の項目を準備する必要があります。

  • を識別するAWS アクセスキー ID。シークレットアクセスキーの検索に AWS アカウント AWS を使用します。

  • HMAC-SHAリクエスト署名、シークレットアクセスキーを使用して計算されます(共有シークレットはお客様と AWSだけが知っています。詳細については、RFC2104 を参照してください)。AWS SDK によって署名プロセスが処理されますが、HTTP または HTTPS 経由でクエリリクエストを送信した場合、各クエリリクエストに署名を含める必要があります。

    1. 署名バージョン4の署名キーを取得します。詳細については、「Java を使用して署名キーを取得」を参照してください。

      注記

      Amazon SQSは署名バージョン4をサポートしています。署名バージョン4では、SHA256により以前のバージョンよりもセキュリティとパフォーマンスが向上しています。Amazon SQSを使用する新規のアプリケーションを作成する場合、署名バージョン4を使用します。

    2. リクエスト署名をBase64 エンコードします。以下のサンプルJavaコードによってこの処理が行われます。

      package amazon.webservices.common; // Define common routines for encoding data in AWS requests. public class Encoding { /* Perform base64 encoding of input bytes. * rawData is the array of bytes to be encoded. * return is the base64-encoded string representation of rawData. */ public static String EncodeBase64(byte[] rawData) { return Base64.encodeBytes(rawData); } }
  • リクエストのタイムスタンプ (または有効期限)。リクエストで使用するタイムスタンプは、dateTime オブジェクトでなければなりません。時、分、秒を含む詳細な日時が必要です。たとえば、2007-01-31T23:59:59Z などです。必須ではありませんが、協定世界時 (グリニッジ標準時)を使用してオブジェクトを提供することが推奨されています。

    注記

    あなたのサーバー時刻が正しく設定されていることを確認してください。(有効期限ではなく) タイムスタンプを指定すると、リクエストは指定された時刻から 15 AWS 分後に自動的に期限切れになります (サーバー上の AWS 現在の時刻より 15 分以上前のタイムスタンプを持つリクエストは処理されません)。

    .NET を使用する場合、過度に厳密なタイムスタンプ情報を送信しないようご注意ください (タイムスタンプの処理プロセスの違いにより不具合が発生する可能性があるためです)。この場合、精度が 1ミリ秒以内のdateTimeオブジェクトを手動で作成してください。

パート 1: ユーザーからのリクエスト

以下は、HMAC-SHA AWS リクエスト署名を使用してリクエストを認証するために従う必要があるプロセスです。

ユーザーからのリクエストを説明する図。
  1. へのリクエストを作成します AWS。

  2. シークレットアクセスキーを使用して、キー付きハッシュメッセージ認証コード (HMAC-SHA) 署名を計算します。

  3. リクエストに署名とアクセスキー ID を含めてから、リクエストを に送信します AWS。

パート 2: からのレスポンス AWS

AWS は応答として次のプロセスを開始します。

からのレスポンスを説明する図 AWS。
  1. AWS はアクセスキー ID を使用してシークレットアクセスキーを検索します。

  2. AWS は、リクエストで送信した署名の計算に使用したのと同じアルゴリズムを使用して、リクエストデータとシークレットアクセスキーから署名を生成します。

  3. 次のいずれかの結果になります。

    • が AWS 生成する署名がリクエストで送信した署名と一致する場合、 はリクエストが本物である AWS と見なします。

    • 比較が失敗すると、リクエストは破棄され、エラー AWS が返されます。