728x90
반응형
Terraform은 강력한 IaC(Infrastructure as Code) 도구로, 클라우드 인프라를 코드로 정의하고 자동화할 수 있게 해줍니다.
그러나 잘못 사용하면 심각한 보안 취약점을 만들 수 있습니다. 이 글에서는 Terraform을 사용할 때 반드시 알아야 할 보안 위험 요소들과, 이를 방지하기 위한 핵심 보안 베스트 프랙티스를 정리합니다.
Terraform 보안이란?
Terraform 보안이란, Terraform으로 작성된 인프라 코드에 대해 보안 사고를 방지하기 위한 설계, 구성, 운영상의 규칙과 절차를 의미합니다.
주요 보안 포인트
- 상태 파일 보안
- 자격 증명 및 비밀값 관리
- 접근 제어 (RBAC/IAM)
- 코드 취약점 사전 탐지 (정적 분석)
Terraform 사용 시 자주 발생하는 보안 리스크 7가지
1. 설정 오류 (Misconfiguration)
- S3 버킷이 퍼블릭으로 열림
- Security Group이 0.0.0.0/0 으로 설정됨
- RDS가 외부 접근 가능 상태로 배포됨
2. 자격 증명/비밀값 노출
- API Key, 토큰, 비밀번호 등이 코드에 하드코딩되어 Git에 푸시됨
3. 상태 파일(Local tfstate) 보안 미흡
- terraform.tfstate에 민감 정보 포함됨 → 로컬에 두면 유출 위험 높음
4. 접근 제어 부족
- 상태 파일, Terraform 실행 권한이 모든 사용자에게 열림
- 루트 권한으로 실행 시 권한 상승(Privilege Escalation) 가능
5. 내부자 위협
- 팀 내부의 악의적인 사용자나 실수로 인한 변경/삭제 위험
6. 서드파티 모듈 신뢰 문제
- 외부 모듈(Terraform Registry, GitHub 등) 사용 시 악성 코드 포함 가능성
7. 종속성 취약점
- 오래된 Terraform, Provider 플러그인 사용 → 알려진 취약점 방치
Terraform 보안을 위한 12가지 실천 방안
1. 상태 파일은 원격에 안전하게 저장하세요
- S3, Azure Blob, Terraform Cloud 등 원격 백엔드 사용
- 암호화, 버전 관리, 접근 제어 필수
backend "s3" {
bucket = "my-terraform-bucket"
key = "global/terraform.tfstate"
region = "ap-northeast-2"
encrypt = true
kms_key_id = "arn:aws:kms:..."
}
2. 보안 취약점은 코드 작성 단계에서 탐지하세요
- tfsec, Checkov, Terrascan 등 정적 분석 도구 사용
- CI/CD에 통합하여 Push 시 자동 검사되도록 구성
3. 비밀번호, API Key는 코드에 넣지 마세요
- AWS Secrets Manager, Azure Key Vault, HashiCorp Vault 사용
- 또는 환경 변수로 분리하고 Git에 포함되지 않도록 설정
4. 통신은 HTTPS로, 암호화된 채널을 사용하세요
- Terraform → 클라우드 간 통신은 반드시 TLS 기반으로 구성
5. 코드 리뷰와 테스트를 거치도록 하세요
- terraform plan으로 배포 전 변경 사항 반드시 확인
- Terratest 같은 도구로 통합 테스트 자동화 가능
6. 감사 로그(Audit Logging)를 남기세요
- AWS CloudTrail, Azure Monitor 등과 연동해 인프라 변경 기록 확보
- 누가 어떤 시점에 어떤 인프라를 바꿨는지 추적 가능
7. 최소 권한 원칙에 따라 IAM을 구성하세요
- Terraform이 사용하는 Role은 필요한 권한만 가지도록 제한
- Service Account 또는 전용 IAM Role 사용
8. VCS는 반드시 Git처럼 검증된 시스템을 사용하세요
- Git은 변경 이력 추적, 롤백, 감사에 매우 유리함
9. Terraform 버전, Provider 버전은 고정하세요
terraform {
required_version = ">= 1.2.0, < 2.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
10. 보안 정책을 코드로 관리하세요 (Policy as Code)
- OPA(Open Policy Agent), Sentinel, Terraform Compliance 활용
- 예: S3는 암호화 없으면 배포 차단
11. 상태 백업 및 재해 복구 전략을 수립하세요
- 상태 파일은 주기적으로 자동 백업하고, 복구 시나리오 문서화
12. 팀원 보안 교육도 반드시 필요합니다
- Terraform 사용자는 보안 의식, 민감 정보 보호, 보안 설정 원칙 등을 이해해야 함
마무리
Terraform은 인프라 운영을 빠르게 만들어주는 강력한 도구지만, 동시에 잘못 쓰면 대규모 보안 사고의 원인이 될 수 있습니다. 위에서 소개한 12가지 보안 원칙을 지키면, DevOps 뿐 아니라 DevSecOps로 가는 기반을 마련할 수 있습니다.
728x90
반응형
'DevSecOps > Terraform' 카테고리의 다른 글
Terraform 보안 분석 도구 tfsec 이란? (0) | 2025.06.27 |
---|