Configuration Drift
Configuration Drift는 예상치 못한 인프라 변경에 따른 사고를 의미한다.
AWS와 같은 클라우드 서비스에서 인프라 관리자로 일하고 있다고 가정해보자.
일반적으로 IAM을 통해 각 팀 또는 개인에게 필요한 만큼의 권한을 주고 인프라를 사용할 수 있게 할 것이다.
하지만, 실제로는 각자의 손에 도구를 쥐어줄 경우 모두가 이를 제대로 사용하리라는 법은 없기 마련이라고 한다.
예를 들어, 프로덕션 레벨에 있는 어떤 특정한 인스턴스를 권한을 갖고 있는 누군가가
실수로 삭제해서 제품에 영향을 미칠 경우 이를 어떻게 알아내고, 어떻게 고칠 수 있을까?
물론, 꼭 지우는 것만이 위험 요소가 아니다.
어떤 보안 그룹의 설정을 변경하여 시스템 전체에 영향을 미치는 경우는 또 어떨까?
이처럼, 예상치 못한 인프라 변경에 관한 사고와 그에 따라 미치는 영향을 Configuration Drift 라고 부른다.
그럼 어떻게 알아내고, 어떻게 고칠 수 있을까?
관련된 사건을 알아내는 방법은 접근 방법에 따라 조금씩 다르다고 한다.
AWS를 기준으로 접근 방법 및 도구를 알아보자.
AWS Config
잘못 설정된 것을 찾기 위한 도구로써, 바른 설정을 지정해놓고 찾아서 고칠 수 있게 만들어준다.
AWS CloudFormation Drift Detection
사고 감지를 위한 도구로써, 스택에서 드리프트 감지 작업을 수행하면
스택이 예정 템플릿 구성에서 드리프트되었는지 확인하고, 드리프트 감지를 지원하는
스택의 각 리소스에 관한 드리프트 상태 관련 세부 정보를 반환한다.
Terraform state files
위와 같은 관리형 서비스 보다 개발 방법에 가까운 솔루션이다.
정상 작동 상태를 파일로 저장하고, 상태 정의된 파일은 인프라의 실제 상태와의 비교 대상으로서
현재 상황을 진단/점검할 수 있습니다.
Terraform plan command
terraform plan 명령은 실행 계획을 생성하여 Terraform이 인프라에 적용할 변경 사항을 미리 볼 수 있도록 한다.
기본적으로, Terraform은 계획을 생성할 때 다음을 수행한다.
- 이미 존재하는 원격 개체의 현재 상태를 읽어 Terraform 상태가 최신 상태인지 확인한다.
- 현재 구성을 이전 상태와 비교하고 차이점을 확인한다.
- 적용되는 경우 원격 개체가 구성과 일치하도록 하는 일련의 변경 작업을 제안한다.
어떻게 방지할 수 있을까?
불변한(Immutable) 인프라스트럭처는 인프라 변경을 원천적으로 막을 수 있는 방법론이다.
실제로 인프라를 수동 설정으로 변경할 수 있지만, 다음의 실천적인 방법을 통해 애초에 그 가능성을 막는 것이다.
Immutable InfraStructure
- 한번 생성했으면 수정하지 않는다.
- 프로비저닝 및 배포했으면, 콘솔에 접속해서 수동으로 설정하지 않는다.
- 즉 변경은 삭제 후 생성을 의미한다.
- 인스턴스 내부 구성(사용자 스크립트 등)이 필요할 경우 AMI로 만들어 놓는다.
- 즉, Develop → Deploy → Configure가 아니라
- Develop → Configure → Deploy여야 합니다.
- 코드형 인프라(IaC)를 사용합니다.
참고 블로그
https://velog.io/@jm1225/Infrastructure-as-Code
'Infra > DevOps' 카테고리의 다른 글
분산 시스템에서 데이터를 전달하는 효율적인 방법 - 1 (1) | 2024.09.19 |
---|---|
[Ansible] Ansible 설치 가이드 (0) | 2024.07.29 |
[Docker] Docker 설치 가이드 (0) | 2024.07.29 |
[Jenkins] Jenkins 설치 가이드 (0) | 2024.07.29 |
[DevOps] 프로비저닝과 배포 (0) | 2024.07.20 |