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

跨AWS账户使用query_export_to_s3导出RDS数据至S3时,如何指定目标账户的KMS密钥加密文件

跨AWS账户使用query_export_to_s3导出RDS数据至S3时,如何指定目标账户的KMS密钥加密文件

嘿,这个场景我之前帮不少用户处理过,刚好能给你清晰的解决步骤!

首先得确认你已经搞定了最关键的权限基础:你在账户B创建的KMS密钥,已经给账户A的相关IAM实体(比如RDS的服务角色,或者你用来执行导出操作的IAM身份)配置了kms:GenerateDataKey和kms:Decrypt权限——这点你提到已经做了,但还是建议再去KMS控制台的密钥权限页核对一下,别漏了必要的操作。

接下来就是核心操作:在执行query_export_to_s3的时候,直接指定账户B的KMS密钥ARN就行!这个命令本身支持KMS_KEY_ID参数,专门用来指定加密导出文件的密钥,步骤如下:

  • 第一步,先拿到账户B的KMS密钥ARN:你可以登录账户B的KMS控制台,找到你创建的那个密钥,复制它的ARN,格式一般是arn:aws:kms:你的区域:账户B的ID:key/密钥的UUID。
  • 第二步,在账户A的RDS数据库里执行导出命令时,把这个ARN作为最后一个参数传入。举个实际的SQL例子:
SELECT query_export_to_s3(
    'SELECT * FROM your_target_table', -- 你要导出的查询语句
    's3://your-bucket-in-accountB/exported-data.csv', -- 账户B的S3路径
    'us-east-1', -- 你的AWS区域,要和桶、密钥区域一致
    'CSV', -- 导出格式
    'HEADER', -- 是否包含表头
    '', -- 分隔符,默认是逗号,这里留空用默认
    '', -- 引号字符,默认双引号
    'arn:aws:kms:us-east-1:123456789012:key/abcdef-1234-5678-90ab-cdef12345678' -- 账户B的KMS密钥ARN
);

这里还要额外提醒几个容易踩坑的点:

  • 确保账户A的执行实体(比如RDS服务角色)有访问账户B S3桶的s3:PutObject权限,同时账户B的S3桶策略要允许这个实体写入,并且策略里要明确允许使用指定的KMS密钥进行加密(可以在桶策略的s3:PutObject动作里添加条件,关联这个KMS密钥的ARN)。
  • 如果账户B的S3桶开启了默认加密,不用担心,query_export_to_s3指定的KMS密钥会覆盖桶的默认加密设置,只要权限到位就没问题。
  • 导出完成后,你可以先下载一小部分文件测试,确认用账户B的KMS密钥能正常解密打开,没问题再导出全量数据。

这样操作后,导出的文件就会用账户B的KMS密钥加密,你在账户B里就能直接打开,完全符合你不能在A创建密钥给B的安全要求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 07:44:38