Amazon web services 为什么SNS访问控制策略需要指定资源元素?它不是隐式的吗?

Amazon web services 为什么SNS访问控制策略需要指定资源元素?它不是隐式的吗?,amazon-web-services,amazon-sns,aws-policies,Amazon Web Services,Amazon Sns,Aws Policies,基于身份的策略不要求指定“主体”,因为它是隐式的。对SNS访问控制策略(基于资源的策略)应用相同的理由,为什么需要在策略中指定与“资源”相同的SNS主题?对于bucket,“资源”有助于缩小到特定的前缀等,但在SNS访问控制策略中使用(隐式)“资源”到底有什么意义呢?i、 e.主题ARN被指定为“资源”,但策略附加到同一主题。AWS文档中的SNS访问控制策略示例如下所示,以供参考 { "Statement": [{ "Sid": "g

基于身份的策略不要求指定“主体”,因为它是隐式的。对SNS访问控制策略(基于资源的策略)应用相同的理由,为什么需要在策略中指定与“资源”相同的SNS主题?对于bucket,“资源”有助于缩小到特定的前缀等,但在SNS访问控制策略中使用(隐式)“资源”到底有什么意义呢?i、 e.主题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"
  }]
}

定义策略语句的语法要求
Resource
NotResource
。发件人:

语句必须包含Resource或NotResource元素

所以你必须明确地提供它。SNS主题不使用任何特殊的策略语法,这将允许它们不具有
资源
组件


因此,我不认为有什么更多的。这只是对正确的策略声明的语法要求。

我更多地是从IAM策略中比较这一点,其中不需要Principal或NotPrincipal,因为它是隐式的-资源策略的语法似乎与IAM策略不一致。@Abhishekpalakkalkyliyath我认为两者之间存在一些混淆。它们有不同的目的,因此在第一个目的中不需要原则。我同意,但我觉得当策略附加到资源本身时(资源)策略中的资源名称是重复的——在这种情况下是SNS主题。@Abhishekpalakkalliyath我理解。但这是AWS很久以前做出的设计决策。会更好吗?可能是的。它会改变吗,也许不会。因此,我们必须暂时接受它。正确的,我也认为强制“资源”的原因可能是因为每个服务都有自己的资源集,并且有一些特定于资源类型的操作,例如:-在Bucket的情况下,一些操作适用于Bucket,而其他操作适用于Bucket中的对象。一个资源可以有子资源——在SNS主题的情况下不是这样,但AWS可能希望与“资源”元素保持一致,即他们不希望对没有子资源的资源在“资源”元素上做例外。