Политика Amazon SNS по ограничению подписок не работает - PullRequest
0 голосов
/ 23 апреля 2020

Я создаю одну SNS topi c в учетной записи A со следующей политикой:

{
     "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"
          ]
       }
     }
  }

После создания вышеуказанной topi c и политики в учетной записи A. Затем я вхожу в учетную запись B через консоль и пытаясь подписать очередь C на мой SNS topi c, тогда также подписка прошла успешно, и очередь получает сообщение для подтверждения подписки! Но в идеале после вышеуказанной политики подписка на My SNS topi c.

должна быть доступна только для очереди A и очереди B.

1 Ответ

1 голос
/ 23 апреля 2020

Ваша политика отлично работала для меня, но мне пришлось изменить 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"
          ]
        }
      }
    }
  ]
}

Я смог подписаться на queue1 и queue2, но не queue3.

...