【问题标题】:Amazon SNS Policy to restrict subscriptions is not working限制订阅的 Amazon SNS 策略不起作用
【发布时间】:2020-04-23 06:56:51
【问题描述】:

我正在使用以下策略在账户 A 中创建一个 SNS 主题:

{
     "Sid": "Give Access to Different Account Queues to subscribe to my topic",
     "Effect": "Allow",
     "Principal":{
       "AWS": "AccountId of Account B"
     },
     "Action": "sns:Subscribe",
     "Resource": "Arn of my SNS topic present in Account A",
     "Condition": {
       "StringEquals": {
          "sns:Protocol": "sqs"
       },
       "ForAllValues:StringEquals": {
          "sns:Endpoint": [
             "Arn of Queue A present in Account B", "Arn Queue B present in Account B"
          ]
       }
     }
  }

在帐户 A 中创建上述主题和策略后。然后,我通过控制台登录帐户 B 并尝试将队列 C 订阅到我的 SNS 主题,然后订阅也成功并且队列正在收到确认订阅的消息!但理想情况下,在上述策略之后,只有队列 A 和队列 B 应该能够订阅 My SNS 主题。

【问题讨论】:

  • 我想知道是否是因为请求订阅的用户有额外的sns: 策略与他们的 IAM 用户相关联?您可以使用没有 sns: 权限的 IAM 用户重试。如何请求订阅?
  • @JohnRotenstein 我正在使用 Cloud Formation 中的 subscriptionFilter 资源来订阅我的 SNS。该帐户也是根帐户
  • 如果SNS主题在Account-A,你是说Account-A中的任意队列都可以订阅,还是其他账号(Account-B)中的任意队列都可以订阅?
  • 如果话题在账户A,我们在账户B有两个队列!那么只有这两个队列可以订阅我的主题 A。
  • 但是在你的问题中你说“任何队列都能够从那个帐户订阅我的SNS主题”。我在问哪个帐户?有 SNS 的那个,还是“其他”帐户?

标签: amazon-web-services cloud amazon-iam amazon-sqs amazon-sns


【解决方案1】:

您的政策对我来说非常有效,但我不得不将 Principal 更改为引用 arn:aws:iam::ACCOUNT-B:root。 (我不记得我从哪里得到的,但它出现在某个阶段。)

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "Statement1",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT-B:root"
      },
      "Action": "sns:Subscribe",
      "Resource": "arn:aws:sns:ap-southeast-2:ACCOUNT-A:topic",
      "Condition": {
        "StringEquals": {
          "sns:Protocol": "sqs"
        },
        "ForAllValues:StringEquals": {
          "sns:Endpoint": [
            "arn:aws:sqs:ap-southeast-2:ACCOUNT-B:queue1",
            "arn:aws:sqs:ap-southeast-2:ACCOUNT-B:queue2"
          ]
        }
      }
    }
  ]
}

我可以订阅queue1queue2,但不能订阅queue3

【讨论】:

  • 是的,当我们将 accountId 分配给 Principal 时,它会自动更改为 root 帐户 arn!另外,我认为我的账户 B 有一些其他权限。我们可以拒绝账户 A 中的每个 sqs 订阅吗?
  • 在使用 StringNotEquals 明确拒绝其他 sqs arn 后,它起作用了!谢谢你
猜你喜欢
  • 1970-01-01
  • 2021-05-24
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-20
  • 2015-09-26
  • 2015-08-25
相关资源
最近更新 更多