{"componentChunkName":"component---src-templates-blog-template-js","path":"/ko/blog/introducing-the-psono-terraform-provider","result":{"data":{"markdownRemark":{"html":"<h1>Psono Terraform Provider 소개</h1>\n<p>Psono Terraform Provider의 베타 릴리스가 이제 공개된\n<a href=\"https://registry.terraform.io/providers/psono/psono/latest\">Terraform Registry</a>에서 사용 가능하게 되었음을 기쁘게 안내드립니다.</p>\n<p>인프라 팀은 이제 사전에 생성된 Psono 환경 변수 엔트리 내의 개별 키를 Terraform 워크플로 일부로 관리할 수 있습니다. 이 프로바이더는 기존 값을 보존하고, 새로운 비밀번호를 생성하며, 관리되는 값을 로테이션하고, 외부에서 제공되는 값을 기록하며, 임시 Terraform 자원을 통해 비밀을 읽을 수 있습니다.</p>\n<h2>Terraform 상태에 비밀을 남기지 않는 비밀 관리</h2>\n<p>인프라를 코드로 관리할 때 비밀 처리에는 특별한 주의가 필요합니다. 민감(infra: sensitive) 플래그로 CLI 출력에서는 값을 숨길 수 있지만, 그렇다고 해서 그 값이 Terraform 상태 파일에는 남지 않는 것은 아닙니다. Psono 프로바이더는 Terraform의 쓰기 전용 및 임시(ephemeral) 기능을 활용하여 이러한 문제를 방지하며, Terraform 1.11 이상이 필요합니다.</p>\n<p>프로바이더는 다음 세 가지 일반적인 워크플로를 지원합니다:</p>\n<ul>\n<li>Psono에서 값을 생성하되 관리되는 자원을 통해 그 값을 반환하지 않기</li>\n<li>쓰기 전용 인자를 통해 값을 제공하여 Terraform이 plan이나 state에 저장하지 않게 하기</li>\n<li>기존의 값을 임시 자원(ephemeral)을 통해 읽고, 또 다른 임시 또는 쓰기 전용 상황에만 전달하기</li>\n</ul>\n<p>이렇게 하면 실제 값은 Psono에 안전하게 남기면서도, Terraform 내에서 비밀 수명주기 관리를 포함할 수 있습니다.</p>\n<h2>제한된 권한과 로컬 암호화</h2>\n<p>이 프로바이더는 제한된 Psono API 키를 사용합니다. Terraform이 접근해야 할 환경 변수 엔트리만 지정하고, 모든 작업에 대해 읽기 권한을 부여합니다. 키를 생성하거나 수정, 로테이션, 삭제하려면 추가로 쓰기 권한이 필요합니다. 이 프로바이더는 무제한 API 키가 필요하지 않으며, 볼트 엔트리나 폴더, 데이터스토어 생성을 할 수 없습니다.</p>\n<p>암호화 및 복호화 작업은 프로바이더 내부에서 로컬로 이루어집니다. HTTPS 인증서 확인은 비활성화할 수 없으며, 자체 인증서 기관도 PEM CA 번들로 추가할 수 있습니다. 운영 환경에서는 반드시 HTTPS Psono URL을 사용해야 합니다.</p>\n<h2>시작하기</h2>\n<p>Terraform 1.11 버전 이상이 필요합니다. Terraform 구성에 프로바이더를 추가하세요:</p>\n<pre><code class=\"language-hcl\">terraform {\n  required_version = \">= 1.11.0\"\n\n  required_providers {\n    psono = {\n      source  = \"psono/psono\"\n      version = \"~> 1.0\"\n    }\n  }\n}\n\nprovider \"psono\" {}\n</code></pre>\n<p>자격 증명은 Terraform 파일에 직접 추가하지 않고 환경 변수로 설정하세요:</p>\n<pre><code class=\"language-bash\">export PSONO_SERVER_URL='https://psono.example.com/server'\nexport PSONO_API_KEY_ID='REPLACE_WITH_API_KEY_ID'\nexport PSONO_API_SECRET_KEY='REPLACE_WITH_API_SECRET_KEY'\n</code></pre>\n<p>그 다음 작업 디렉터리를 초기화합니다:</p>\n<pre><code class=\"language-bash\">terraform init\n</code></pre>\n<p>Terraform은 서명된 프로바이더 릴리스를 다운받아 체크섬 서명을 검증합니다.</p>\n<h2>값 생성 및 로테이션</h2>\n<p>다음 자원은 기존 Psono 환경 변수 엔트리 내의 <code>DB_PASSWORD</code>를 관리합니다:</p>\n<pre><code class=\"language-hcl\">resource \"psono_environment_variable\" \"database_password\" {\n  secret_id = var.psono_environment_variables_secret_id\n  name      = \"DB_PASSWORD\"\n\n  length      = 32\n  min_lower   = 4\n  min_upper   = 4\n  min_numeric = 4\n  min_special = 4\n\n  rotation_version = 1\n}\n</code></pre>\n<p>키가 이미 존재한다면 프로바이더가 값을 변경하지 않고 기존 값을 채택합니다. 존재하지 않는다면 프로바이더가 새로운 값을 생성해 Psono에 저장합니다. 생성된 값은 관리 자원을 통해 반환되지 않으며, Terraform 상태에도 포함되지 않습니다.</p>\n<p>새로운 값 생성을 원할 때 <code>rotation_version</code>을 증가시키면 됩니다. 이 변경은 원래 채택되었거나 가져온(imported) 값까지도 교체하므로, 로테이션 변경 시에는 적용 전 검토를 권장합니다.</p>\n<h2>외부에서 공급된 값 쓰기</h2>\n<p>다른 프로바이더에서 생성된 임시 값을 <code>value_wo</code>로 Psono에 쓸 수 있습니다:</p>\n<pre><code class=\"language-hcl\">ephemeral \"random_password\" \"database\" {\n  length = 32\n}\n\nresource \"psono_environment_variable\" \"database_password\" {\n  secret_id        = var.psono_environment_variables_secret_id\n  name             = \"DB_PASSWORD\"\n  value_wo         = ephemeral.random_password.database.result\n  value_wo_version = 1\n}\n</code></pre>\n<p>값은 Terraform 동작 중에만 사용 가능하며 plan이나 state에는 저장되지 않습니다. 교체가 필요할 때는 <code>value_wo_version</code>을 증가시키세요.</p>\n<h2>기본값: 안전한 삭제</h2>\n<p>관리되는 자원을 파괴(destroy)하더라도 기본적으로 Psono의 키는 그대로 남아 있습니다. 이는 Terraform에서 채택(Adopt)만 했지 생성하지 않은 값을 보호하기 위한 설계입니다. 파괴 혹은 자원 교체 시 Psono에서 키를 명시적으로 삭제하려면, <code>deletion_policy = \"Delete\"</code>로 설정하세요.</p>\n<h2>지금 이용 가능</h2>\n<p>이 프로바이더는 오픈 소스이며 지금 바로 사용하실 수 있습니다:</p>\n<ul>\n<li><a href=\"https://registry.terraform.io/providers/psono/psono/latest\">Terraform Registry에서 프로바이더 설치하기</a></li>\n<li><a href=\"https://doc.psono.com/user/developer/terraform-provider.html\">Psono Terraform Provider 가이드 읽기</a></li>\n<li><a href=\"https://gitlab.com/esaqa/psono/psono-terraform-provider\">GitLab에서 소스 코드 보기</a></li>\n</ul>\n<p>이번 베타 릴리스는 의도적으로 환경 변수 엔트리와 제한된 API 키에 초점을 맞추고 있습니다. 이를 통해 권한을 최소화하고, 무제한 볼트 접근을 피하며, Terraform을 통한 안전한 운영 비밀 관리의 실용적인 기반을 제공합니다.</p>","frontmatter":{"date":"August 22, 2026","slug":"introducing-the-psono-terraform-provider","title":"Psono Terraform Provider 소개","description":"Terraform 상태에 비밀을 저장하지 않고도 Psono에서 생성된 값, 쓰기 전용 값, 임시 값을 직접 관리하세요.","author":"Sascha Pfeiffer","featuredImage":null}}},"pageContext":{"slug":"introducing-the-psono-terraform-provider","lang":"ko","langPathPrefix":"/ko"}},"staticQueryHashes":["2149092236","3128451518","3192060438"]}