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

AWS跨账号KMS密钥无法访问问题排查求助

解决AWS跨账号KMS DescribeKey NotFoundException问题

首先看你遇到的错误:Key 'arn:aws:kms:us-west-2:999:key/abc-def' does not exist,这里的核心问题是AWS CLI自动给你补充了当前会话的账号ID(999),但你的密钥实际归属账号111,所以才会出现找不到密钥的情况。下面是具体的排查和解决步骤:

1. 立即修正DescribeKey命令参数

当你只传入密钥ID abc-def 时,AWS CLI会默认使用当前账号(999)和区域来构造ARN,导致查找错误的密钥资源。你需要明确指定密钥所属的账号:

  • 方法一:使用完整的密钥ARN
    aws kms describe-key --key-id=arn:aws:kms:us-west-2:111:key/abc-def --region us-west-2
    
  • 方法二:使用账号ID/密钥ID的格式
    aws kms describe-key --key-id=111/abc-def --region us-west-2
    

记得加上--region us-west-2确保和密钥所在区域一致,避免因区域不匹配导致的查找失败。

2. 验证权限配置的完整性

虽然你的策略看起来逻辑正确,但可以做以下细节检查:

  • 确认KMS密钥策略的Principal范围:你授权了账号999的根用户,这意味着账号999下的所有IAM实体(包括你切换的角色)只要有对应的IAM权限就能访问,但要确保账号999的角色策略里的Resource确实指向账号111的密钥ARN(你当前的配置是正确的)。
  • 排查隐性拒绝规则:使用AWS IAM Access Analyzer分析账号111的KMS密钥策略和账号999的角色策略,查看是否存在冲突的拒绝语句,或者权限覆盖是否完整。
  • 确认密钥状态:登录账号111的KMS控制台,检查目标密钥是否处于启用状态,没有被禁用或标记为计划删除。

3. 验证角色切换是否生效

在执行DescribeKey命令前,先确认当前会话的身份是否正确:

aws sts get-caller-identity

输出的Account字段应该是999,Arn字段应该是你切换的目标角色ARN,确保没有使用错误的身份执行命令。

4. 检查CLI默认区域配置

如果你的AWS CLI默认区域不是us-west-2,即使命令里没指定区域,也会导致查找失败。可以通过以下命令查看默认区域:

aws configure get region

如果不是us-west-2,要么修改默认配置,要么在每次命令里加上--region us-west-2参数。

按照以上步骤操作,应该就能解决DescribeKey的NotFound问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:46:34