S3跨账户通知
问题描述:
可以将账户A中的S3事件发送到账户B中的SQS主题。但是,我能够实现这一目标的唯一方法是通过在SQS中打开sendMessage操作的权限以允许大家都可以访S3跨账户通知
是否可以将S3事件配置为将sendMessage配置到SQS主题上具有权限限制的其他帐户?
例如,如果我尝试限制对特定帐户的访问(例如,123456789012,当我尝试保存该事件时,在S3控制台中收到错误:“无法验证以下目标配置:目标上的权限队列不允许S3从这个桶”
{
"Version": "2012-10-17",
"Id": "sqs-permission",
"Statement": [
{
"Sid": "sqs-permision-statement",
"Effect": "Allow",
"Principal": {
"AWS": "123456789012"
},
"Action": "SQS:SendMessage",
"Resource": "arn:aws:sqs:us-east-1:210987654321:my-queue"
}
]
}
答
发布通知,根据该documented example,授权需要被授予S3,而不是帐户拥有桶。
"Principal": {
"AWS": "*"
},
...
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:*:*:bucket-name"
}
}
的*
委托人似乎非常宽容,但可能的解释是,aws:SourceArn
不是一个可能被恶意用户欺骗的值,比如说aws:SourceIp
。
相比之下,SNS示例说明了这一原理,它似乎更合适,它是否适合SQS通知:
"Principal": {
"Service": "s3.amazonaws.com"
},
你还是会希望包括Condition
块。