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

AWS KMS服务主体账户隔离:任意账户SNS能否访问我的密钥?

关于KMS服务主体策略的权限范围问题

你提供的KMS策略语句如下:

{
    "Sid": "Allow use of the key by SNS",
    "Effect": "Allow",
    "Principal": {
        "Service": "sns.amazonaws.com"
    },
    "Action": [
        "kms:DescribeKey",
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*"
    ],
    "Resource": "*"
}

核心结论

这个策略不会允许任意AWS账户的SNS服务访问你的KMS密钥,只有代表你当前AWS账户内资源发起请求的SNS服务,才能获得授权。

具体解释

当KMS策略中指定服务类型主体(如sns.amazonaws.com)时,AWS会验证请求的上下文:只有当SNS是在执行你账户内的操作(比如加密你账户下的SNS主题消息)时,这个服务主体的身份才会被KMS认可。其他账户的SNS服务无法仅凭这个服务主体标识,就访问你的KMS密钥——服务主体的权限是和请求关联的AWS账户绑定的。

额外建议

如果要进一步缩小权限范围,只允许特定的SNS主题使用该密钥,可以在策略中添加Condition条件,通过aws:SourceArn指定目标主题的ARN,示例如下:

{
    "Sid": "Allow use of the key by specific SNS topic",
    "Effect": "Allow",
    "Principal": {
        "Service": "sns.amazonaws.com"
    },
    "Action": [
        "kms:DescribeKey",
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:your-topic-name"
        }
    }
}

内容的提问来源于stack exchange,提问作者Sujith C P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:25:00