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

调用SSE-KMS加密S3对象get_object返回Access Denied问题排查

问题排查与解决方案

常见遗漏配置项

  • KMS密钥策略未授权Lambda角色:KMS权限需要IAM策略和KMS自身的密钥策略同时授权,仅给Lambda角色的IAM策略加kms:Decrypt权限不够,必须在对应KMS密钥的密钥策略中,添加允许Lambda执行角色调用kms:Decrypt的规则,这是该类报错最常见的原因。
  • KMS密钥ARN不匹配:你IAM策略中填写的KMS资源ARN,需要和S3对象实际加密使用的KMS密钥ARN完全一致。如果对象使用的是AWS托管的S3默认KMS密钥、其他自定义密钥,都会因为ARN不匹配导致权限校验失败。
  • S3桶策略拦截:如果S3桶配置了桶策略,需要确认桶策略没有拒绝Lambda角色的GetObject请求,常见的拦截规则包括限制访问来源VPC/IP、要求特定加密请求头、限制访问账号等。
  • Lambda角色权限边界限制:如果给Lambda绑定的IAM角色配置了权限边界,需要确认权限边界中也允许了kms:Decrypt和s3:GetObject操作。
  • VPC访问限制:如果Lambda部署在VPC内,需要确认已配置S3和KMS的VPC端点,且端点策略没有拦截对应操作请求。

具体解决步骤

  1. 确认加密密钥匹配:
    在S3控制台找到目标对象,进入「属性」标签查看服务器端加密配置,核对使用的KMS密钥ARN和IAM策略中填写的资源ARN完全一致。
  2. 配置KMS密钥策略:
    进入KMS控制台找到对应密钥,在密钥策略的JSON配置中添加如下授权语句,替换为你的Lambda执行角色ARN:
{
    "Sid": "AllowLambdaDecrypt",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/你的Lambda角色名"
    },
    "Action": "kms:Decrypt",
    "Resource": "*"
}
  1. 校验S3桶策略:
    检查目标S3桶的桶策略,排查是否存在匹配Lambda角色的Deny规则,移除不必要的拦截配置。
  2. 校验Lambda角色配置:
    确认Lambda绑定的IAM角色没有配置限制KMS、S3操作的权限边界,原有IAM策略中的s3:GetObject和kms:Decrypt权限配置逻辑正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:36:03