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

跨AWS账号跨区域能否调用其他账号的KMS密钥完成解密?

解决方案

问题根因

  • 当前配置的KMS密钥策略缺少SNS投递加密SQS必需的kms:Decrypt权限,现有动作列表中kms:Get*并不包含该动作
  • 仅授权账号B的根主体权限不符合跨账号服务调用的权限校验逻辑,需要明确授予SNS服务委托人对应密钥访问权限

修正配置步骤

1. 调整KMS密钥资源策略

仅保留SNS服务必需的最小权限,同时添加服务委托人授权,可额外增加条件限制仅允许指定账号B的SNS主题调用,避免权限过度宽泛,CDK代码修改如下:

encryptionMasterKey.addToResourcePolicy(new iam.PolicyStatement({
    effect: iam.Effect.ALLOW,
    actions: [
        "kms:GenerateDataKey",
        "kms:Decrypt"
    ],
    resources: ["*"],
    principals: [
        new iam.AccountPrincipal("<account B id>"),
        new iam.ServicePrincipal("sns.amazonaws.com")
    ],
    // 可选条件,收紧权限仅允许指定SNS主题调用,替换为实际SNS主题ARN即可
    conditions: {
        ArnLike: {
            "aws:SourceArn": "arn:aws:sns:us-west-2:<account B id>:<你的SNS主题名称>"
        }
    }
}));

2. 校验基础配置项

  • 确认使用的KMS密钥为对称客户托管密钥,SQS SSE不支持非对称密钥、AWS托管的SQS默认密钥(aws/sqs)的跨账号访问
  • 你当前未开启加密时可正常投递,说明SQS队列策略、SNS主题策略的跨账号访问权限已配置正确,无需额外修改

验证方法

配置部署完成后,向账号B的SNS主题发送测试消息,确认账号A的SQS队列可正常接收消息,CloudTrail中无KMS.AccessDeniedException日志即配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:54:03