AWS CloudFormation 드리프트 감지 기능 사용해보기

CloudForamtion의 드리프트 감지를 이용하여 스택 리소스의 변경사항을 파악하고 유지관리 하는 방법에 대해 알아봅시다.
2022.02.21

소개

안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 CloudFormation의 기능인 드리프트 감지에 대해 알아보고 사용하는 방법에 대해 알아보도록 하겠습니다.

드리프트 란?

드리프트는 CloudFormation 템플릿에 정의된 스택 리소스의 예상되는 구성 값과 해당 CloudFormation 스택에 있는 이러한 리소스의 실제 구성 값 간의 차이입니다.

CloudFormation 드리프트 감지 기능 이란?

전체 스택 또는 특정 리소스의 드리프트를 감지하고 단 몇 분 안에 결과를 볼 수 있습니다. 이 결과에서 템플릿을 업데이트하거나 리소스를 규정 준수 상태로 되돌리는 데 필요한 정보를 얻을 수 있습니다.

템플릿에서 스택을 생성한 후 콘솔, CLI 또는 자체 코드에서 드리프트를 감지하고 현재 스택 구성을 스택 생성 또는 업데이트에 사용된 템플릿에 지정된 구성과 비교하고 차이를 보고하여 각 구성에 대한 자세한 정보를 제공하고있습니다.

드리프트 감시 서비스 대상

아래의 링크에서 확인해 주시기 바랍니다.

드리프트 감지 상태 코드

드리프트 감지 작업 상태 설명
DETECTION_COMPLETE 드리프트 감지를 지원하는 스택의 모든 리소스에 대해 스택 드리프트 감지 작업 완료
DETECTION_FAILED 스택에 있는 하나 이상의 리소스에 대해 스택 드리프트 감지 작업 실패
DETECTION_IN_PROGRESS 스택 드리프트 감지 작업이 현재 진행중


드리프트 상태 설명
DRIFTED 스택의 경우: 스택은 하나 이상의 리소스가 드리프트된 경우 드리프트된 것으로 간주됨
스택 인스턴스의 경우: 스택 인스턴스는 연결된 스택이 드리프트되면 드리프트된 것으로 간주됨
스택 세트의 경우: 하나 이상의 스택 인스턴스가 드리프트되면 스택 세트가 드리프트된 것으로 간주됨
NOT_CHECKED CloudFormation에서는 스택, 스택 세트 또는 스택 인스턴스가 예상 템플릿 구성과 다른지 여부를 확인하지 않음
IN_SYNC 각 지원되는 리소스의 현재 구성이 예상 템플릿 구성과 일치함, 드리프트 감지를 지원하는 리소스가 없는 스택, 스택 세트 또는 스택 인스턴스도 IN_SYNC 상태가됨


리소스 드리프트 상태 설명
DELETED 리소스가 삭제되었기 때문에 리소스가 예상 템플릿 구성과 다름
MODIFIED 리소스가 예상 템플릿 구성과 다름
NOT_CHECKED CloudFormation에서 리소스가 예상 템플릿 구성과 다른지 여부를 확인하지 않음
IN_SYNC 리소스의 현재 구성이 예상 템플릿 구성과 일치함


속성 차이 유형 설명
ADD 값이 어레이 또는 목록 데이터 유형인 리소스 속성에 추가됨
REMOVE 속성이 현재 리소스 구성에서 제거됨
NOT_EQUAL 현재 속성 값이 스택 템플릿에서 정의된 예상 값과 다름

드리프트 감지 시 고려 사항

  • 스택의 드리프트 감지를 수행하려면 사용자가 다음 권한을 보유해야 합니다.
    • cloudformation:DetectStackDrift
    • cloudformation:DetectStackResourceDrift
    • 위의 권한과 예를 들어 스택에 EC2가 포함되어있다면 「ec2:DescribeInstances」가 필요하게 됩니다. 각 리소스에 대한 읽기 권한이 필요하게 됩니다.
  • CloudFormation에서는 모든 리소스의 KMSKeyId 속성에 대해 드리프트 감지를 수행하지 않습니다.
  • CloudFormation에서는 결과로 나온 스택 리소스의 속성을 비교할 수 없습니다.
  • 결과로 나온 스택 리소스의 속성을 비교할 수 없습니다. 따라서 이러한 속성은 드리프트 감지 결과에 포함될 수 없습니다.

개별 스택 리소스 드리프트 감지 해보기

이번 테스트에서는 IAM을 CloudFormation을 이용하여 생성하여 사용했습니다.

기존 리소스에 포함된 정책

  • AmazonSSMFullAccess
  • AmazonS3FullAccess
  • AmazonWAFFullAccess

추가된 정책

  • AmazonEC2FullAccess

드리프트를 감지할 스택을 클릭하고 드리프트 감지 클릭합니다.

오른쪽 메뉴에서 스택탭의 드리프트를 클릭하면 위의 화면이 나타나게 됩니다.
리소스 드리프트 상태를 클릭하여 드리프트 감지를 수행합니다. 그 후 드리프트 세부 정보 보기를 클릭하여 상세내용을 확인합니다.

차이 섹션을 확인하면 추가된 정책 부분을 확인할 수 있습니다.

마무리

이번 블로그에서는 CloudFormation으로 스택을 생성하고 유지보수를 하는데에 큰도움이 되는 드리프트 감지에 대해 작성해보았습니다.
평소에 CloudFormation을 사용하여 AWS한경을 구축한 후 콘솔이나 CLI을 이용하여 리소스를 변경했을경우 스택을 업데이트 해야하거나 변경된 내용이 반영이 되지 않아 관리하기 힘든 경우가 있다면 드리프트 감지를 사용하시면 좋을것 같습니다.

참고 자료

AWS CloudFormationで手動で行った変更が検出可能になりました!!!

개별 스택 리소스의 드리프트 감지

New – CloudFormation Drift Detection

스택 및 리소스에 대한 비관리형 구성 변경 감지

드리프트 감지 상태 코드

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !