본문 바로가기

* Twodragon/보안 강의 (Course)

🚀 클라우드 보안 과정 8기 6주차: AWS WAF/CloudFront 보안 아키텍처 및 GitHub DevSecOps 실전

안녕하세요, Twodragon입니다.

지난 5주차에서는 AWS Control Tower와 Datadog SIEM, Cloudflare를 활용한 거버넌스와 관제에 대해 다루었습니다. 이번 클라우드 보안 과정 8기 6주차에서는 AWS WAF와 CloudFront를 결합한 안전한 콘텐츠 전송 아키텍처와, 개발과 보안을 통합하는 GitHub DevSecOps, 그리고 엔지니어의 성장을 위한 테크 블로그 운영 및 실제 보안 적용 사례를 공유하고자 합니다.

특히 이번 주에는 제 기술 블로그(Jekyll)를 직접 유지보수하며 적용한 UI 개선 및 CodeQL 기반 보안 취약점 수정 작업을 케이스 스터디로 깊이 있게 다뤄보겠습니다.

본 과정은 게더 타운(Gather Town)에서 진행되며, '20분 강의 + 5분 휴식' 사이클로 멘티분들의 집중력을 최대로 유지하며 진행됩니다.


📅 6주차 타임테이블 (Agenda)

  • 10:00 - 10:20 | 근황 토크 & 과제 피드백
    • 한 주간의 보안 이슈 공유 및 Q&A
  • 10:25 - 10:50 | AWS WAF & CloudFront Security
    • CloudFront OAI/OAC 구성 및 WAF 연동
    • Header 조작(Request/Response) 및 Geo-blocking 실습
  • 11:00 - 11:30 | GitHub Actions & Advanced Security
    • CI/CD 파이프라인 내 보안 내재화 (Dependabot, Code Scanning)
    • Amazon Q Developer 활용 비교
  • 11:40 - 12:00 | [Case Study] 테크 블로그 개선 & 보안 패치
    • 블로그를 '제품(Product)'으로 바라보는 DevSecOps 관점
    • 실전 사례: 자동화 스크립트 보안 취약점 진단 및 수정 (SSRF, Data Masking)

 

🌐 1. AWS WAF & CloudFront 보안 아키텍처

단순히 VPC 내부를 보호하는 것을 넘어, CloudFront(CDN)WAF를 결합하여 엣지(Edge) 레벨에서 강력한 보안 아키텍처를 구성하는 방법을 다룹니다.

  • 주요 학습 내용:
    • CloudFront & OAI (Origin Access Identity): S3 버킷에 대한 직접 접근을 차단하고, 오직 CloudFront를 통해서만 콘텐츠를 안전하게 전송하도록 OAI(또는 OAC)를 구성합니다.
    • Geo-Blocking (국가별 차단): WAF의 Geo Match 조건을 활용하여 대한민국(South Korea) 트래픽만 허용하거나, 특정 국가의 접속을 차단하는 보안 정책을 수립합니다.
    • Header Security (Request/Response):
      • Request Header: 특정 User-Agent나 Secret Key 헤더가 없는 요청을 WAF단에서 즉시 차단하여 비인가 접근을 방어합니다.
      • Response Header: 서버 정보 노출을 막기 위해 불필요한 헤더를 삭제하거나, HSTS, X-Frame-Options 등 보안 헤더를 강제로 주입합니다.
    • 실습: AWS WAF Workshop 및 DVWA를 활용하여 SQL Injection/XSS 공격을 시도하고, WAF 규칙(Rules)으로 방어하는 전체 과정을 실습합니다.

🤖 2. GitHub Actions & Advanced Security

코드 작성 및 배포 단계에서부터 보안을 고려하는 'Shift Left' 전략을 GitHub 기능을 통해 구현합니다.

  1. Dependabot: 프로젝트에서 사용하는 라이브러리(의존성)의 취약점을 자동으로 탐지하고, 보안 패치가 적용된 버전으로 업데이트하는 PR을 생성해 줍니다.
  2. Code Scanning (CodeQL): 코드 내에 존재하는 잠재적인 보안 취약점(SQLi, XSS, 하드코딩 등)을 정적 분석(SAST)을 통해 찾아냅니다.
  3. Secret Scanning: 소스 코드 내 실수로 포함된 AWS Key, Token 등이 있는지 실시간으로 감지합니다.

📝 3. [Case Study] 테크 블로그 운영과 DevSecOps 적용 사례

