Adding Security into DevOps (awssecworkshops.com)
Adding Security into DevOps
Overview Welcome to the world of DevSecOps! You have heard of DevOps. Nowadays, DevSecOps is becoming more popular. How can Security organizations enable developers build security into their products and services? In this workshop, you will experience how
devops.awssecworkshops.com
이번에는 개발환경에서의 보안을 알아보는 workshop이다.
통상 개발환경에서늬 워크샵이라고 하면 개발한 소스가 배포될 때, 취약점 점검을 하는 것을 말한다.
□ 실습 목적
개발자가 개발한 소스를 배포하기 이전에 보안을 유지(취약점 점검)해야 한다.
□실습 시나리오
1. 개발/배포는 AWS Codepipeline을 사용한다.
2. S3는 코드 레파지토리가 된다.
3. 개발자는 개발한 소스를 AWS CloudFormation에 배포하려고 한다.
4. 배포하기 이전에 개발한 소스에 대한 보안 점검을 해야 한다. <<< Keypoint
□ 실습 준비물
AWS Codepipline에 대한 기본 이해
□ 실습 목표 아키텍처
S3에 Commit 된 소스를 "정적 분석" 한 다음에 최종적으로 사람이 승인처리를 한 다음에, 최종 시스템에 배포 한다.
□ 실습 빌드
이번 실습에서는 엄청난 오류가 있다..
이번 실습은 기본적으로 Python 2.7을 Lambda Runtime으로 지정하고, Lambda 코드도 다 Python 2.7 버전으로 제작되어 있다.
하지만!!! 2021년 7월 이후로 더이상 Lambda에서 Python 2.7 Runtime의 함수를 생성할 수 없다.
즉, 정상적인 실습이 되지 않았다 ㅜㅜ AWS!! Python 3.9 테스트 실습 파일로 업데이트 좀 해주세요!!
Codepipline 과정 中 "정적 분석"이 되지 않길래 CloudWatch에서 로그를 살펴보니
아래와 같이 Lambda에서 runtime error가 발생하고 있었다.
그리고 Lambda 지표를 봐도, 6번 호출에 6번 모두 Error가 발생하는 것을 볼 수 있었다.
그래서 이번 실습은 진행할 수 없었고, 다른 방식으로 CI/CD 과정에서의 보안을 살펴보기로 하자!
CI/CD 과정에서의 보안이라고 하면 가장 중요한것은 배포하는 소스에 대한 취약점 점검이다!!
위 실습처럼 Lambda 함수로 호출하여 취약점 점검을 할 수 있으나, 취약점 내용도 계속 업데이트 해줘야하고
취약점 현황의 시각화가 되지 않기때문에 보통은 솔루션을 많이 쓴다.
특히 오픈소스로는 SonarQube가 유명하다!
- SonarQube는 정적 코드 분석을 하기 위한 오픈소스 제품이다.
- 물론 기업 규모에 따라 Community 또는 기타 과금 License가 존재하지만, Free License로도 충분하다.
Code Quality and Code Security | SonarQube
Code Quality and Code Security | SonarQube
Catch bugs and vulnerabilities in your app, with thousands of automated Static Code Analysis rules.
www.sonarqube.org
그리하여, 만약에 AWS 환경에서 SonarQube를 사용해야 한다면, 아래 구성도처럼 될 수 있을 것 같다.
또는 AWS Codebuild를 사용하지 않고 Jenkins 빌드서버를 사용해도 된다.
Codepipline 단계 중에서 빌드 스테이지에서 Jenkins로 변경이 가능하다.
즉, 이론적으로 살펴본다면 다음과 같이 동작할 것으로 추정 된다.
1) GitHub에 소스코드를 Commit & Push 했을 때 2) 소스코드 변화 감지 후, Jenkins에서 Webhook 발생 3) SonarQube에서 Jenkins 빌드 예정인 소스에 대해 취약점 점검 진행 (1) ALL PASS일때만 Jenkins OK (2) 1개 이상의 Fail이 확인될 경우, Jenkins Fail/다음단계 진행 불가 4) Jenkins에서 배포 또는 AWS Codepipline을 통해 목표 시스템에 배포! |
오늘은 비록 그냥 생각으로만.. 이론적으로만 포스팅을 했었는데
추후 시간이 된다면 Jenkins 설치/SonarQube 연동올 하고 글을 남기도록 하겠다!!
그럼 이만 오늘은 여기까지!
'기술 이모저모 > [AWS] Workshop' 카테고리의 다른 글
[AWS][WAF] WEB SERVER WAF 설정 (0) | 2022.05.02 |
---|---|
[AWS][ALB] WEB SERVER ALB 구성 (0) | 2022.04.25 |
[AWS][GuardDuty] AWS Resource 위협탐지 서비스 (0) | 2022.03.01 |
[AWS][Forensic][GuardDuty] 내 테스트 서버에 공격이 들어오다(2/2) (0) | 2022.03.01 |
[AWS][SecurityHub] 각종 Resource 규정 미준수 통합 관리 (0) | 2022.02.28 |