Amazon web services 向SQS队列订阅S3事件而不向世界公开SQS?
我正在努力完成一项我认为很简单的任务 我想将我的SQS队列配置为允许帐户中的S3存储桶发送消息,但不允许外部用户发送消息。(局外人是指不是我的AWS账户成员的任何委托人) 我唯一可以使用的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=*与
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" }
}
}