Amazon SNS のセキュリティベストプラクティス - Amazon Simple Notification Service

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

Amazon SNS のセキュリティベストプラクティス

AWS は、Amazon SNS に多くのセキュリティ機能を提供します。独自のセキュリティポリシーのコンテキストで、これらのセキュリティ機能を確認します。

注記

これらのセキュリティ機能のガイダンスは、一般的ユースケースと実装に適用されます。特定のユースケース、アーキテクチャ、脅威モデルのコンテキストで、これらのベストプラクティスを確認することをお勧めします。

予防的ベストプラクティス

以下に、Amazon SNS の予防的なセキュリティに関するベストプラクティスを示します。

トピックがパブリックアクセス可能でないようにする

インターネット上の誰かが Amazon SNS トピックを読み書きできるように明示的に要求しない限り、トピックがパブリックにアクセス可能 (世界中のすべてのユーザーまたは認証された AWS ユーザーがアクセス可能) でないことを確認する必要があります。

  • Principal""に設定してポリシーを作成しないでください。

  • ワイルドカード (*) を使用しないでください。代わりに、特定のユーザーに名前を付けます。

最小特権アクセスの実装

アクセス権限を付与する場合、アクセス権限を受け取るユーザー、アクセス許可の対象となるトピック、およびこれらのトピックに対して許可する特定の API アクションを決定します。最小権限の原則を実装することは、セキュリティリスクを軽減するために重要です。また、エラーや悪意のある意図による悪影響を減らすのにも役立ちます。

最小特権を付与するスタンダードのセキュリティアドバイスに従ってください。つまり、特定のタスクの実行に必要なアクセス権限のみを付与します。ユーザーアクセスに関連するセキュリティポリシーを組み合わせて使用することで、最小権限を実装できます。

Amazon SNS では、発行者と受信者のモデルが使用され、次の 3 種類のユーザーアカウントアクセスが必要です。

  • 管理者 - トピックの作成、変更、削除にアクセスします。管理者は、トピックポリシーも制御します。

  • 発行者 - トピックへのメッセージ送信のアクセス権限を持ちます。

  • 受信者 - トピックへの登録のアクセス権限を持ちます。

詳細については、次のセクションを参照してください。

Amazon SNS アクセスを必要とするアプリケーションと AWS サービスに IAM ロールを使用する Amazon SNS

Amazon EC2 などのアプリケーションまたは AWS サービスが Amazon SNS トピックにアクセスするには、 AWS API リクエストで有効な AWS 認証情報を使用する必要があります。これらの認証情報は自動的にローテーションされないため、 AWS 認証情報をアプリケーションまたは EC2 インスタンスに直接保存しないでください。

代わりに、IAM ロールを使用して、Amazon SNS にアクセスする必要があるアプリケーションまたはサービスの一時的な認証情報を管理することをおすすめします。ロールを使用するとき、EC2 インスタンスまたは AWS のサービス ( AWS Lambdaなど) に長期の認証情報 (ユーザー名、パスワード、アクセスキーなど) を配布する必要はありません。代わりに、ロールは、アプリケーションが他の AWS リソースを呼び出すときに使用できる一時的なアクセス許可を提供します。

詳細については、「IAM ユーザーガイド」の「IAM ロール」および「ロールの一般的なシナリオ: ユーザー、アプリケーション、およびサービス」を参照してください。

サーバー側の暗号化を実装する

データ漏洩の問題を軽減するには、保存時の暗号化を使用して、メッセージを保存する場所とは別の場所に保存されているキーを使用してメッセージを暗号化します。サーバー側の暗号化 (SSE) は、保存時のデータ暗号化を提供します。Amazon SNS は、データを保存するときにメッセージレベルで暗号化し、アクセスするとメッセージを復号します。SSE は で管理されるキーを使用します AWS Key Management Service。リクエストが認証され、お客様がアクセス権限を持っていれば、トピックが暗号化されているかどうかに関係なく同じ方法でアクセスできます。

詳細については、サーバー側の暗号化を使用した Amazon SNS データの保護およびAmazon SNS 暗号化キーとコストの管理を参照してください。

送信時のデータの暗号化を強制する

HTTP を使用して送信中に暗号化されていないメッセージを公開することは可能ですが、お勧めできません。ただし、トピックが を使用して保管時に暗号化されている場合は AWS KMS、メッセージの発行に HTTPS を使用して、保管中と転送中の両方の暗号化を確保する必要があります。トピックは HTTP メッセージを自動的には拒否しませんが、セキュリティ標準を維持するには HTTPS を使用する必要があります。

AWS では、HTTP の代わりに HTTPS を使用することをお勧めします。HTTPS を使用すると、SNS トピック自体が暗号化されていなくても、メッセージは送信中に自動的に暗号化されます。HTTPS を使用しない場合、ネットワークベースの攻撃者は、中間者などの攻撃を使用して、ネットワークトラフィックを傍受したり操作することができます。

HTTPS 経由の暗号化された接続のみを実行するには、aws:SecureTransport 条件を、暗号化されていない SNS トピックに添付されている IAM ポリシーに追加します。これにより、メッセージ発行者は HTTP ではなく HTTPS を使用することになります。次の例のポリシーをガイドとして使用できます。

{ "Id": "ExamplePolicy", "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPublishThroughSSLOnly", "Action": "SNS:Publish", "Effect": "Deny", "Resource": [ "arn:aws:sns:us-east-1:1234567890:test-topic" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" } ] }

VPC エンドポイントを使用して Amazon SNS にアクセスすることを検討する

操作できる必要があるが、インターネットに絶対に公開してはならないトピックがある場合は、VPC エンドポイントを使用して、特定の VPC 内のホストのみにトピックアクセスを制限します。トピックポリシーを使用して、特定の VPC エンドポイントまたは特定の VPC からのトピックへのアクセスを制御できます。

Amazon SNS の VPC エンドポイントには、メッセージへのアクセスを制御するために、2 通りの方法が用意されています。

  • 特定の VPC エンドポイントを通じて許可されるリクエスト、ユーザー、またはグループを管理できます。

  • トピックポリシーを使用して、どの VPC または VPC エンドポイントがトピックにアクセスできるかを制御できます。

詳細については、エンドポイントの作成およびAmazon SNS 用の VPC エンドポイントポリシーを作成するを参照してください。

サブスクリプションが raw http エンドポイントに配信するように設定されていないことを確認する

サブスクリプションは raw http エンドポイントに配信する設定をしないでください。エンドポイントドメイン名に配信するサブスクリプションが必ずなければいけません。例えば、エンドポイントに配信するように構成されたサブスクリプションである http://1.2.3.4/my-pathhttp://my.domain.name/my-path に変更する必要があります。