【问题标题】:Kinesis firehose writes to S3 but access deniedKinesis firehose 写入 S3 但访问被拒绝
【发布时间】:2021-10-06 13:32:48
【问题描述】:
  • 我设置了 Kinesis Firehose。
  • 使用 PUT 数据流。
  • 它将 CSV 数据写入 S3。
  • 这是跨账户写入,从一个 AWS 账户到 另一个。

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

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

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

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

疑难解答

我比较了我的 firehose 中的对象与他们的 firehose 中的对象之间的对象级权限: (其中每一个都来自我 S3 存储桶所在的账户中的不同账户)。

  1. 以下是我对 S3 存储桶中的(CSV、文本)对象的对象权限:

这些是我可以很好阅读的 S3 对象。

Grantee:对象所有者(外部帐户)规范 ID:4aXXXXXXedc8fd
对象:读取
对象 ACL:读取,写

Grantee:您的 AWS 账户 规范 ID:c43XXXXXXXX97958
对象:读取
对象 ACL:读取、写入

  1. 以下是其他团队注入存储桶的(Parquet JSON)对象的对象权限:

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

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

Grantee:对象所有者(外部帐户)规范 ID:2efXXXXXXd5e2d
对象:读取
对象 ACL:读取,写

Grantee:您的 AWS 账户 规范 ID:c43XXXXXXXX97958
对象:读取
对象 ACL:读取、写入

问题:

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

对象级权限看起来一样。

【问题讨论】:

    标签: amazon-s3 amazon-kinesis access-denied firehose


    【解决方案1】:

    我们应用了两个修复程序,并且成功了

    1. Firehose 使用的目标帐户中的角色需要授予 S3:PutObjectAcl。很早就检查过了,但重新检查后就消失了,所以又加回来了。

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

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 2012-09-11
      • 2021-07-27
      • 1970-01-01
      • 2020-09-30
      • 2020-08-07
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      相关资源
      最近更新 更多