本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
默认情况下,只有主题所有者才拥有发布主题的权限。要允许其他用户或应用程序向该主题发布内容,您应使用 AWS Identity and Access Management (IAM) 授予该主题的发布权限。有关授予 IAM 用户 Amazon SNS 操作权限的更多信息,请参阅 将基于身份的策略用于 Amazon SNS。
可以采取两种方式控制对主题的访问:
-
添加策略至 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 指南中的启用跨账户访问。
如果您向账户 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"
}]
}