我们很高兴地宣布,Psono Terraform 提供程序的测试版现已在公开的 Terraform 注册表上线。
基础设施团队现在可以在其 Terraform 工作流程中,作为一部分,管理预先创建的 Psono 环境变量条目中的各个密钥。该提供程序能够保留现有值、生成新密码、轮换托管值、写入外部提供的值,以及通过 Terraform 临时资源读取机密。
在基础设施即代码中处理机密信息需要格外谨慎。使用敏感标志可以隐藏值不在普通 CLI 输出中显示,但它不一定会让该值避开 Terraform 的状态文件。Psono 提供程序利用 Terraform 的只写和临时资源功能来避免此问题,并且要求 Terraform 1.11 或更高版本。
该提供程序支持三种常见工作流:
这样可以将机密生命周期操作纳入 Terraform 流程,同时将实际值保存在 Psono 中。
该提供程序使用受限的 Psono API 密钥。您只需分配 Terraform 所需的环境变量条目,并授予所有操作的读取权限。创建、更新、轮换或删除密钥则还需要写入权限。该提供程序无需不受限制的 API 密钥,并且不能创建金库条目、文件夹或数据存储。
加密和解密在提供程序本地完成。HTTPS 证书验证不能被禁用,可以通过 PEM 格式的 CA bundle 添加私有证书颁发机构。生产系统应始终使用 HTTPS 的 Psono URL。
要求 Terraform 1.11 或更高版本。在 Terraform 配置文件中添加以下内容:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
通过环境变量配置凭据,而不是将其写入 Terraform 文件:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='REPLACE_WITH_API_KEY_ID'
export PSONO_API_SECRET_KEY='REPLACE_WITH_API_SECRET_KEY'
然后初始化工作目录:
terraform init
Terraform 将下载带签名的提供程序发行版,并验证其校验和签名。
下面的资源在已存在的 Psono 环境变量条目中管理 DB_PASSWORD:
resource "psono_environment_variable" "database_password" {
secret_id = var.psono_environment_variables_secret_id
name = "DB_PASSWORD"
length = 32
min_lower = 4
min_upper = 4
min_numeric = 4
min_special = 4
rotation_version = 1
}
如果密钥已存在,提供程序会采纳而不更改其值。如不存在,提供程序将在 Psono 中生成并存储新值。生成的值不会被受管资源返回,也不会进入 Terraform 状态。
当需要生成新值时,递增 rotation_version。这也会替换最初采纳或导入的值,因此执行轮换前应仔细审核变化。
可以使用 value_wo 将来自其他提供程序的临时值写入 Psono:
ephemeral "random_password" "database" {
length = 32
}
resource "psono_environment_variable" "database_password" {
secret_id = var.psono_environment_variables_secret_id
name = "DB_PASSWORD"
value_wo = ephemeral.random_password.database.result
value_wo_version = 1
}
该值仅在 Terraform 操作期间可用,不会被保存到 plan 或 state 文件中。当需要写入替代值时,请递增 value_wo_version。
销毁受管资源时,默认情况下会保留 Psono 中的密钥。这保护了那些 Terraform 只是采纳、而非创建的值。只有在 Terraform 需要在销毁或替换资源时显式删除密钥时,才设置 deletion_policy = "Delete"。
该提供程序为开源项目,现已可用:
测试版专注于环境变量条目和受限 API 密钥。这有助于保持权限最小化,避免不受限制的金库访问,并为安全地通过 Terraform 管理运维机密提供了实用的基础。