brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Dec 04. 2020

517. AWS Config 이용한 S3관리 아키텍처


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   

한국으로 변경

ap-northeast-1



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에 더 이상 공개적으로 액세스 할 수 없다고 표시됨.



감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari