为什么SNS访问控制策略要求指定Resource元素-它不是隐式的吗?

问题描述

基于身份的策略不需要指定“主体”,因为它是隐式的。将相同的理由应用于SNS访问控制策略(这是基于资源的策略),为什么要求在策略中指定与“资源”相同的SNS主题?对于存储桶,“资源”有助于缩小到特定的前缀等,但是在SNS访问控制策略中使用(隐式)“资源”到底有什么意义呢?即,将主题ARN指定为“资源”,但将策略附加到同一主题。下面显示了AWS文档中的SNS访问控制策略示例,以供参考。

{
  "Statement": [{
    "Sid": "grant-1234-publish","Effect": "Allow","Principal": {
      "AWS": "111122223333"
    },"Action": ["sns:Publish"],"Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic"
  }]
}

解决方法

用于定义策略声明的语法需要ResourceNotResource。来自docs

声明必须包括Resource或NotResource元素。

因此您必须明确提供它。 SNS主题不使用任何特殊的策略语法,这将使它们不具有Resource组件。

因此,我认为没有更多的东西了。这只是正确的政策声明的语法要求