翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SNS セキュリティのベストプラクティス
AWS は、Amazon の に多くのセキュリティ機能を提供しますSNS。独自のセキュリティポリシーのコンテキストで、これらのセキュリティ機能を確認します。
注記
これらのセキュリティ機能のガイダンスは、一般的ユースケースと実装に適用されます。特定のユースケース、アーキテクチャ、脅威モデルのコンテキストで、これらのベストプラクティスを確認することをお勧めします。
予防的ベストプラクティス
Amazon の予防的セキュリティのベストプラクティスを次に示しますSNS。
トピック
トピックがパブリックアクセス可能でないようにする
インターネット上の誰かが Amazon SNSトピックを読み書きできるように明示的に要求しない限り、トピックにパブリックにアクセスできない (世界中のすべてのユーザーまたは認証された AWS ユーザーがアクセス可能) ようにする必要があります。
-
Principal
を""
に設定してポリシーを作成しないでください。 -
ワイルドカード (
*
) を使用しないでください。代わりに、特定のユーザーに名前を付けます。
最小特権アクセスの実装
アクセス許可を付与するときは、誰に付与するか、アクセス許可の対象となるトピック、およびこれらのトピックを許可する特定のAPIアクションを決定します。最小権限の原則を実装することは、セキュリティリスクを軽減するために重要です。また、エラーや悪意のある意図による悪影響を減らすのにも役立ちます。
最小特権を付与するスタンダードのセキュリティアドバイスに従ってください。つまり、特定のタスクの実行に必要なアクセス権限のみを付与します。ユーザーアクセスに関連するセキュリティポリシーを組み合わせて使用することで、最小権限を実装できます。
Amazon はパブリッシャーサブスクライブモデルSNSを使用し、次の 3 種類のユーザーアカウントアクセスを必要とします。
-
管理者 - トピックの作成、変更、削除にアクセスします。管理者は、トピックポリシーも制御します。
-
発行者 - トピックへのメッセージ送信のアクセス権限を持ちます。
-
受信者 - トピックへの登録のアクセス権限を持ちます。
詳細については、次のセクションを参照してください。
Amazon SNS アクセスを必要とするアプリケーションと AWS サービスにIAMロールを使用する
Amazon などのアプリケーションや AWS サービスEC2が Amazon SNSトピックにアクセスするには、リクエストで AWS API有効な AWS 認証情報を使用する必要があります。これらの認証情報は自動的にローテーションされないため、 AWS 認証情報をアプリケーションやEC2インスタンスに直接保存しないでください。
Amazon にアクセスする必要があるアプリケーションまたはサービスの一時的な認証情報を管理するには、 IAMロールを使用する必要があります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 では、 HTTPS の代わりに を使用することをお勧めしますHTTP。を使用するとHTTPS、SNSトピック自体が暗号化されていない場合でも、メッセージは転送中に自動的に暗号化されます。がない場合HTTPS、ネットワークベースの攻撃者は、ネットワークトラフィックを盗聴したり、 などの攻撃を使用して操作したりできます man-in-the-middle。
で暗号化された接続のみを適用するにはHTTPS、暗号化されていないSNSトピックにアタッチされているIAMポリシーに aws:SecureTransport
条件を追加します。これにより、メッセージパブリッシャーは HTTPSの代わりに を使用するように強制されますHTTP。次の例のポリシーをガイドとして使用できます。
{ "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。トピックポリシーを使用して、特定の Amazon VPCエンドポイントまたは特定の からのトピックへのアクセスを制御できますVPCs。
Amazon SNSVPCエンドポイントには、メッセージへのアクセスを制御する 2 つの方法があります。
-
特定のVPCエンドポイントを通じて許可されるリクエスト、ユーザー、またはグループを制御できます。
-
トピックポリシーを使用して、トピックにアクセスできる VPCsまたはVPCエンドポイントを制御できます。
詳細については、「エンドポイントの作成」および「Amazon の Amazon VPCエンドポイントポリシーの作成 SNS」を参照してください。
サブスクリプションが raw http エンドポイントに配信するように設定されていないことを確認する
サブスクリプションは raw http エンドポイントに配信する設定をしないでください。エンドポイントドメイン名に配信するサブスクリプションが必ずなければいけません。例えば、エンドポイントに配信するように構成されたサブスクリプションである http://1.2.3.4/my-path
は http://my.domain.name/my-path
に変更する必要があります。