微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

aws:SourceAccount和aws:SourceOwner AWS SNS访问策略声明之间有什么区别

如何解决aws:SourceAccount和aws:SourceOwner AWS SNS访问策略声明之间有什么区别

AWS文档具有examples of different SNS access control配置。

有两个类似的配置示例:

first one允许从另一个帐户的S3存储桶向SNS主题发布通知

{
  "Effect": "Allow","Principal": { 
    "Service": "s3.amazonaws.com" 
  },"Action": "sns:Publish","Resource": "arn:aws:sns:us-east-2:111122223333:MyTopic","Condition": {
    "StringEquals": {
      "AWS:SourceAccount": "444455556666"
    }       
  }
}

second one允许将来自另一个帐户的SES电子邮件通知发布到SNS主题

{
  "Effect": "Allow","Principal": {
    "Service": "ses.amazonaws.com"
  },"Action": "SNS:Publish","Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic","Condition": {
    "StringEquals": {
      "aws:SourceOwner": "111122223333"
    }
  }
}

区别在于,第一个示例使用aws:SourceAccount,第二个示例使用aws:SourceOwner

文档中有一个专用段落称为“ aws:SourceAccount versus aws:SourceOwner”,但我不清楚这两个语句之间的区别。

请您说明aws:SourceAccountaws:SourceOwner政策声明之间的区别吗?

解决方法

仅当资源的所有者与该资源所属的帐户不同时,才能看到差异。这是一个高级设置。这是官方文档的摘录,其中提供了这种设置的示例。

...另一个帐户可能拥有您帐户中的资源。例如,信任帐户可能允许信任帐户创建新资源,例如在Amazon S3存储桶中创建新对象。

Source

,

1。 SourceOwner用于授予从特定帐户访问另一个AWS服务的权限

例如,我们要定义一个策略,该策略仅允许帐户111122223333中的SES向主题444455556666发布消息

{
  "Version": "2008-10-17","Id": "__default_policy_ID","Statement": [
    {
      "Sid": "__default_statement_ID","Effect": "Allow","Principal": {
        "Service": "ses.amazonaws.com"
      },"Action": "SNS:Publish","Resource": "arn:aws:sns:us-east-2
:444455556666:MyTopic","Condition": {
        "StringEquals": {
          "aws:SourceOwner": "111122223333"
        }
      }
    }
  ]
}

2。 SourceAccount用于授予IAM角色从帐户到主题的访问权限。

例如,我们要定义一个策略,该策略仅允许帐户444455556666将消息发布到主题111122223333

{ “声明”:[{ “效果”:“允许”, “校长”:{ “ AWS”:“ *” }, “ Action”:“ sns:Publish”, “资源”:“ arn:aws:sns:us-east-2 :111122223333:MyTopic“, “健康)状况”: { “ StringEquals”:{ “ AWS:SourceAccount”:“ 444455556666” } } }] }

现在对于情况1,如果您只有1个帐户,则没有意义,因为SES将使用与SNS相同的帐户。但是,如果您有更多的帐户,则可以带来好处,即只允许特定帐户的SES向您的主题发送消息。

希望有帮助。如果不清楚,请发表评论,我会尝试解释更多。

输入更多信息以使情况更清楚。

  1. 以S3发送SNS消息为例。 在这种情况下,AWS将使用内部S3帐户的凭证并代表您的 帐户 而不是来自 资源的电话> 。因此,我们需要使用aws:SourceAccount在策略中执行验证。

  2. 以SES发送SNS消息为例。 在这种情况下,AWS将使用内部S3帐户的凭证并代表您的 资源 (而不是来自 帐户)拨打电话> 。因此,我们需要在策略中使用aws:SourceOwner。

我建议您从文档中逐案参考,以了解需要使用哪一个。但我希望您现在了解其中两个之间的区别。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。