HTTP および HTTPS エンドポイントに送信される Amazon SNS メッセージの信頼性を検証するにはどうすればよいですか?

所要時間1分
0

Amazon Simple Notification Service (Amazon SNS) を使用して HTTPS または HTTP エンドポイントに通知を送信しようとしています。なりすまし攻撃を防ぎたいのですが、エンドポイントが受信する Amazon SNS メッセージの信頼性を検証するにはどうすればよいですか?

解決方法

Amazon SNS 通知の信頼性を検証する際には、証明書ベースの署名検証を利用するのがベストプラクティスです。手順については、Amazon SNS デベロッパーガイドの Verifying the signatures of Amazon SNS messages を参照してください。

なりすまし攻撃を防ぐのに役立てるため、Amazon SNS メッセージの署名を検証する際には、次の事項を必ず実行してください。

  • Amazon SNS から証明書を取得するには、必ず HTTPS を使用します。
  • 証明書の信頼性を検証します。
  • 証明書が Amazon SNS から送信されたことを確認します。
  • (可能な場合) Amazon SNS 向けにサポートされている AWS SDK のいずれかを使用して、メッセージを検証および確認します。

メッセージ本文の例

Amazon SNS から送信されるメッセージペイロード文字列の例を次に示します。

{
"Type" : "Notification",
"MessageId" : "e1f2a232-e8ce-5f0a-b5d3-fbebXXXXXXXX",
"TopicArn" : "arn:aws:sns:us-east-1:XXXXXXXX:SNSHTTPSTEST",
"Subject" : "Test",
"Message" : "TestHTTPS",
"Timestamp" : "2021-10-07T18:55:19.793Z",
"SignatureVersion" : "1",
"Signature" : "VetoDxbYMh0Ii/87swLEGZt6FB0ZzGRjlW5BiVmKK1OLiV8B8NaVlADa6ThbWd1s89A4WX1WQwJMayucR8oYzEcWEH6//VxXCMQxWD80rG/NrxLeoyas4IHXhneiqBglLXh/R9nDZcMAmjPETOW61N8AnLh7nQ27O8Z+HCwY1wjxiShwElH5/+2cZvwCoD+oka3Gweu2tQyZAA9ergdJmXA9ukVnfieEEinhb8wuaemihvKLwGOTVoW/9IRMnixrDsOYOzFt+PXYuKQ6KGXpzV8U/fuJDsWiFa/lPHWw9pqfeA8lqUJwrgdbBS9vjOJIL+u2c49kzlei8zCelK3n7w==",
"SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2aXXXXXXXX.pem",
"UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:XXXXXXXX:SNSHTTPSTEST:b5ab2db8-7775-4852-bd1a-2520XXXXXXXX",
"MessageAttributes" : {
"surname" : {"Type":"String","Value":"SNSHTTPSTest"}
}
}

Amazon SNS が使用するメッセージ形式の詳細については、「メッセージ形式を解析する」を参照してください。


関連情報

HTTP/S エンドポイントへのファンアウト

Amazon SNS での AWS Lambda の使用

Amazon SNS の IP アドレスの範囲は何ですか?

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