You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨账号Kinesis Firehose写入S3的Parquet对象出现Access Denied问题

问题根因与解决方案

最高概率根因:KMS密钥权限缺失

你遇到的跨账号写入对象ACL一致但访问被拒的问题,90%以上是KMS加密密钥权限不匹配导致,触发逻辑如下:

  • Kinesis Firehose写入Parquet格式数据需要先做格式转换,转换完成后的对象默认使用Firehose所属AWS账号的托管KMS密钥(默认aws/kinesis-firehose或aws/s3托管密钥)进行SSE-KMS加密。
  • 你拥有该Parquet对象的读写ACL,仅代表你有权限读取S3对象的加密数据,但你没有其他团队账号下对应KMS密钥的kms:Decrypt权限,无法解密数据,所以返回Access Denied。
  • 你自己写入的CSV不需要格式转换、第三个账号的Firehose要么未启用SSE-KMS加密、要么使用了你账号的KMS密钥/给了你解密权限,所以访问正常。

其他可能根因

  • 你的S3桶未开启「桶所有者强制」对象所有权规则,且你的IAM策略/桶策略中存在仅允许访问本账号所有对象的限制;
  • 其他团队写入Parquet对象时附带了特殊标签/元数据,你的权限策略中存在对应禁止规则。

排查与修复步骤

  • 第一步:查看异常Parquet对象的属性-加密设置,确认加密方式是否为SSE-KMS、对应密钥ARN是否属于其他团队的AWS账号
  • 第二步:若确认是其他账号的KMS密钥,两种修复方案可选:
    • 让其他团队在对应KMS密钥的策略中,添加你账号下对应IAM实体的kms:Decrypt权限
    • 让其他团队修改Kinesis Firehose配置,指定使用你S3桶的默认加密密钥/你账号下的KMS密钥加密写入对象,同时给他们的Firehose IAM角色授予该密钥的kms:GenerateDataKey、kms:Encrypt权限
  • 第三步(可选优化):开启S3桶的「对象所有权-桶所有者强制」规则,所有写入桶的对象所有权自动归属于你的账号,避免跨账号所有权带来的权限隐患。

内容的提问来源于stack exchange,提问作者CyclingDave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:09:03