Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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 向SQS队列订阅S3事件而不向世界公开SQS?_Amazon Web Services_Amazon S3_Amazon Sqs_Amazon Iam - Fatal编程技术网

Amazon web services 向SQS队列订阅S3事件而不向世界公开SQS?

Amazon web services 向SQS队列订阅S3事件而不向世界公开SQS?,amazon-web-services,amazon-s3,amazon-sqs,amazon-iam,Amazon Web Services,Amazon S3,Amazon Sqs,Amazon Iam,我正在努力完成一项我认为很简单的任务 我想将我的SQS队列配置为允许帐户中的S3存储桶发送消息,但不允许外部用户发送消息。(局外人是指不是我的AWS账户成员的任何委托人) 我唯一可以使用的SQS权限配置是Effect=Allow,Principals=*,Actions=SQS:SendMessage,Conditions=None 当我创建[S3事件->SQS]:无法验证以下目标配置时,任何其他权限都会导致我看到此错误。目标队列上的权限不允许S3从此存储桶发布通知。 Principals=*与

我正在努力完成一项我认为很简单的任务

我想将我的SQS队列配置为允许帐户中的S3存储桶发送消息,但不允许外部用户发送消息。(局外人是指不是我的AWS账户成员的任何委托人)

我唯一可以使用的SQS权限配置是
Effect=Allow,Principals=*,Actions=SQS:SendMessage,Conditions=None

当我创建[S3事件->SQS]:
无法验证以下目标配置时,任何其他权限都会导致我看到此错误。目标队列上的权限不允许S3从此存储桶发布通知。

Principals=*
与我有关从我可以找到的文档中,这意味着SQS队列可以从世界上的任何人访问。这是真的吗?这显然非常糟糕。

如何允许S3存储桶向SQS队列发送消息,而不允许匿名用户推送消息


我可以接受允许AWS帐户中的任何资源向SQS发送消息。我只需要阻止匿名AWS用户的访问。这是一个非常基本的要求,我很惊讶我找不到一个简单的方法来做到这一点。

您可以在文档中找到安全配置

   "Condition": {
      "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" }
   }
请注意,对于Amazon SNS和Amazon SQS IAM策略,您可以在策略中指定StringLike条件,而不是ArnLike条件

"Condition": {         
  "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" }
  }  
完整示例来自


将主体设置为桶的arn是否也会产生此错误?@hephalump如何将桶的arn添加为主体?S3存储桶arn不是
主体
属性的有效条目。
主体
上的工具提示如下:
允许或拒绝权限的人员的AWS账号
——现在,可能有一种方法可以将bucket指定为策略文档配置中的主体,但我认为它不起作用。从概念上讲,我不认为S3桶是主要的。(我可能错了…)这看起来很像IAM的政策。。。当您输入12位帐号时,也会产生错误?对于其他搜索者,您可以通过CLI使用
aws sqs set queue attributes--queue url--attributes policy=“JSON stringified policy document”
{
   "Sid": "example-statement-ID",
   "Effect": "Allow",
   "Principal": {
     "AWS": "*"  
   },
   "Action": [
    "SQS:SendMessage"
   ],
   "Resource": "SQS-ARN",
   "Condition": {
      "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" }
   }
  }