

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

# 步骤 5：可选 - 授予用户发布 Amazon SNS 主题的权限
<a name="SendMessageToHttp.iam.permissions"></a>

默认情况下，只有主题所有者才拥有发布主题的权限。要允许其他用户或应用程序向该主题发布内容，您应使用 AWS Identity and Access Management (IAM) 授予该主题的发布权限。有关授予 IAM 用户 Amazon SNS 操作权限的更多信息，请参阅 [将基于身份的策略用于 Amazon SNS](sns-using-identity-based-policies.md)。

可以采取两种方式控制对主题的访问：
+ 添加策略至 IAM 用户或群组。向用户授予主题权限的最简单方式就是创建群组，向该群组添加适当策略，再向此群组添加用户。相比较而言，向群组添加或删除用户，比追踪您为单独用户而设定的各项策略要简单得多。
+ 添加策略至主题。如果您想向另一 AWS 账户授予主题权限，那么唯一的方法是添加策略，并且该策略必须具备您想向其授予权限的主要 AWS 账户 。

绝大多数情况下，您应使用第一种方法（通过向群组添加或删除适当用户的方式，向群组添加策略，管理用户权限）。如果您需要向另一账户的用户授予权限，请使用第二种方法。

如果您向 IAM 用户或群组添加了以下策略，则需要向该用户或群组中的成员授予对该主题执行`sns:Publish`操作的权限 MyTopic。

```
{
  "Statement":[{
    "Sid":"AllowPublishToMyTopic",
    "Effect":"Allow",
    "Action":"sns:Publish",
    "Resource":"arn:aws:sns:us-east-2:123456789012:MyTopic"
  }]
}
```

以下策略示例显示如何向主题授予另一账户权限。

**注意**  
当您授予其他人 AWS 账户 访问您账户中某项资源的权限时，也就是向对该资源拥有管理员级访问权限（通配符访问权限）的 IAM 用户授予权限。此操作将自动拒绝其他账户中的所有其他 IAM 用户访问您的资源。如果您想向该中的特定 IAM 用户授予 AWS 账户 访问您的资源的权限，则该账户或具有管理员级别访问权限的 IAM 用户必须将资源权限委托给这些 IAM 用户。有关跨账户委派的更多信息，请参阅*使用 IAM 指南*中的[启用跨账户访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/Delegation.html)。

如果您向账户 123456789012 MyTopic 中的某个主题添加了以下策略，则需要向账户 111122223333 授予对该主题执行操作的权限。`sns:Publish`

```
{
  "Statement":[{
    "Sid":"Allow-publish-to-topic",
    "Effect":"Allow",
      "Principal":{
        "AWS":"111122223333"
      },
    "Action":"sns:Publish",
    "Resource":"arn:aws:sns:us-east-2:123456789012:MyTopic"
  }]
}
```