Terraform 드리프트 탐지 및 조치
Terraform 드리프트는 운영 환경에서 소리 없는 위험을 초래합니다. 실제 인프라가 코드와 더 이상 일치하지 않을 때 발생합니다.
이러한 불일치는 서비스 중단을 야기하고, 보안 취약점을 만들며, 컴플라이언스 위반으로 이어집니다.
드리프트는 왜 발생할까요?
- 엔지니어가 클라우드 콘솔에서 긴급 핫픽스를 수행합니다.
- 장애 발생 시 팀에서 수동으로 변경을 수행합니다.
- IaC 워크플로우 외부에서 리소스를 생성합니다.
- 속도가 거버넌스 규칙보다 빨라집니다.
예시: 코드는 EC2 인스턴스를 t2.micro로 정의합니다. 엔지니어가 AWS 콘솔에서 이를 수동으로 t2.large로 변경합니다. 이제 코드와 실제 상태가 달라졌습니다. 이것이 바로 드리프트입니다.
탐지 방법: terraform plan 명령어를 실행하세요. 이를 통해 코드와 클라우드 사이의 차이를 확인할 수 있습니다. 단, Terraform이 추적하는 특정 리소스에 영향을 미치지 않는 일부 수동 변경 사항은 숨겨질 수 있음에 유의하세요.
방지 방법:
- 원격 백엔드(Remote Backend)를 사용하세요. 상태(state)를 AWS S3에 저장하세요. 이를 통해 팀 전체가 상태 파일을 안전하게 관리하고 버전별로 유지할 수 있습니다.
- GitOps를 활용하세요. Git을 단일 진실 공급원(Single Source of Truth)으로 만드세요. 모든 변경 사항은 반드시 풀 리퀘스트(Pull Request)를 거쳐야 합니다.
- 테스트를 자동화하세요. 인프라 변경 사항이 실제 적용되기 전에 검증하세요.
- 지속적으로 모니터링하세요. AWS Config 또는 Spacelift와 같은 도구를 사용하여 코드 외부에서 변경이 발생할 때 알림을 받으세요.
해결 방법: 드리프트를 발견하면 인프라를 다시 코드와 일치시켜야 합니다. terraform apply 명령어를 사용하여 수동 변경 사항을 덮어쓰고 의도한 상태로 복구하세요.
일관성이 시스템의 안정성을 유지합니다.
출처: https://dev.to/vprachi360/terraform-drift-detection-and-remediation-tactics-29bm
선택 사항 학습 커뮤니티: https://t.me/GyaanSetuAi