AWS 跨账号 KMS 授权

发布于:2025-07-11 ⋅ 阅读:(31) ⋅ 点赞:(0)

AWS 跨账号 KMS 授权概述

跨账号 KMS(Key Management Service)授权允许一个 AWS 账户中的资源访问另一个 AWS 账户中的 KMS 密钥。这种机制在共享加密资源(如 S3 桶、EBS 卷或 Lambda 环境变量)时非常有用,同时保持密钥管理的集中控制。

跨账号 KMS 授权核心步骤

创建 KMS 密钥并配置权限策略
在密钥管理账户中创建 KMS 密钥,并在密钥策略中授予目标账户的访问权限。密钥策略需包含类似以下声明:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::目标账户ID:root"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
      ],
      "Resource": "*"
    }
  ]
}

目标账户 IAM 策略配置
在目标账户中,为需要访问 KMS 密钥的 IAM 角色或用户附加策略,明确允许对跨账号密钥的操作。例如:

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": "arn:aws:kms:区域:源账户ID:key/密钥ID"
  }
}

资源级权限配置(如 S3 桶)
若目标账户的资源(如 S3 桶)需使用跨账号密钥,需在资源策略中声明。例如 S3 桶策略需包含:

{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::目标账户ID:root"
  },
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::桶名/*",
  "Condition": {
    "StringEquals": {
      "s3:x-amz-server-side-encryption": "aws:kms",
      "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:区域:源账户ID:key/密钥ID"
    }
  }
}

验证与监控

  • 验证访问:通过目标账户的 IAM 实体尝试加密/解密操作,使用 AWS CLI 命令如:
    aws kms encrypt --key-id arn:aws:kms:区域:源账户ID:key/密钥ID --plaintext fileb://明文文件 --output text --query CiphertextBlob
    

  • 监控日志:启用 AWS CloudTrail 记录 KMS API调用,检查跨账号访问事件。

安全最佳实践

  • 最小权限原则:仅授予必要的密钥操作权限(如仅kms:Decrypt而非完全权限)。
  • 使用条件限制:在密钥策略中添加Condition块,限制访问来源 IP 或特定 IAM 角色。
  • 定期审计:通过 IAM Access Analyzer 检查密钥策略中的外部账户权限。

通过以上步骤,可实现安全且可控的跨账号 KMS 密钥共享。


网站公告

今日签到

点亮在社区的每一天
去签到