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

如何通过AWS生成并一次性共享HMAC密钥与密钥值给第三方?

AWS生成并管理HMAC密钥用于第三方API签名的方案

关于选项2的误解纠正

你之前认为KMS生成的HMAC密钥值不会离开HSM,这个说法不完全正确:AWS KMS支持创建可导出的HMAC密钥,这类密钥允许你一次性获取明文密钥材料,并非所有HMAC密钥都被锁在HSM中。

选项2:AWS KMS生成可导出HMAC密钥(推荐)

这是满足你需求的最佳方式,AWS负责密钥的唯一性和随机性,同时支持获取明文密钥值,步骤如下:

  1. 创建可导出的HMAC密钥
    调用KMS的CreateKey API,指定关键参数:
    • KeySpec: 选HMAC_256(常用)或HMAC_512
    • KeyUsage: SIGN_VERIFY
    • Origin: AWS_KMS(让AWS生成密钥材料)
    • Exportable: true(核心参数,开启后允许导出明文)
    • 配置KeyPolicy,确保你的IAM角色拥有kms:GetKeyMaterial等必要权限
  2. 导出明文密钥材料
    调用GetKeyMaterial API获取明文密钥值,这一步建议只执行一次,将明文安全传递给第三方后,可保留密钥在KMS中,后续签名/验证可直接调用KMS的Sign/Verify API,无需再操作明文。
  3. 关联第三方与密钥
    将KMS密钥ID与第三方标识关联存储(仅存ID,不存密钥),方便后续管理。

选项1:应用端生成+AWS Secrets Manager存储

若选择自己生成密钥,可借助AWS Secrets Manager托管存储,无需存入自有数据库,流程如下:

  1. 生成HMAC密钥
    在应用端使用安全随机数生成器生成密钥材料(比如32字节的随机值用于HMAC-SHA256),确保生成逻辑符合密码学安全标准。
  2. 存储密钥到Secrets Manager
    调用CreateSecret API,为每个第三方创建唯一的Secret(命名建议如third-party/[partner-id]/hmac-key),将密钥材料以SecretString形式存储,开启加密保护(默认用KMS密钥加密)。
  3. 密钥使用与管理
    后续需使用密钥时,调用GetSecretValue获取明文,用完后立即销毁内存中的明文;Secrets Manager支持自动轮换密钥,若后续需要更换第三方密钥,可直接触发轮换。

方案对比

  • KMS生成方案:适合追求合规性、密钥安全性的场景,AWS保障密钥质量,后续可直接用KMS托管签名/验证。
  • 应用生成+Secrets Manager:更灵活,成本更低,适合对密钥生成逻辑有自定义需求的场景,但需自行确保密钥生成的安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:45:32