Amazon SQS security best practices - Amazon Simple Queue Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Amazon SQS security best practices

AWS 提供了针对 Amazon SQS 的多项安全功能,您应在自己的安全策略的上下文中查看这些功能。

注意

提供的具体实施指南适用于常见的使用案例和实施。我们建议您在特定使用案例、架构和威胁模型的上下文中查看这些最佳实践。

Preventative best practices

以下是针对 Amazon SQS 的预防性安全最佳实践。

Ensure queues aren't publicly accessible

除非您明确要求 Internet 上的任何人都可以读取或写入 Amazon SQS 队列,否则应确保队列不可公开访问(可供世界上的每个人或任何经过身份验证的 AWS 用户访问)。

  • Avoid creating policies with Principal set to "".

  • Avoid using a wildcard (*). Instead, name a specific user or users.

Implement least-privilege access

授予权限后,您可以决定这些权限的接收者、权限所针对的队列以及要允许这些队列使用的特定 API 操作。实施最低权限对于降低安全风险并减少错误或恶意意图的影响至关重要。

遵循授予最低权限的标准安全建议。也就是说,只授予执行特定任务所需的权限。您可以使用安全策略的组合来实现这一点。

Amazon SQS 使用创建者-使用者模型,并且需要三类用户账户访问:

  • Administrators – Access to creating, modifying, and deleting queues. Administrators also control queue policies.

  • Producers – Access to sending messages to queues.

  • Consumers – Access to receiving and deleting messages from queues.

有关更多信息,请参阅以下部分。

Use IAM roles for applications and AWS services which require Amazon SQS access

对于访问 Amazon SQS 队列的应用程序或 AWS 服务(例如 Amazon EC2),它们必须在其 AWS API 请求中使用有效 AWS 凭证。由于这些凭证不会自动轮换,因此您不应将 AWS 凭证直接存储在应用程序或 EC2 实例中。

您应使用 IAM 角色来管理需要访问 Amazon SQS 的应用程序或服务的临时凭证。在使用角色时,您不需要将长期凭证(如用户名、密码和访问密钥)分配给 EC2 实例或 AWS 服务(例如 AWS Lambda)。相反,角色可提供临时权限供应用程序在调用其他 AWS 资源时使用。

有关详细信息,请参阅 IAM 角色角色常见场景: 用户、应用程序和服务IAM 用户指南.

Implement server-side encryption

要减少数据泄漏问题,可以通过静态加密,使用存储在与消息存储位置不同的位置的密钥来对消息进行加密。服务器端加密 (SSE) 提供静态数据加密。Amazon SQS 在存储消息时将在消息级别对数据进行加密,并在您访问消息时为您解密消息。SSE 使用 AWS Key Management Service 中托管的密钥。只要您对请求进行身份验证并具有访问权限,访问加密队列和未加密队列之间就没有区别。

有关更多信息,请参阅 Encryption at restKey management

Enforce encryption of data in transit

如果没有 HTTPS (TLS),基于网络的攻击者便能使用中间人之类的攻击来窃听或操纵网络流量。仅允许使用队列策略中的 aws:SecureTransport 条件通过 HTTPS (TLS) 加密连接以强制请求使用 SSL。

Consider using VPC endpoints to access Amazon SQS

如果您的队列必须能够与之交互,但是绝对不能暴露在 Internet 上,则可使用 VPC 终端节点来仅为对特定 VPC 中的主机的访问进行排队。您可以使用队列策略控制从特定 Amazon VPC 终端节点或特定 VPC 对队列的访问。

Amazon SQS VPC 终端节点提供两种方式来控制对消息的访问:

  • You can control the requests, users, or groups that are allowed through a specific VPC endpoint.

  • You can control which VPCs or VPC endpoints have access to your queue using a queue policy.

有关更多信息,请参阅 Amazon Virtual Private Cloud endpoints for Amazon SQSCreating an Amazon VPC endpoint policy for Amazon SQS