Amazon SNS 安全最佳实践 - Amazon Simple Notification Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SNS 安全最佳实践

AWS 为 Amazon 提供了许多安全功能SNS。在您自己的安全策略的上下文中查看这些安全功能。

注意

有关这些安全功能的指南适用于常见的应用场景和实施。我们建议您在特定应用场景、架构和威胁模型的上下文中查看这些最佳实践。

预防性最佳实践

以下是 Amazon SNS 的预防性安全最佳实践。

确保主题不可公开访问

除非您明确要求互联网上的任何人能够阅读或写入您的Amazon SNS 主题,否则应确保您的主题不可公开访问(世界上所有人或任何经过身份验证的 AWS 用户都可以访问)。

  • 避免创建 Principal 设置为 "" 的策略。

  • 避免使用通配符 (*)。相反,对一个特定用户或多个用户命名。

实施最低权限访问

授予权限时,您可以决定谁获得权限、权限适用于哪些主题以及您希望允许对这些主题执行的特定API操作。实施最低权限原则对于降低安全风险至关重要。它还有助于减少错误或恶意意图的负面影响。

遵循授予最低权限的标准安全建议。也就是说,只授予执行特定任务所需的权限。您可以通过使用与用户访问相关的安全策略组合来实施最低权限。

Amazon SNS 使用出版商-订阅模式,需要三种类型的用户账户访问权限:

  • 管理员 – 用于创建、修改和删除主题的访问权。管理员还控制主题策略。

  • 发布者 – 用于向主题发送消息的访问权。

  • 订阅者 – 用于订阅主题的访问权。

有关详细信息,请参阅以下章节:

为需要 Amazon SNS 访问权限的应用程序和 AWS 服务使用IAM角色

要使应用程序或 AWS 服务(例如亚马逊EC2)访问亚马逊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 建议你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终端节点访问亚马逊 SNS

如果您有必须能够与之交互的主题,但这些主题绝对不能暴露在互联网上,请使用VPC端点将主题访问权限限制为仅限特定主机中的主机VPC。您可以使用主题策略来控制从特定 Amazon VPC 终端节点或特定终端节点访问主题的权限VPCs。

Amazon SNS VPC 终端节点提供了两种控制消息访问权限的方法:

  • 您可以控制允许通过特定VPC端点的请求、用户或群组。

  • 您可以使用主题策略控制哪些VPCs或VPC终端节点可以访问您的主题。

有关更多信息,请参阅创建终端节点为亚马逊创建亚马逊VPC终端节点策略 SNS

确保订阅未配置为提供原始 http 终端节点

避免将订阅配置为传输到原始 http 终端节点。始终将订阅传输到终端节点域名。例如,配置为向终端节点 http://1.2.3.4/my-path 传输的订阅应该更改为 http://my.domain.name/my-path