目前,我正在使用 Terraform 和 Aws Secrets Manager 来存储和检索机密,我想了解我的实施是否安全,如果不安全,如何才能使其更安全。让我用我的尝试来说明。
In secrets.tf
我创建一个像这样的秘密(这需要通过定位来实现):
resource "aws_secretsmanager_secret" "secrets_of_life" {
name = "top-secret"
}
然后,我转到控制台并在 AWS Secrets Manager 中手动设置密钥。
然后我检索其中的秘密secrets.tf
like:
data "aws_secretsmanager_secret_version" "secrets_of_life_version" {
secret_id = aws_secretsmanager_secret.secrets_of_life.id
}
locals {
creds = jsondecode(data.aws_secretsmanager_secret_version.secrets_of_life.secret_string)
}
然后我继续使用该密钥(例如将它们导出为 K8s 密钥),例如:
resource "kubernetes_secret" "secret_credentials" {
metadata {
name = "kubernetes_secret"
namespace = kubernetes_namespace.some_namespace.id
}
data = {
top_secret = local.creds["SECRET_OF_LIFE"]
}
type = "kubernetes.io/generic"
}
值得一提的是我存储tf state
远程。我的实施安全吗?如果没有,我怎样才能让它更安全?
是的,我可以确认它是安全的,因为您完成了以下操作:
- 代码中的纯文本秘密。
- 您的秘密存储在专用的秘密存储中,该存储强制执行加密和严格的访问控制。
- 一切都在代码本身中定义。不需要额外的手动步骤或包装脚本。
- 秘密管理器支持轮换秘密,这在秘密被泄露的情况下非常有用。
我唯一想知道的是使用支持 s3 等加密的 Terraform 后端,并避免将状态文件提交到源代码管理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)