S3 跨账户通知

Jam*_*ook 7 notifications amazon-s3

可以将 S3 事件从账户 A 发送到账户 B 中的 SQS 主题。但是,我能够实现这一目标的唯一方法是打开 SQS 中 sendMessage 操作的权限以允许所有人访问。

是否可以将 S3 事件配置为将 S3 事件发送到不同的帐户,并对 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"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*bot 6

根据记录的示例,需要将授权授予 S3,而不是拥有存储桶的帐户。

"Principal": {
  "AWS": "*"  
},
...
"Condition": {
   "ArnLike": {          
   "aws:SourceArn": "arn:aws:s3:*:*:bucket-name"    
 }
}
Run Code Online (Sandbox Code Playgroud)

*校长显得异常宽容的,但有可能的解释是,aws:SourceArn是不是可能会被恶意用户,更多的比,说是伪造的值aws:SourceIp

相比之下,SNS 示例显示了这个主体,如果它适用于 SQS 通知,这似乎更合适:

"Principal": {
  "Service": "s3.amazonaws.com"  
},
Run Code Online (Sandbox Code Playgroud)

您仍然希望包含该Condition块。