

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

# 适用于亚马逊 SNS 的 Security Hub CSPM 控件
<a name="sns-controls"></a>

这些 AWS Security Hub CSPM 控制措施评估亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 和资源。这些控件可能并非全部可用 AWS 区域。有关更多信息，请参阅 [按地区划分的控件可用性](securityhub-regions.md#securityhub-regions-control-support)。

## [SNS.1] SNS 主题应使用以下方法进行静态加密 AWS KMS
<a name="sns-1"></a>

**相关要求：** NIST.800-53.r5 CA-9(1)、 NIST.800-53.r5 CM-3(6), NIST.800-53.r5 SC-1 3、8、8 (1)、(10)、nist. NIST.800-53.r5 SC-2 800-53.r5 SI- NIST.800-53.r5 SC-2 7 (6)、 NIST.800-53.r5 SC-7 nist.800-171.r2 3.13.11、nist.800-171.r2 3.13.11、nist.800-171.r2 3.13.16

**类别：**保护 > 数据保护 > 加密 data-at-rest

**严重性：**中

**资源类型：**`AWS::SNS::Topic`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/sns-encrypted-kms.html](https://docs.aws.amazon.com/config/latest/developerguide/sns-encrypted-kms.html)

**计划类型：**已触发变更

**参数：**无

此控件可检查是否使用 AWS Key Management Service （AWS KMS）中管理的密钥对 Amazon SNS 主题进行静态加密。如果 SNS 主题未使用 KMS 密钥进行服务器端加密（SSE），则此控件将失败。默认情况下，SNS 使用磁盘加密来存储消息和文件。要传递此控件，必须选择改用 KMS 密钥进行加密。这将额外增加一层安全性，并提供更多的访问控制灵活性。

对静态数据进行加密可降低存储在磁盘上的数据被未经身份验证的用户访问的风险。 AWS需要 API 权限来解密数据，然后才能读取数据。我们建议使用 KMS 密钥加密 SNS 主题，以额外增加一层安全性。

### 修复
<a name="sns-1-remediation"></a>

要为 SNS 主题启用 SSE，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[为 Amazon SNS 主题启用服务器端加密（SSE）](https://docs.aws.amazon.com/sns/latest/dg/sns-enable-encryption-for-topic.html)。在使用 SSE 之前，还必须配置 AWS KMS key 策略以允许对主题进行加密以及对消息进行加密和解密。有关更多信息，请参阅《*Amazon 简单通知服务开发者指南》*中的[配置 AWS KMS 权限](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html#sns-what-permissions-for-sse)。

## [SNS.2] 应为发送到主题的通知消息启用传输状态记录
<a name="sns-2"></a>

**重要**  
Security Hub CSPM 于 2024 年 4 月取消了该控制权。有关更多信息，请参阅 [Security Hub CSPM 控件的更改日志](controls-change-log.md)。

**相关要求：**NIST.800-53.r5 AU-12、NIST.800-53.r5 AU-2。

**类别：**识别 > 日志记录

**严重性：**中

**资源类型：**`AWS::SNS::Topic`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/sns-topic-message-delivery-notification-enabled.html](https://docs.aws.amazon.com/config/latest/developerguide/sns-topic-message-delivery-notification-enabled.html)

**计划类型：**已触发变更

**参数：**无

此控件检查是否启用记录发送到端点的 Amazon SNS 主题的通知消息的传输状态。如果未启用邮件的传输状态通知，则此控件将失败。

日志记录是维护服务的可靠性、可用性和性能的重要组成部分。记录消息传送状态有助于提供操作见解，例如：
+ 了解消息是否已传输到 Amazon SNS 端点。
+ 识别从 Amazon SNS 端点发送到 Amazon SNS 的响应。
+ 确定消息停留时间（发布时间戳和移交到 Amazon SNS 端点之间的时间）。

### 修复
<a name="sns-2-remediation"></a>

要为主题配置传输状态日志，请参阅 *Amazon Simple Notification Service 开发人员指南*中的 [Amazon SNS 消息传输状态](https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html)。

## [SNS.3] 应标记 SNS 主题
<a name="sns-3"></a>

**类别：**识别 > 清单 > 标记

**严重性：**低

**资源类型：**`AWS::SNS::Topic`

**AWS Config 规则:**`tagged-sns-topic`（自定义 Security Hub CSPM 规则）

**计划类型：**已触发变更

**参数：**


| 参数 | 说明 | Type | 允许的自定义值 | Security Hub CSPM 默认值 | 
| --- | --- | --- | --- | --- | 
|  requiredTagKeys  | 被评估资源必须包含的非系统标签键列表。标签密钥区分大小写。 | StringList （最多 6 件商品）  | 1-6 个符合 [AWS 要求](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-conventions)的标签键。 |  No default value  | 

此控件可检查 Amazon SNS 主题是否具有带特定键的标签，这些键在 `requiredTagKeys` 参数中进行定义。如果主题没有任何标签键或未在 `requiredTagKeys` 参数中指定所有键，则此控件将失败。如果未提供 `requiredTagKeys` 参数，则此控件仅检查是否存在标签键，如果主题未使用任何键进行标记，则此控件将失败。自动应用并以 `aws:` 为开头的系统标签会被忽略。

标签是您分配给 AWS 资源的标签，它由密钥和可选值组成。您可以创建标签，以按用途、所有者、环境或其他标准对资源进行分类。标签可帮助您识别、组织、搜索和筛选资源。使用标签进行标记还可以帮助您跟踪负责操作和通知的资源所有者。使用标签进行标记时，可以将基于属性的访问权限控制（ABAC）作为授权策略实施，该策略根据标签来定义权限。您可以向 IAM 实体（用户或角色）和 AWS 资源附加标签。您可以为 IAM 主体创建单个 ABAC 策略或者一组单独的策略。您可以将这些 ABAC 策略设计为允许在主体的标签与资源标签匹配时进行操作。有关更多信息，请参阅 [ABAC 有什么用 AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)？ 在 *IAM 用户指南*中。

**注意**  
请勿在标签中添加个人身份信息（PII）或者其他机密或敏感信息。许多人都可以访问标签 AWS 服务，包括 AWS Billing。有关更多标记最佳做法，请参阅中的为[AWS 资源添加标签](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html#tag-best-practices)。*AWS 一般参考*

### 修复
<a name="sns-3-remediation"></a>

要为 SNS 主题添加标签，请参阅《Amazon Simple Notification Service Developer Guide》**中的 [Configuring Amazon SNS topic tags](https://docs.aws.amazon.com/sns/latest/dg/sns-tags-configuring.html)。

## [SNS.4] SNS 主题访问策略不应允许公共访问
<a name="sns-4"></a>

**类别：**保护 > 安全网络配置 > 不公开访问的资源

**严重性：**严重

**资源类型：**`AWS::SNS::Topic`

**AWS Config 规则：**[https://docs.aws.amazon.com/config/latest/developerguide/sns-topic-no-public-access.html](https://docs.aws.amazon.com/config/latest/developerguide/sns-topic-no-public-access.html)

**计划类型：**已触发变更

**参数：**无

此控件可检查 Amazon SNS 主题访问策略是否允许公共访问。如果 SNS 主题访问策略允许公共访问，则此控件将失败。

您可以使用具有特定主题的 Amazon SNS 访问策略来限制谁能使用该主题（例如，谁能向该主题发布消息、谁能订阅该主题等）。SNS 策略可以向其他 AWS 账户人或您自己的 AWS 账户用户授予访问权限。在主题策略的 `Principal` 字段中提供通配符（\$1）以及缺乏限制主题策略的条件可能会导致数据泄露、拒绝服务或攻击者向您的服务中注入不必要的消息。

**注意**  
此控件不会评估使用通配符或变量的策略条件。要生成 `PASSED` 调查发现，Amazon SNS 主题访问策略中的条件必须仅使用固定值，即不包含通配符或策略变量的值。有关策略变量的信息，请参阅《AWS Identity and Access Management 用户指南》**中的[变量和标签](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)。

### 修复
<a name="sns-4-remediation"></a>

要更新 SNS 主题的访问策略，请参阅《Amazon Simple Notification Service Developer Guide》**中的 [Overview of managing access in Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-overview-of-managing-access.html)。