보안 엔지니어에게 테크 블로그는 단순한 기록을 넘어 기술력을 증명하는 살아있는 포트폴리오입니다. 이번 주에는 제 블로그(Jekyll 기반)를 직접 유지보수하며 진행한 기능 개선과 보안 취약점 수정(DevSecOps) 과정을 공유합니다.

 

GitHub - Twodragon0/tech-blog: IT, DevSecOps, 코딩 관련 기술 블로그

IT, DevSecOps, 코딩 관련 기술 블로그. Contribute to Twodragon0/tech-blog development by creating an account on GitHub.

github.com

 

GitHub - Twodragon0/aws-devsecops-infrastructure: AWS DevSecOps 인프라 자동화 및 클라우드 보안 강의 자료. Terra

AWS DevSecOps 인프라 자동화 및 클라우드 보안 강의 자료. Terraform, AWS CDK, Lambda를 활용한 보안 인프라 구축 및 실습. - GitHub - Twodragon0/aws-devsecops-infrastructure: AWS DevSecOps 인프라 자동화 및 클라우드 보

github.com

💡 멘토의 관점: 블로그도 하나의 '서비스'입니다.

많은 분들이 블로그를 단순히 글을 저장하는 공간으로 생각하지만, 엔지니어의 블로그는 코드로 관리되는 서비스여야 합니다. 저는 이번 블로그 고도화 작업을 통해 다음과 같이 DevSecOps 사이클을 적용했습니다.

단계 적용 항목 (Action Item) 멘토의 코멘트 (Why?)
Dev (개발) UI/UX 개선 및 기능 추가

• 포스트 썸네일 디자인 업그레이드 (SVG)

• 이미지 라이트박스(확대 보기) 기능 개발
사용자의 가독성을 높이는 것은 서비스의 품질(Quality)을 높이는 핵심 개발 과정입니다.
Ops (운영) 빌드 에러 수정 (CI)

• jekyll-feed 플러그인 설정 오류 수정

• GitHub Actions 빌드 성공 확인
코드가 수정될 때마다 자동으로 빌드되고 배포되는 CI/CD 환경이 안정적으로 유지되어야 합니다.
Sec (보안) 코드 보안 취약점 진단

• Python 자동화 스크립트 CodeQL 스캔

• 민감 정보 노출 및 입력값 검증 로직 추가
개인이 사용하는 스크립트라도 보안 취약점이 있다면, 공격자의 침투 경로가 될 수 있습니다.

🔐 실전 사례: 내 코드의 보안 취약점을 어떻게 찾고 고쳤을까?

블로그 포스팅을 자동화하기 위해 작성했던 Python 스크립트(fetch_tistory_images.py, ai_improve_posts.py)를 GitHub Code Scanning(CodeQL)으로 점검했습니다. 그 결과 High Severity(고위험) 취약점 6건이 발견되었고, 이를 해결한 과정을 상세히 공유합니다.

1. URL 검증 부재 (SSRF 위험)

구분 수정 전 (Before) 수정 후 (After)
코드 if 'blog.kakaocdn.net' in src:

(단순 문자열 포함 여부만 확인)
parsed = urlparse(url_str)

if parsed.hostname in ALLOWED_HOSTS:

(URL을 파싱 하여 정확한 호스트명 검증)
위협 요소 evil-blog.kakaocdn.net.attacker.com과 같은

우회 도메인 공격 가능
허용된 도메인 리스트(Allow-list)에 없으면

원천 차단

 

2. 민감 정보 평문 노출 (Sensitive Data Exposure)

구분 내용
발견된 문제 자동화 스크립트 실행 로그나 콘솔에 API_KEY=sk-1234...가 그대로 출력됨.
해결 방안 Data Masking 함수 구현: 정규표현식(Regex)을 사용하여 로그 기록 직전 중요 정보를 MASKED로 치환.

👨‍🏫 멘토의 조언 (Takeaway)

DevSecOps는 거창한 시스템이 아닌, 사소한 코드 한 줄에서부터 보안을 고려하는 습관에서 시작됩니다. 이번 주 실습을 통해 여러분의 개인 프로젝트 코드도 점검해 보세요.

👉 Tech Blog 운영 및 Discussion 활용 예시 보러가기


📚 4. 차주 예습: 컨테이너 보안

다음 7주차는 클라우드 네이티브의 핵심인 Docker & Kubernetes 보안입니다.


이번 6주차 과정을 통해 AWS WAF & CloudFront의 정교한 보안 구성뿐만 아니라, 실제 코드를 다루고 개선하는 보안 엔지니어의 실무 감각을 익혀보시길 바랍니다.

추가적인 질문이나 도움이 필요하시면 언제든지 댓글로 남겨주세요.