Amazon SNS 主题的权限
不支持加密的 Amazon SNS
AWS Config 不支持加密的 Amazon SNS 主题。
本主题介绍如何配置 AWS Config 以传输其他账户拥有的 Amazon SNS 主题。AWS Config 必须拥有向 Amazon SNS 主题发送通知所需的权限。
当 AWS Config 控制台为您创建新的 Amazon SNS 主题时,AWS Config 会授予必要的权限。如果您选择现有 Amazon SNS 主题,请确保 Amazon SNS 主题包含所需的权限并遵循安全最佳实践。
不支持跨区域的 Amazon SNS 主题
AWS Config 目前仅支持在同一 AWS 区域和跨账户进行访问。
目录
使用 IAM 角色时 Amazon SNS 主题的必需权限
您可以将权限策略附加到不同账户拥有的 Amazon SNS 主题。如果要使用另一个账户中的 Amazon SNS 主题,请确保将以下策略附加到现有 Amazon SNS 主题。
{ "Id": "Policy_ID", "Statement": [ { "Sid": "AWSConfigSNSPolicy", "Action": [ "sns:Publish" ], "Effect": "Allow", "Resource": "arn:aws:sns:region:account-id:myTopic", "Principal": { "AWS": [ "account-id1", "account-id2", "account-id3" ] } } ] }
对于 Resource 键,account-id 为主题所有者的 AWS 账号。对于 account-id1、account-id2 和 account-id3,使用 AWS 账户将数据发送到 Amazon SNS 主题。您可以用适当的值替换 region 和 myTopic。
AWS Config 向 Amazon SNS 主题发送通知时,它会首先尝试使用 IAM 角色,但是如果该角色或 AWS 账户无权向该主题发布内容,则尝试会失败。在这种情况下,AWS Config 将再次发送通知,这次是作为 AWS Config 服务主体名称(SPN)发送。发布成功之前,主题的访问策略必须授予 sns:Publish 对 config.amazonaws.com 主体名称的访问权限。如果 IAM 角色无权向 Amazon SNS 主题发布内容,则必须按下一节中所述,在 Amazon SNS 主题中附加访问策略,以授予 AWS Config 访问该主题的权限。
使用服务相关角色时 Amazon SNS 主题的必需权限
AWS Config 服务相关角色无权访问 Amazon SNS 主题。因此,如果您使用服务相关角色(SLR)设置,AWS ConfigAWS Config 会将信息作为 AWS Config 服务主体发送。您需要按以下所述在 Amazon SNS 主题中附加访问策略,以授予 AWS Config 向 Amazon SNS 主题发送信息的权限。
对于同账户设置,当 Amazon SNS 主题和 SLR 位于同一账户中,并且 Amazon SNS 策略授予 SLR“sns:Publish”权限时,您无需使用 AWS Config SPN。以下权限策略和安全最佳实践建议适用于跨账户设置。
授予 AWS Config 对 Amazon SNS 主题的访问权限
此策略允许 AWS Config 向 Amazon SNS 主题发送通知。要授予 AWS Config 从其他账户访问 Amazon SNS 主题的权限,您需要附加以下权限策略。
注意
作为安全最佳实践,强烈建议通过限制对 AWS:SourceAccount 条件中列出的账户的访问来确保 AWS Config 仅代表预期用户访问资源。
{ "Id": "Policy_ID", "Statement": [ { "Sid": "AWSConfigSNSPolicy", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:region:account-id:myTopic", "Condition" : { "StringEquals": { "AWS:SourceAccount": [ "account-id1", "account-id2", "account-id3" ] } } } ] }
对于 Resource 键,account-id 为主题所有者的 AWS 账号。对于 account-id1、account-id2 和 account-id3,使用 AWS 账户将数据发送到 Amazon SNS 主题。您可以用适当的值替换 region 和 myTopic。
您可以使用上述 Amazon S3 主题策略中的 AWS:SourceAccount 条件来限制 AWS Config 服务主体名称(SPN),仅在代表特定账户执行操作时与 Amazon S3 主题进行交互。
AWS Config 还支持 AWS:SourceArn 条件,该条件限制 AWS Config 服务主体名称(SPN)仅在代表特定 AWS Config 传输通道执行操作时与 S3 存储桶进行交互。使用 AWS Config 服务主体名称(SPN)时,AWS:SourceArn 属性将始终设置为,arn:aws:config:sourceRegion:sourceAccountID:*其中 sourceRegion 是传输通道所在的区域,sourceAccountID 是包含该传输通道的账户 ID。有关 AWS Config 传输通道的更多信息,请参阅管理传输通道。例如,添加以下条件以限制 AWS Config 服务主体名称(SPN)仅代表账户 123456789012 中 us-east-1 区域中的传输通道与您的 S3 存储桶进行交互:"ArnLike":
{"AWS:SourceArn": "arn:aws:config:us-east-1:123456789012:*"}。
Amazon SNS 主题故障排除
AWS Config 必须具有将通知发送到 Amazon SNS 主题的权限。如果 Amazon SNS 主题无法接收通知,请验证 AWS Config 代入的 IAM 角色是否具有必须的 sns:Publish 权限。