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

如何配置KMS密钥策略仅允许指定Lambda函数进行加解密操作

如何配置KMS密钥策略仅允许指定Lambda函数进行加解密操作

嘿,我懂你要的效果——只有特定Lambda能碰这个KMS密钥的加解密,其他人哪怕是你自己的IAM用户都不行对吧?那核心就是只给Lambda的执行角色开权限,同时把所有其他实体的相关权限全删掉,我给你一步步捋清楚:

首先,Lambda是靠它的执行角色来访问KMS的,所以你的密钥策略里只需要把这个角色的ARN作为授权主体,其他任何允许加解密的语句都得去掉,包括你之前写的那个userArn的条目,不然那个IAM用户还是能操作密钥。

这里给你一个完整的示例策略,直接替换成你的实际信息就行:

{
    "Version": "2012-10-17",
    "Id": "LambdaExclusiveAccessPolicy",
    "Statement": [
        {
            "Sid": "AllowLambdaExecutionRoleForCryptoOps",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/YourLambdaExecutionRoleARN"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt"
            ],
            "Resource": "*"
        },
        {
            "Sid": "OptionalKeyAdminAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/YourAdminUserARN"
            },
            "Action": [
                "kms:DescribeKey",
                "kms:UpdateKeyDescription",
                "kms:PutKeyPolicy",
                "kms:DisableKey",
                "kms:EnableKey",
                "kms:TagResource",
                "kms:UntagResource"
            ],
            "Resource": "*"
        }
    ]
}

给你拆解一下策略里的关键部分:

  • 第一条是核心规则:只允许你指定的Lambda执行角色执行kms:Encrypt和kms:Decrypt操作,把里面的角色ARN换成你实际用的那个Lambda执行角色的ARN就行。
  • 第二条是可选配置:如果你需要自己作为管理员能管理密钥(比如修改策略、开关密钥),可以留着,但绝对不能加kms:Encrypt或kms:Decrypt权限,这样你只能管密钥的配置,不能碰加解密操作。要是完全不需要任何人管理,直接删掉这条就行。

还有几个关键注意点要记牢:

  • 一定要把默认KMS密钥策略里允许账户根用户或者IAM管理员进行加解密的语句删掉,不然这些角色还是能绕过你的限制访问密钥。
  • Lambda函数必须绑定这个指定的执行角色,而且这个角色本身不需要额外配置KMS的权限——因为密钥策略已经直接给角色授权了,这是KMS的资源级授权,比IAM角色的权限优先级更高。
  • 配置完后记得测试:用Lambda调用KMS的加解密API应该成功,用你的IAM用户尝试调用的话,会收到权限拒绝的错误,这就说明配置生效了。

备注:内容来源于stack exchange,提问作者Vinay Kharayat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 14:28:07