Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 亚马逊SNS限制订阅的策略不起作用_Amazon Web Services_Cloud_Amazon Iam_Amazon Sqs_Amazon Sns - Fatal编程技术网

Amazon web services 亚马逊SNS限制订阅的策略不起作用

Amazon web services 亚马逊SNS限制订阅的策略不起作用,amazon-web-services,cloud,amazon-iam,amazon-sqs,amazon-sns,Amazon Web Services,Cloud,Amazon Iam,Amazon Sqs,Amazon Sns,我正在帐户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 o

我正在帐户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才能订阅我的SNS主题。

您的策略对我来说非常有效,但我必须将
主体更改为reference
arn:aws:iam::ACCOUNT-B:root
。(我不记得是从哪里得到的,但它是在某个阶段出现的。)


我可以从
queue1
queue2
订阅,但不是
queue3
您的策略对我来说非常有效,但我不得不将
主体
更改为reference
arn:aws:iam::ACCOUNT-B:root
。(我不记得是从哪里得到的,但它是在某个阶段出现的。)


我可以从
queue1
queue2
订阅,但不能从
queue3
订阅,我想知道这是否是因为请求订阅的用户有其他与其IAM用户关联的
sns:
策略?您可以使用没有
sns:
权限的IAM用户重试。订阅是如何被请求的?@JohnRotenstein我正在云计算中使用subscriptionFilter资源订阅我的SNS。此外,帐户是根帐户如果SNS主题在帐户A中,您是说帐户A中的任何队列都可以订阅,还是其他帐户(帐户B)中的任何队列都可以订阅?如果主题在帐户A中,而我们在帐户B中有两个队列!然后只有这两个队列可以订阅我的主题A。但在你的问题中,你说“任何队列都可以从该帐户订阅我的SNS主题”。我在问那是哪个帐户?有SNS的用户,还是“其他”帐户?我想知道这是否是因为请求订阅的用户具有与其IAM用户关联的其他
SNS:
策略?您可以使用没有
sns:
权限的IAM用户重试。订阅是如何被请求的?@JohnRotenstein我正在云计算中使用subscriptionFilter资源订阅我的SNS。此外,帐户是根帐户如果SNS主题在帐户A中,您是说帐户A中的任何队列都可以订阅,还是其他帐户(帐户B)中的任何队列都可以订阅?如果主题在帐户A中,而我们在帐户B中有两个队列!然后只有这两个队列可以订阅我的主题A。但在你的问题中,你说“任何队列都可以从该帐户订阅我的SNS主题”。我在问那是哪个帐户?有SNS的帐户,还是“其他”帐户?是的,当我们将accountId分配给委托人时,它会自动更改为根帐户arn!此外,我认为在我的情况下,帐户B有一些其他权限。我们可以拒绝帐户A中的每个sqs订阅吗?它在使用StringNotEquals明确拒绝其他sqs arn之后起作用!谢谢是的,当我们将accountId分配给委托人时,它会自动更改为根帐户arn!此外,我认为在我的情况下,帐户B有一些其他权限。我们可以拒绝帐户A中的每个sqs订阅吗?它在使用StringNotEquals明确拒绝其他sqs arn之后起作用!谢谢你
{
  "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"
          ]
        }
      }
    }
  ]
}