Secrets Manager에 대한 Terraform 설정

IBM Cloud 의 Terraform을 사용하면 IBM Cloud 서비스를 예측 가능하고 일관성 있게 생성할 수 있으므로, ‘인프라스트럭처 애즈 코드(Infrastructure as Code, IaC )’ 원칙에 따라 복잡한 다계층 클라우드 환경을 신속하게 구축할 수 있습니다. IBM Cloud CLI나 API 및 SDK를 사용하는 것과 마찬가지로, HashiCorp 구성 언어(HCL)를 사용하여 Secrets Manager 인스턴스의 생성, 업데이트 및 삭제를 자동화할 수 있습니다.

IBM Cloud 솔루션에서 관리되는 Terraform을 찾으십니까? IBM Cloud® Schematics을 사용해 보십시오. Schematics 을 사용하면 익숙한 테라폼 스크립팅 언어를 사용할 수 있습니다. 하지만 Terraform 명령줄과 IBM Cloud 공급자 플러그인을 설정하고 유지 관리하는 것에 대해 걱정할 필요는 없습니다. Schematics 에서는 IBM Cloud 카탈로그에서 쉽게 설치할 수 있는 사전 정의된 Terraform 템플릿도 제공합니다.

Terraform 설치 및 Secrets Manager에 대한 리소스 구성

Terraform을 사용하여 권한을 작성하기 전에 다음 단계를 완료했는지 확인하십시오.

  • Secrets Manager 리소스를 작성하고 이에 대해 작업하기 위한 필수 액세스 가 있는지 확인하십시오.
  • Terraform CLI를 설치하고 Terraform에 대한 IBM Cloud 제공자 플러그인을 구성하십시오. 자세한 정보는 IBM Cloud 에 대한 튜토리얼을 참조하십시오. 플러그인은 이 태스크를 완료하는 데 사용되는 IBM Cloud API를 요약합니다.
  • 이름이 main.tf인 Terraform 구성 파일을 작성하십시오. 이 파일에서 HashiCorp 구성 언어를 사용하여 자원을 정의합니다. 자세한 내용은 Terraform 문서를 참조하십시오.
  1. 구성 파일 빌드를 완료한 후 Terraform CLI를 초기화하십시오. 자세한 정보는 작업 디렉토리 초기화를 참조하십시오.

    terraform init
    
  2. main.tf 파일에서 ibm_resource_instance 자원 인수를 사용하여 Secrets Manager 인스턴스를 작성하십시오.

    • 다음 예에서 Secrets Manager 인스턴스의 이름은 secrets-manager-london 이며 eu-gb 리젼에서 평가판 플랜으로 작성됩니다. user@ibm.com 에는 IAM 액세스 정책의 관리자 역할이 지정됩니다. 기타 지원되는 지역은 지역 및 엔드포인트 를 참조하십시오. 계획 옵션에는 trialstandard 가 포함됩니다.
        resource "ibm_resource_instance" "sm_instance" {
            name = "Secrets Manager-London"
            service = "secrets-manager"
            plan = "trial"
            location = "eu-gb"
            timeouts {
             create = "60m"
             delete = "2h"
         },
        }
    

    지원되는 속성의 전체 목록을 보려면 ibm_resource_instance의 내용을 참조하십시오.

    선택적으로 다음 명령을 실행하여 IBM Cloud에서 기존 Secrets Manager 인스턴스에 대한 정보를 검색하기 위한 데이터 소스를 작성할 수 있습니다.

         data "ibm_resource_instance" "sm_resource_instance" {
             name              = "Secrets Manager-London"
             location          = "eu-gb"
             service           = "secrets-manager"
         }
    

    지원되는 속성의 전체 목록은 ibm_resource_instance의 내용을 참조하십시오.

  3. main.tf 파일에서 자원을 프로비저닝하십시오. 자세한 정보는 Terraform을 사용하여 인프라 프로비저닝을 참조하십시오.

    1. terraform plan 를 실행하여 제안된 조치를 미리보기 위한 Terraform 실행 플랜을 생성하십시오.
         terraform plan
    
    1. terraform apply 를 실행하여 계획에 정의된 자원을 작성하십시오.
         terraform apply
    
  4. 자원을 작성할 때 사용할 Secrets Manager 인스턴스의 로컬 값을 정의하십시오.

         locals {
             instance_id = data.ibm_resource_instance.sm_resource_instance.guid
             region = data.ibm_resource_instance.sm_resource_instance.location
         }
    
  5. UI의 ‘ IBM Cloud ’ 리소스 목록에서 생성한 ‘ Secrets Manager ’ 인스턴스를 선택하고 인스턴스 ID를 확인해 둡니다.

  6. 액세스 정책이 정상적으로 지정되었는지 확인하십시오. 자세한 정보는 콘솔에서 지정된 액세스 권한 검토를 참조하십시오.

자원 드리프트 관리

Terraform을 사용하면 선언적 구성 파일을 사용하여 인프라의 라이프사이클을 안전하고 예측 가능하게 관리할 수 있습니다. 코드로서 인프라를 관리할 때 존재하는 한 가지 과제는 드리프트입니다. 드리프트는 Terraform 구성 변경사항 적용 외부에서 리소스가 추가, 삭제 또는 수정될 때 발생합니다. 예를 들어, 시크릿이 만료되거나 순환되는 경우입니다. 드리프트를 방지하려면 항상 Terraform을 사용하여 처음에 Terraform으로 작성된 리소스를 관리하십시오.

Terraform 상태 파일은 Terraform에서 관리하는 모든 리소스의 레코드입니다. 이를 수행하면 상태 파일이 실제 인프라에서 동기화되지 않거나 "드리프트" 되므로 Terraform에서 제어하는 리소스를 수동으로 변경하지 않아야 합니다. 사용자의 상태 및 구성이 사용자의 인프라와 일치하지 않는 경우 Terraform은 사용자의 인프라를 조정하려고 시도하며, 이는 의도하지 않게 리소스를 영구 삭제하거나 다시 작성할 수 있습니다.

Secrets Manager Terraform 제공자를 사용하는 경우 다음과 같은 경우에 드리프트가 발생할 수 있습니다.

  • 비밀 정보 만기
  • 시크릿 자동 회전
  • Terraform에서 제어하는 시크릿 관리자 리소스에 대한 외부 변경사항

Terraform 프로젝트를 설계할 때는 드리프트 및 수명 주기 변경을 관리하는 Terraform 모범 사례를 따라 Secrets Manager 리소스가 의도치 않게 파괴되거나 다시 생성되지 않도록 하세요.

다음에 수행할 작업

IBM Cloud에서 Terraform을 사용하여 첫 번째 Secrets Manager 서비스 인스턴스를 작성했으므로 Terraform 레지스트리에서 Secrets Manager 리소스 및 데이터 소스를 검토할 수 있습니다. 방법 섹션에 포함된 Terraform 단계에 따라 Secrets Manager 리소스를 관리하는 방법을 검토할 수도 있습니다. 예를 들어, Terraform을 사용하여 임의의 시크릿 을 작성하는 방법에 대한 지시사항을 따를 수 있습니다.

프로덕션 배포의 경우 IBM Cloud® Secrets Manager 엔터프라이즈급 구성을 제공합니다. Terraform IBM 모듈에 대해 알아보세요.