Ch.23 보안은 남의 일이 아니다¶
보안은 보안팀이 할 일이라고 생각하는가? 개발자가 짠 코드에 구멍이 있으면 보안팀이 뭘 해도 뚫린다.
Ch.22에서 Docker와 Kubernetes로 서비스를 배포하는 것까지 다뤘다. 컨테이너를 띄우고, 서비스를 외부에 공개하는 순간, 새로운 문제가 등장한다. 보안이다.
"우리 서비스는 작은데 누가 공격하겠어?"라고 생각할 수도 있다. 공격은 사람이 일일이 하는 게 아니다. 봇이 한다. 인터넷에 공개된 서비스는 크기에 관계없이 공격 대상이 된다. 취약점이 있으면 자동으로 찾아내서 뚫는다.
이번 챕터에서는 개발자가 만드는 보안 구멍이 무엇이고, 어떻게 막는지를 다룬다.
목차¶
1. 환경 세팅¶
Ch.22까지 사용한 환경과 동일하다. 추가 설치가 필요 없다.
| 도구 | 버전 | 용도 | 왜 이걸 쓰는가 |
|---|---|---|---|
| Python | 3.12+ | 서버 | Ch.22와 동일 |
| FastAPI | 0.111+ | API 서버 | Ch.22와 동일 |
| uvicorn | - | ASGI 서버 | Ch.22와 동일 |
| 브라우저 DevTools | - | 네트워크/쿠키 확인 | 보안 헤더, 쿠키 속성, 네트워크 요청을 직접 눈으로 확인할 수 있다 |
보안 실습에 특별한 도구가 필요한 건 아니다. 취약한 코드와 방어 코드를 비교하는 것만으로 핵심을 이해할 수 있다.
윤리적 주의사항¶
이 챕터에서 다루는 공격 기법은 자기 서비스에서만 테스트해야 한다. 다른 사람의 서비스에 시도하면 불법이다. "교육 목적"이라는 변명은 통하지 않는다. 한국 정보통신망법 제48조에 따라 정보통신망 침해행위는 5년 이하의 징역 또는 5천만원 이하의 벌금이다.
자기 서비스, 자기 로컬 환경에서만 실습한다.