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

如何限制IAM用户使用KMS密钥?RDS加密CMK合规GDPR及政策问题

问题解答

核心需求可行性

你完全可以通过配置KMS密钥策略限制自身对目标密钥的使用权限,以此契合GDPR中数据访问最小权限的要求——比如禁止自己执行数据库加解密、快照创建/恢复这类依赖KMS密钥的操作。

当前密钥策略的问题

你的现有策略存在以下关键缺陷:

  • 权限过度开放:策略中使用kms:Create*、kms:Get*等通配符操作,涵盖了kms:CreateGrant、kms:GetKeyPolicy等高风险权限,甚至可能间接让你绕开限制执行加解密操作。
  • 缺少拒绝逻辑:仅靠允许语句无法实现“限制自身使用”的目标,必须添加Deny(拒绝)语句,明确禁止你执行kms:Decrypt、kms:Encrypt、kms:GenerateDataKey(RDS加密核心依赖操作),以及关联快照的kms:CreateGrant等敏感操作。
  • 资源范围不合理:resources = ["*"]会让权限作用于所有KMS密钥,你应该将资源限定为目标CMK的ARN,避免影响其他密钥。
  • 未授权RDS服务权限:RDS服务需要具备该CMK的使用权限才能完成数据库加密、快照操作,你的策略完全没有给RDS服务主体(如arn:aws:iam::你的账户ID:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS)授权,会导致RDS无法正常使用该密钥。

修正方向示例

符合需求的密钥策略需包含三部分核心逻辑:

  1. 授权RDS服务执行必要的KMS操作;
  2. 明确拒绝自身执行敏感操作;
  3. 保留自身对密钥的合规管理权限。

示例修正后的策略片段:

data "aws_iam_policy_document" "kms" {
  # 允许RDS服务使用密钥完成加密相关操作
  statement {
    effect = "Allow"
    principals {
      type        = "AWS"
      identifiers = ["arn:aws:iam::你的账户ID:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS"]
    }
    actions = [
      "kms:Encrypt",
      "kms:Decrypt",
      "kms:GenerateDataKey",
      "kms:CreateGrant",
      "kms:DescribeKey"
    ]
    resources = ["arn:aws:kms:你的区域:你的账户ID:key/目标CMK-ID"]
  }

  # 拒绝自身执行敏感的密钥操作
  statement {
    effect = "Deny"
    principals {
      type        = "AWS"
      identifiers = ["${local.arn}"]
    }
    actions = [
      "kms:Encrypt",
      "kms:Decrypt",
      "kms:GenerateDataKey",
      "kms:CreateGrant"
    ]
    resources = ["arn:aws:kms:你的区域:你的账户ID:key/目标CMK-ID"]
  }

  # 保留自身对密钥的管理权限(按需调整)
  statement {
    effect = "Allow"
    principals {
      type        = "AWS"
      identifiers = ["${local.arn}"]
    }
    actions = [
      "kms:DescribeKey",
      "kms:EnableKey",
      "kms:DisableKey",
      "kms:TagResource",
      "kms:UntagResource",
      "kms:ScheduleKeyDeletion",
      "kms:CancelKeyDeletion"
    ]
    resources = ["arn:aws:kms:你的区域:你的账户ID:key/目标CMK-ID"]
  }
}

注意:AWS权限评估中Deny优先级高于Allow,确保拒绝语句能覆盖所有敏感操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:40:17