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

跨AWS账号Comprehend分析任务输出S3文件下载KMS权限报错

问题解决:跨账号Comprehend输出S3文件下载的KMS 403权限错误

问题场景

在AWS账号A1中运行Comprehend分析任务,输出文件存储到AWS账号A2的S3桶中。任务完成后下载文件时触发403权限错误,报错信息:

software.amazon.awssdk.services.s3.model.S3Exception: User: user is not authorized to perform: kms:Decrypt on the resource associated with this ciphertext because the resource does not exist in this Region, no resource-based policies allow access, or a resource-based policy explicitly denies access (Service: S3, Status Code: 403, Request ID:id

注:创建Comprehend任务时未指定加密方式或KMS密钥。

根源分析

虽然Comprehend任务没指定加密,但目标S3桶(A2账号)大概率配置了默认服务器端加密(SSE-KMS),输出文件会自动继承桶的加密规则。此时下载文件需要同时具备:

  1. S3桶的读取权限(已配置,否则会报S3本身的权限错误)
  2. 对桶加密所用KMS密钥的kms:Decrypt权限(当前缺失,导致报错)

解决方案

1. 确认目标S3桶的加密配置

登录A2账号的S3控制台,找到对应桶:

  • 进入「加密」标签页,查看是否开启了「默认加密」
  • 确认加密类型为「Amazon S3 托管式密钥(SSE-KMS)」(而非SSE-S3,SSE-S3不会触发KMS权限问题)

2. 配置KMS密钥的资源策略(A2账号操作)

找到桶加密所用的KMS密钥(在S3加密配置中可查看密钥ARN),修改其资源策略,添加允许A1账号用户/角色执行kms:Decrypt的规则:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::A1账号ID:user/你的用户名"
      },
      "Action": "kms:Decrypt",
      "Resource": "*"
    }
  ]
}

替换其中的A1账号ID和用户名,若使用IAM角色下载,替换为角色ARN即可。

3. 配置A1账号用户/角色的IAM权限

在A1账号中,给执行下载操作的用户/角色添加IAM策略,允许其访问A2账号的KMS密钥:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:A2账号区域:A2账号ID:key/密钥ID"
    }
  ]
}

替换A2账号区域、账号ID和密钥ID为实际值。

4. 检查区域一致性

确保下载操作使用的AWS区域与KMS密钥所在区域完全一致(KMS是区域级资源,跨区域访问会直接报错)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:57:41