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

如何通过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控制台

  1. 进入AWS Secrets Manager控制台,点击「存储新的密钥」
  2. 填写密钥名称、描述,点击「下一步」
  3. 切换到「高级选项」,在「删除恢复窗口」中选择「365天」
  4. 确保「计划删除」未勾选(默认禁用)
  5. 完成后续步骤创建密钥
  6. (可选)进入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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:05:20