S3 跨账户通知

问题描述 投票:0回答:1

可以将 S3 事件从账户 A 发送到账户 B 中的 SQS 队列。但是,我能够实现此目的的唯一方法是打开 SQS 中

sendMessage
操作的权限以允许每个人访问。

是否可以将 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"
        }
      ]
    }
amazon-s3 notifications
1个回答
7
投票

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

"Principal": {
  "AWS": "*"  
},
...
"Condition": {
   "ArnLike": {          
   "aws:SourceArn": "arn:aws:s3:*:*:bucket-name"    
 }
}

*
主体似乎异常宽容,但可能的解释是
aws:SourceArn
不是一个可以被恶意用户欺骗的值,比方说,
aws:SourceIp

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

"Principal": {
  "Service": "s3.amazonaws.com"  
},

您仍然想包含

Condition
块。

© www.soinside.com 2019 - 2024. All rights reserved.