如何通过Terraform创建不会被删除的永久AWS Secrets Manager密钥?
如何创建不可删除的AWS Secrets Manager永久密钥
AWS Secrets Manager没有原生的“永久不可删除”密钥选项,但可以通过配置最长恢复窗口+IAM权限限制的组合方式,实现近似“密钥不会被删除/误删后可长期恢复”的需求。以下是具体实现方法:
使用Terraform创建
1. 配置Secret资源,设置最长恢复周期
在Terraform的aws_secretsmanager_secret资源中,将deletion_window_in_days设为AWS允许的最大值365(删除后1年内可恢复),同时默认禁用计划删除:
resource "aws_secretsmanager_secret" "permanent_secret" { name = "my-permanent-secret" description = "Permanent secret with 1-year recovery window" deletion_window_in_days = 365 }
2. 添加IAM策略阻止删除操作
通过IAM策略禁止任何实体对该密钥执行删除操作,从权限层面彻底防止误删:
resource "aws_iam_policy" "protect_secret" { name = "ProtectPermanentSecret" description = "Block deletion of the permanent Secrets Manager secret" policy = jsonencode({ Version = "2012-10-17" Statement = [ { Effect = "Deny" Action = "secretsmanager:DeleteSecret" Resource = aws_secretsmanager_secret.permanent_secret.arn Principal = "*" } ] }) } # 将策略附加到需要限制的角色/用户/组 resource "aws_iam_role_policy_attachment" "attach_protect_policy" { role = aws_iam_role.your_target_role.name policy_arn = aws_iam_policy.protect_secret.arn }
直接创建(控制台/CLI)
方法1:AWS控制台
- 进入AWS Secrets Manager控制台,点击「存储新的密钥」
- 填写密钥名称、描述,点击「下一步」
- 切换到「高级选项」,在「删除恢复窗口」中选择「365天」
- 确保「计划删除」未勾选(默认禁用)
- 完成后续步骤创建密钥
- (可选)进入IAM控制台,创建并附加拒绝
secretsmanager:DeleteSecret操作的策略,禁止删除该密钥
方法2:AWS CLI
创建密钥时指定最长恢复窗口:
aws secretsmanager create-secret \ --name my-permanent-secret \ --description "Permanent secret with 1-year recovery window" \ --secret-string '{"key":"value"}' \ --deletion-window-in-days 365
创建并附加禁止删除的IAM策略:
# 创建策略 aws iam create-policy \ --policy-name ProtectPermanentSecret \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "secretsmanager:DeleteSecret", "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-permanent-secret-*" } ] }' # 附加到目标角色(示例) aws iam attach-role-policy \ --role-name your-target-role \ --policy-arn arn:aws:iam:123456789012:policy/ProtectPermanentSecret
注意:AWS目前不支持无限期的恢复窗口,最长为365天。结合IAM权限限制是实现密钥“不可删除”的关键。
内容的提问来源于stack exchange,提问作者Arpit Tomar
相关产品推荐
相关产品推荐

