[AWS-Security] 8.3. 리소스 구성 변경 추적
[AWS-Security] 8.3. 리소스 구성 변경 추적
1. CloudTrail의 한계
CloudTrail은 누군가 API를 호출한 행위(이벤트)의 타임라인을 제공하는 데는 적합하지만, 특정 리소스의 ‘상태(구성)가 정확히 언제 변경되었는지’ 파악하는 데는 한계가 있다.
1.1. CloudTrail을 통한 추적
- 특정 S3 버킷이 언제부터 외부에서 접근 가능한 퍼블릭 상태가 되었는지 알고 싶다.
- CloudTrail에서
PubBucketAcl이벤트를 검색해 볼 수는 있지만, 이 API가 호출되었다고 해서 반드시 ‘이때 처음 퍼블릭으로 전환되었다’고 확신할 수는 없다. (이미 퍼블릭인 상태에서 재호출 되었거나, 버킷이 생성될 때부터 퍼블릭으로 생성 되었을 수도 있다.) - 버킷의 최초 생성 시점부터 모든 권한 변경 내역을 하나하나 확인해야 한다.
1.2. AWS Config의 도입
- CloudTrail이 “누가 어떤 명령을 내렸는가?”를 기록한다면, AWS Config는 “리소스의 설정(구성)이 시간 경과에 따라 어떻게 변했는가?”에 대한 상태 타임라인을 기록하고 시각화해 준다.
2. 구성 타임라인으로 인한 변경 사항 파악
사고 조사나 감사(Audit) 시 AWS Config 콘솔을 사용하여 변경사항을 추적할 수 있다.
2.1. 1단계: Config 대시보드 확인 (인벤토리)
AWS Config가 활성화되면 대시보드에 계정에서 추적 중인 모든 리소스의 목록(S3 버킷, EC2 인스턴스, Security Group 등)이 표시된다.
여기서 조사하고자 하는 특정 리소스 유형(S3 Bucket)을 클릭한다.
2.2. 2단계: 리소스 상세 정보 및 타임라인 접근
조사할 특정 버킷 (my-bucket)을 선택하면 리소스 상세 페이지로 이동한다.
- 현재 리소스의 구성 요약(이름, ID, 생성일 등)을 볼 수 있다.
- 과거에 구성이 어떻게 변경되었는지 확인하기 위해 화면 우측 상단의 리소스 타임라인(Resource Timeline) 버튼을 클릭한다.
2.3. 3단계: 변경 사항(Diff) 대조 및 확인
타임라인 페이지에서는 리소스에 적용된 모든 변경 사항이 시간순으로 표시된다. 타임라인의 특정 지점을 클릭하면 해당 시점의 리소스 상태를 볼 수 있다.
- Changes(변경 사항) 탭 활용 : 이전 시점과 현재 시점 간의 설정 차이를 코드의 Diff(비교) 화면처럼 직관적으로 보여준다.
- 화면을 보면 기존(From)에는 없는
grantee: "Public",permission: "ReadAcp"등의 속성이 새롭게(To) 추가된 것을 명확히 확인할 수 있다. 즉, 이 시점에 버킷이 퍼블릭으로 전환되었음을 한눈에 확인할 수 있다.2.4. 4단계: CloudTrail과의 연동으로 최종 식별
AWS Config로 “언제, 어떻게 상태가 변했는지”를 찾아냈다면, 이제 “누가 이 변경을 수행했는지” 알아내야 한다.
- Config 타임라인 화면 하단에는 ‘CloudTrail Evnets 탭’이 함께 제공된다.
- 해당 구성 변경을 유발한 정확한 CloudTrail 이벤트(ex.
PutBucketAcl)와 이를 수행한 사용자 이름(ex. Dylan)을 직접 링크로 연결해 준다.
3. AWS Config 설정
AWS Config를 통해 리소스의 변경 사항을 추적하려면 가장 먼저 서비스가 기록을 시작하도록 활성화해야 한다.
- S3 버킷 생성 : Config가 수집한 방대한 구성 히스토리 정보(스냅샷)를 저장한 버킷을 생성한다.
- IAM Role 생성 : Config 서비스 자체가 AWS 계정 내의 리소스 구성을 읽고, S3 버킷에 기록을 쓸 수 있는 권한(서비스 연결 역할)을 부여한다.
- Config 활성화(Subscribe) : S3 버킷과 IAM Role을 지정하여 Config를 최종 활성화 한다.
1
2
3
4
5
6
7
8
9
10
11
# 1단계: Config 구성 정보를 저장할 신규 S3 버킷 생성
$ aws s3 create-bucket --bucket my-config-bucket
# 2단계: Config에 대한 서비스 연결(Service-linked) 역할 생성
$ aws iam create-service-linked-role --aws-service-name config.amazonaws.com
# 3단계: S3 버킷과 IAM 역할을 지정하여 AWS Config 활성화 (subscribe)
$ aws configservice subscribe \
--s3-bucket my-config-bucket \
--iam-role arn:aws:iam::123456789012:role/AWSServiceRoleForConfig \
--sns-topic my-config-topic
3.1. 리소스 규정 준수(Compliance) 정보
AWS Config의 타임라인은 단순히 ‘설정이 언제 바뀌었는가’를 넘어, 보안 상 매우 중요한 ‘규정 준수 타임라인’ 기능을 함께 제공한다.
- Config 규칙 : 리소스가 반드시 지켜야 할 보안 기준(정책)을 정의하는 기능이다. ex) S3 버킷은 퍼블릭 읽기(public-read)가 불가능해야 한다.
- 자동 상태 평가 : 범위 내의 리소스 구성이 변경될 때마다, Config는 이 Config 규칙을 위반했는지 자동으로 검사하고 상태를 업데이트 한다.
3.2. 규정 준수 타임라인의 장점
- Config 콘솔에서 특정 리소스의 ‘Compliance timeline’을 보면, 시간에 따른 정책 준수 여부를 시각적인 바(Bar) 형태로 확인할 수 있따.
- 버킷이 안전할 때는 ‘Compliant(규정 준수)’ 상태로 있다가, 누군가 퍼블릭 접근을 허용하는 순간 타임라인에 ‘Noncompliant(규정 미순수)’ 상태로 명확하게 표시된다.
- 이 Config 서비스를 통해 수많은 로그를 모두 확인할 필요 없이, 이 S3 버킷이 정확히 언제 위반되었는지 파악하고 신속하게 파악할 수 있다.
This post is licensed under CC BY 4.0 by the author.