AWS 跨账号 KMS 授权

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 密钥共享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huainian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值