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

如何编写AWS SCP强制RDS使用指定KMS CMK加密?

解决AWS SCP强制RDS使用指定KMS CMK加密的问题

你的原策略存在两个关键问题:

  1. 参数引用错误:你通过aws:RequestTag/kms:KeyId标签指定KMS密钥,但RDS创建实例时,加密密钥是通过请求参数rds:KmsKeyId传递的,而非标签。
  2. 条件逻辑不严谨:StringNotEqualsIfExists的组合逻辑无法同时覆盖「未加密」「使用默认密钥」「使用非指定密钥」三种违规场景,导致默认加密操作无法被拦截。

修正后的SCP策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RequireRDSEncryptionWithSpecifiedCMK",
            "Effect": "Deny",
            "Action": [
                "rds:CreateDBInstance",
                "rds:CreateDBInstanceReadReplica"
            ],
            "Resource": "*",
            "Condition": {
                "Or": [
                    // 拦截未开启存储加密的请求
                    {
                        "Bool": {
                            "rds:StorageEncrypted": "false"
                        }
                    },
                    // 拦截开启加密但未指定KMS密钥(使用AWS默认密钥)的请求
                    {
                        "Null": {
                            "rds:KmsKeyId": "true"
                        }
                    },
                    // 拦截开启加密但使用非指定CMK的请求
                    {
                        "StringNotEquals": {
                            "rds:KmsKeyId": "arn:aws:kms:region:account-id:key/key-id"
                        }
                    }
                ]
            }
        }
    ]
}

策略说明

该策略通过Or条件组合,拒绝以下三类违规操作:

  • 未开启RDS存储加密的创建请求
  • 开启加密但未指定KMS密钥(自动使用AWS管理的默认密钥)的创建请求
  • 开启加密但使用的KMS密钥与指定ARN不匹配的创建请求

只有同时满足「开启存储加密」且「使用指定KMS CMK」的请求才能通过,完全实现你需要的强制加密要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:23:10