S3 위반이 발생되면 위반을 수정하고, 위반 시 SNS 알람을 받도록 해보자.
퍼블릭이 되면 안 되는 버킷에 대해 확인하고 자동 조치 하자.
AWS Config 규칙을 설정한다.
자동으로 제거하는 람다 함수를 트리거하는 Cloudwatch event규칙을 트리거하자.
아키?
S3-----------------AWS Config----- Cloudwatch Event규칙 -------- 람다 함수
<1> S3 현황 확인
<2> EC2 연결
<3> AWS Config 활성화하여 S3 버킷 모니터링
<4> Cloudwatch events 규칙 생성
<5> 람다로 public 자동 삭제
사전 작업
S3 2개 생성 , 2개 public , 태그 입력한다.
SNS 생성
<1> S3 현황 확인
1
s3
public bucket
private bucket
2
public bucket
속성> 태그 > Pub > 1
3
private bucket
속성> 태그 > Pub > 0 = 퍼블릭이 아님
<2> EC2 연결
ec2 연결
<3> AWS Config 활성화하여 S3 버킷 모니터링
s3 버킷으로 모니터링 대상 축소
aws configure
한국으로 변경
1
대상을 S3::Bucket으로 유형을 한정한다.
2
전송 채널 생성
알람 및 업데이트된 구성 상태를 전송한다.
config 결과를 저장하는 별도의 s3 버킷으로 지정하자
SNS ARN을 입력한다.
3
구성 레코드 시작
aws configservice start-configuration-recorder --configuration-recorder-name default
<4> Cloudwatch events 규칙 생성
1
config 규정 미준수시 Cloudwatch event로 보내기
퍼블릭 읽기 를 차단하는 규칙
퍼블릭 쓰기 를 차단하는 규칙
2
퍼블릭 읽기 를 차단하는 규칙
3
퍼블릭 쓰기 를 차단하는 규칙
5
config에 새 규칙 2개 추가
aws configservice put-config-rule --config-rule file://S3ProhibitPublicReadAccess.json
aws configservice put-config-rule --config-rule file://S3ProhibitPublicWriteAccess.json
6
services > config
규칙 확인
규칙 이름
퍼블릭 읽기 금지 ------------ 2개 미준수
퍼블릭 쓰기 금지 -------------1개 미준수
<5> 람다로 public 자동 삭제
1
cat lambda_function.py
2
모든 버킷을 스캔
사용자 지정 태그에 Pub 찾는다.
Pub 이 1이면 위반으로 잡는다.
람다는 ACL을 프라이빗으로 변경하고, SNS로 메시지를 전송한다.
3
서비스
lambda
파이선 코드에서. zip 생성
ssh에서 아래 실행
zip lambda_function.zip lambda_function.py
4
람다 생성
결과 중 function arn 복사한다.
나중에 사용
"FunctionArn": "arn:aws:lambda:ap-northeast-1:519579306380:function:RemoveS3
5
서비스 > 람다.
알람 수신 설정한다.
aws sns subscribe --topic-arn <ConfigSNSTopic> \
--protocol email --notification-endpoint <your-email-address>
// 메일 계정으로 가서 sns 메일 수신 컨펌을 해줘야 한다.
6
CloudWatch 이벤트 생성
람다 함수를 호출한다.
7
규칙 생성
aws events put-rule --name ConfigNonCompliantS3Event --event-pattern file://CloudWatchEventPattern.json
8
람다와 cloudwatch 이벤트 연결
9
람다에 클라우드 와치 트리거 권한 제공
10
정책 위반 수정 확인
aws configservice start-config-rules-evaluation \
--config-rule-names S3PublicReadProhibited S3PublicWriteProhibited
람다가 s3 검토 시작
문제 자동 수정
11
서비스
s3
확인
// private bucket에 더 이상 공개적으로 액세스 할 수 없다고 표시됨.
감사합니다.