我在 AWS Secrets Manager 中存储了一个秘密,该秘密是使用 Terraform 模块部署的,该模块支持秘密轮换。我无权访问该模块的源代码,因此无法修改它。我想使用 Terraform 禁用秘密旋转。我应该使用哪种资源?
aws_secretsmanager_secret_rotation
需要如下所示的所有 3 个参数,并且没有任何参数来禁用旋转。 automatically_after_days
属性接受 1 到 365 之间的值,因此,传递 0 也不是一个选项。
resource "aws_secretsmanager_secret_rotation" "example" {
secret_id = aws_secretsmanager_secret.example.id
rotation_lambda_arn = aws_lambda_function.example.arn
rotation_rules {
automatically_after_days = 30
}
}
您可以完全跳过“aws_secretsmanager_secret_rotation”资源,terraform 将自动禁用旋转。
问题是 terraform 提供程序从 AWS SDK rotate-secret 调用以下 API。此 API 不提供任何禁用自动轮换并保留配置的选项。如果您想手动运行轮换,而不是通过计划作业自动运行,这将很有用。
您可以看到这是 AWS 的限制,因为如果您调用 cancel-rotate-secret 它会完全禁用轮换过程,并且不会更新主秘密资源中的任何标志。这意味着,它在 AWS 上的实现方式不允许在 terraform 中以我认为 AWS 组件和 AWS 资源之间存在一对一关系的方式实现。