Psono Terraform Provider의 베타 릴리스가 이제 공개된 Terraform Registry에서 사용 가능하게 되었음을 기쁘게 안내드립니다.
인프라 팀은 이제 사전에 생성된 Psono 환경 변수 엔트리 내의 개별 키를 Terraform 워크플로 일부로 관리할 수 있습니다. 이 프로바이더는 기존 값을 보존하고, 새로운 비밀번호를 생성하며, 관리되는 값을 로테이션하고, 외부에서 제공되는 값을 기록하며, 임시 Terraform 자원을 통해 비밀을 읽을 수 있습니다.
인프라를 코드로 관리할 때 비밀 처리에는 특별한 주의가 필요합니다. 민감(infra: sensitive) 플래그로 CLI 출력에서는 값을 숨길 수 있지만, 그렇다고 해서 그 값이 Terraform 상태 파일에는 남지 않는 것은 아닙니다. Psono 프로바이더는 Terraform의 쓰기 전용 및 임시(ephemeral) 기능을 활용하여 이러한 문제를 방지하며, Terraform 1.11 이상이 필요합니다.
프로바이더는 다음 세 가지 일반적인 워크플로를 지원합니다:
이렇게 하면 실제 값은 Psono에 안전하게 남기면서도, Terraform 내에서 비밀 수명주기 관리를 포함할 수 있습니다.
이 프로바이더는 제한된 Psono API 키를 사용합니다. Terraform이 접근해야 할 환경 변수 엔트리만 지정하고, 모든 작업에 대해 읽기 권한을 부여합니다. 키를 생성하거나 수정, 로테이션, 삭제하려면 추가로 쓰기 권한이 필요합니다. 이 프로바이더는 무제한 API 키가 필요하지 않으며, 볼트 엔트리나 폴더, 데이터스토어 생성을 할 수 없습니다.
암호화 및 복호화 작업은 프로바이더 내부에서 로컬로 이루어집니다. HTTPS 인증서 확인은 비활성화할 수 없으며, 자체 인증서 기관도 PEM CA 번들로 추가할 수 있습니다. 운영 환경에서는 반드시 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을 증가시키면 됩니다. 이 변경은 원래 채택되었거나 가져온(imported) 값까지도 교체하므로, 로테이션 변경 시에는 적용 전 검토를 권장합니다.
다른 프로바이더에서 생성된 임시 값을 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을 증가시키세요.
관리되는 자원을 파괴(destroy)하더라도 기본적으로 Psono의 키는 그대로 남아 있습니다. 이는 Terraform에서 채택(Adopt)만 했지 생성하지 않은 값을 보호하기 위한 설계입니다. 파괴 혹은 자원 교체 시 Psono에서 키를 명시적으로 삭제하려면, deletion_policy = "Delete"로 설정하세요.
이 프로바이더는 오픈 소스이며 지금 바로 사용하실 수 있습니다:
이번 베타 릴리스는 의도적으로 환경 변수 엔트리와 제한된 API 키에 초점을 맞추고 있습니다. 이를 통해 권한을 최소화하고, 무제한 볼트 접근을 피하며, Terraform을 통한 안전한 운영 비밀 관리의 실용적인 기반을 제공합니다.