我們很高興宣布,Psono Terraform Provider 的測試版現已在公開的 Terraform Registry 上提供。
基礎設施團隊現在可以將個別金鑰作為 Terraform 工作流程的一部分,納入預先建立的 Psono 環境變數項目中管理。此 Provider 可以保留現有值、生成新密碼、輪換管理的值、寫入外部提供的值,並通過 Terraform 的臨時資源讀取秘密。
在基礎設施即程式碼(Infrastructure as Code)中處理秘密時需特別小心。將敏感標誌(sensitive flag)標記值僅能防止其顯示於 CLI 輸出,但並不會阻止這個值存進 Terraform 狀態檔。Psono Provider 利用 Terraform 的僅可寫入與臨時資源能力來迴避這個問題,並需要 Terraform 1.11 以上版本。
Provider 支援三種常見的工作流程:
如此可以在 Terraform 流程中安全地加入秘密生命週期管理,同時將實際值保存在 Psono 內。
本 Provider 使用受限的 Psono API 金鑰。你僅需指派 Terraform 所需的環境變數項目,並於所有操作中授予讀取權限。進行建立、更新、輪換、刪除金鑰時需額外給予寫入權限。Provider 並不需要無限制的 API 金鑰,也無法建立保險箱(vault)條目、資料夾或資料存儲(datastore)。
加密和解密操作皆在 Provider 端本地進行。HTTPS 憑證驗證無法被禁用,可透過 PEM CA 包增補私有憑證授權。正式環境務必使用 HTTPS 的 Psono 服務網址。
需要 Terraform 1.11 或更新版本。於 Terraform 設定檔中加入 Provider:
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 將下載已簽章的 Provider 版本,並驗證其雜湊簽名。
以下資源範例用於管理既有 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
}
如果金鑰已存在,Provider 會納管(adopt)其現有值,不會改變內容;若不存在,Provider 則會在 Psono 生成一個新值並儲存。所生成的值不會由受管資源返回,也不會寫入 Terraform 狀態檔。
當你希望 Terraform 生成替換值時,請遞增 rotation_version。這也會置換原本納管或匯入的值,因此進行輪換變更前請仔細審查。
可用於臨時密碼等,從其他 Provider 取得值並以 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 或狀態檔。欲讓 Terraform 覆寫新值,請遞增 value_wo_version。
銷毀(destroy)受管資源時,預設會保留其在 Psono 的金鑰,以保護 Terraform 僅納管(adopt)但未建立的值。僅於確定要從 Psono 移除金鑰(例如資源銷毀或替換時),才需設定 deletion_policy = "Delete"。
本 Provider 為開源專案且現已可用:
這個測試版專注於環境變數項目與受限的 API 金鑰,使權限控制精準、避免無限制的保險箱存取,並為 Terraform 安全納管營運秘密奠定實用基礎。