

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

# Amazon SNS 主题策略
<a name="two-way-sms-iam-policy-auto"></a>

如果参数中未提供最终用户消息 SMS，Amazon SNS 主题需要相应的主题策略才能授予访问 AWS 最终用户消息 SMS 的*TwoChannelWayRole*权限。

```
{
  "Effect": "Allow",
  "Principal": {
    "Service": "sms-voice.amazonaws.com"
  },
  "Action": "sns:Publish",
  "Resource": "snsTopicArn"  
}
```

在前面的示例中，进行以下更改：
+ *snsTopicArn*替换为将发送和接收消息的 Amazon SNS 主题。

**注意**  
不支持 Amazon SNS FIFO 主题。

尽管 AWS 最终用户消息 SMS 数据已加密，但您可以使用使用 AWS KMS 密钥加密的 Amazon SNS 主题来提高安全级别。如果您的应用程序处理私有或敏感数据，这种增强的安全性会有所帮助。

您需要执行一些额外的设置步骤才能使用加密的 Amazon SNS 主题进行双向消息收发。

以下示例语句使用可选但推荐的`SourceAccount`和`SourceArn`条件来避免混淆副手问题，并且只有 AWS 最终用户消息 SMS 所有者帐户才有访问权限。有关混淆代理问题的更多信息，请参阅 *[IAM 用户指南](https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html)*中的[混淆代理问题](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html)。

首先，您使用的密钥必须是*对称*的。加密的 Amazon SNS 主题不支持非对称 AWS KMS 密钥。

其次，必须修改密钥策略以允许 AWS 最终用户消息 SMS 使用该密钥。将以下权限添加到现有密钥政策中：

```
{
    "Effect": "Allow",
    "Principal": {
        "Service": "sms-voice.amazonaws.com"
    },
    "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "accountId"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sms-voice:region:accountId:*"
        }
     }
}
```

有关编辑密钥政策的更多信息，请参阅《AWS Key Management Service 开发人员指南》中的**[更改密钥政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)。

有关 AWS KMS 使用密钥加密 Amazon SNS 主题的更多信息，[请参阅《*亚马逊简单通知*服务开发者指南》中的启用服务事件 AWS 源和加密主题之间的兼容性](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html#compatibility-with-aws-services)。