繁体   English   中英

Kinesis firehose 写入 S3 但访问被拒绝

[英]Kinesis firehose writes to S3 but access denied

  • 我设置了一个 Kinesis Firehose。
  • 使用 PUT 数据 stream。
  • 它将 CSV 数据写入 S3。
  • 这是写跨账户,从一个 AWS 账户到另一个账户。

这一切都很好。 我可以下载它写入 S3 的数据,我可以查询它。

  • 另一个团队创建了不同的 Firehose
  • 这是在他们的 AWS 账户中,用于将数据写入我的 S3 存储桶。
  • 数据到达,我可以在控制台中看到它。
  • 他们以 Parquet 格式编写。

出于某种原因,如果我尝试下载或查询他们写入 S3 的任何内容,我会收到“访问被拒绝”。

我从我自己的 firehose(在第三个不同的帐户中)将数据发送到 S3 存储桶,我可以看到很好。 只有来自他们的 Firehose 的 Parquet 格式数据才会被拒绝访问

故障排除

我比较了我的 firehose 的 object 和他们的 firehose 的 object 之间的对象级权限:(每个都来自不同的账户,进入我的 S3 存储桶所在的账户)。

  1. 以下是我注入 S3 存储桶的(CSV,文本)object 的 object 权限:

这些是我可以正常阅读的 S3 对象。

受赠人:Object 所有者(外部帐户)规范 ID:4aXXXXXXedc8fd
Object :读
Object ACL :读、写

受赠人:您的 AWS 账户规范 ID:c43XXXXXXXX97958
Object :读
Object ACL :读、写

  1. 以下是 (Parquet JSON) object 的 Object 权限,其他团队将其注入桶中:

这些是我被拒绝访问的对象。

它们具有完全相同的权限,显然 object 所有者帐户 ID 是不同的,因为它是从不同帐户的 firehose 中写入的。

受赠人:Object 所有者(外部帐户)规范 ID:2efXXXXXXd5e2d
Object :读
Object ACL :读、写

受赠人:您的 AWS 账户规范 ID:c43XXXXXXXX97958
Object :读
Object ACL :读、写

问题:

为什么我在其他团队的 Firehose 创建的 S3 对象上收到“访问被拒绝”?

对象级权限看起来是一样的。

我们应用了两个修复程序,并且有效

  1. Firehose 使用的目标帐户中的角色需要授予 S3:PutObjectAcl。 这是早期检查过的,但在重新检查后它已经消失了,所以它被添加回来了。

  2. 我们在发送帐户中关闭了 KMS 加密。 这是使用目标帐户无法访问的密钥。 这可以通过向写入数据的角色添加权限来解决,但为了调试,我们剥离了所有内容以使其作为基线工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM