测试环境清理时把 alias/order-pii 的主密钥删了,30 天等待期没人发现,等要恢复三个月前的备份时,KMS 报 KMSInvalidStateException,密钥已经不可恢复。日志里能对上时间点,这种反而好排。
密钥删除有等待期,但没有任何告警和复核流程。备份只备了密文,没有备份密钥材料或做跨区域副本。恢复演练从来没做过,直到真正需要恢复才发现密钥没了。这一点先确认清楚,后面就不用反复试。
aws kms describe-key --key-id alias/order-pii --query 'KeyMetadata.KeyState' aws kms list-keys --query 'Keys[?contains(KeyId, `order-pii`)]'
围绕「密钥备份缺失」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
处理上按这个顺序:给 KMS 密钥开启删除告警 等待期内每天通知;关键密钥做跨区域副本或导入自带密钥材料并离线备份;备份恢复演练按季度跑一次 带上密钥恢复步骤;把误删的那把密钥从副本恢复后重试解密。
结果对不对很好判断,恢复副本密钥后旧备份能解出明文 密钥状态从 PendingDeletion 回到 Enabled。
