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

跨AWS账户Lambda拉取ECR镜像时KMS解密权限异常求助

跨账户Lambda拉取ECR镜像KMS权限问题排查方案

错误信息

Lambda can't decrypt the container image because KMS access is denied. Check the function's KMS key settings.
KMS Exception: AccessDeniedExceptionKMS Message: The ciphertext refers to a customer master key that does not exist,
does not exist in this region, or you are not allowed to access.

核心排查步骤

  • 验证区域一致性
    确认账户A/B/C中Lambda所在区域,与账户D里ECR绑定的KMS密钥区域完全匹配。KMS是区域级资源,跨区域无直接访问权限,哪怕权限配置正确也会触发该错误。

  • 检查KMS密钥策略的跨账户配置
    确保KMS密钥策略已正确添加账户A/B/C的Lambda执行角色ARN,且包含kms:Decrypt和kms:DescribeKey操作。必须使用完整角色ARN,避免仅用账户ID导致权限匹配错误。
    参考策略片段:

    {
      "Sid": "AllowCrossAccountLambdaAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::ACCOUNT-A-ID:role/YourLambdaRole-A",
          "arn:aws:iam::ACCOUNT-B-ID:role/YourLambdaRole-B",
          "arn:aws:iam::ACCOUNT-C-ID:role/YourLambdaRole-C"
        ]
      },
      "Action": ["kms:Decrypt", "kms:DescribeKey"],
      "Resource": "*"
    }
    
  • 确认Lambda角色的权限边界
    若账户A/B/C的Lambda角色设置了权限边界,需确保边界策略同样允许访问账户D的KMS密钥。权限边界会限制角色的最大权限,即使角色本身有允许策略,边界不授权也会导致访问被拒。

  • 验证ECR加密配置
    检查账户D的ECR仓库是否确实使用了指定的客户托管KMS密钥,而非AWS托管密钥或其他密钥。通过ECR控制台查看仓库加密设置,核对密钥ARN与配置的一致性。

  • 检查ECR跨账户访问权限
    Lambda执行角色需具备ECR跨账户操作权限:ecr:GetDownloadUrlForLayer、ecr:BatchGetImage、ecr:BatchCheckLayerAvailability。确保这些权限已添加到角色策略中,且资源指向账户D的ECR仓库ARN。

  • 确认KMS密钥状态
    检查账户D的KMS密钥是否处于启用状态,未被禁用或标记为计划删除。密钥禁用时,任何权限配置都无法生效。

  • 排查组织SCP或会话策略限制
    若使用AWS Organizations,检查服务控制策略(SCP)是否限制了账户A/B/C对跨账户KMS密钥的访问。同时,若Lambda角色附加了会话策略,需确认该策略未阻止相关KMS操作。

内容的提问来源于stack exchange,提问作者mik3fly-4steri5k

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:40:30