2023-07-27 TIL
2023-07-27 TIL
Devops 강의
- Devops: Development + Operation의 약자
- 개발과 운영을 통합
- 개발팀이 배포 파일을 넘겨주면, 운영 팀이 배포하는 것이 전통적 방식
- 커뮤니케이션 비용 발생 및 원인 파악의 어려움, 배포 주기가 길어짐
- DevOps는 개발자가 서비스 개발 및 운영을 같이 수행, 짧은 주기로 배포, 자동화를 통해 운영 공수를 줄임
- 기존에는 서비스 운영에 개발만큼 많은 지식이 필요 했음
- 그러나 클라우드 환경이 보편화되고, 자동화 및 모니터링 도구 등의 등장으로 이제는 훨씬 적은 부담으로 가능
- Devops의 범위: CI / CD / 모니터링 및 알림
- CI: Continuous Integration
- 코드 병합 및 퀄리티 유지를 위해 다음과 같은 작업 수행
- 테스트 코드 작성
- PR이 올라오면 코드 리뷰 (리뷰 자체는 자동화가 힘듦)
- 코드 컴파일 및 테스트 코드 실행 (자동화)
- 코딩 컨벤션 준수 확인 (자동화)
- 잠재 결함 분석 (자동화)
- DevOps는 운영 공수를 경감하기 위한 것이고, CI를 통해 문제 있는 코드를 배포하지 않게 하면 이런 운영 공수가 굉장히 줄어듦
- CI 도구: Jenkins, GitHub Actions
- Jenkins: 오래되었고, 다양한 플러그인을 제공하지만, 이 플러그인들의 충돌이나 서버 단의 관리가 필요
- GitHub Actions: 준 설치형 CI도구, GitHub와 높은 수준으로 연동되지만, 외부 액션을 바로 사용은 불가
- CI 도구의 역할: 컴파일, 빌드, 테스트 코드 실행, 코딩 컨벤션 준수 확인, 잠재 결함 분석
- 하나라도 실패하면 코드가 병합되지 않도록 해야!
- CD: Continuous Delivery
- 코드를 배포하는 과정을 자동화해서 수행
- CI랑 묶어서 CI / CD로 불리는 경우가 많음
- 작은 공수로 쉽게 배포하게 해 줌
- 결국 CD는 배포 과정만 자동화 하면 됨!
보안 버그 사례 강의
- XSS
- 2022년 가장 많이 발견된 버그
- Ex) 싸이월드 미니홈피에 누가 방문했는지 알 수 있는 스크립트를 심을 수 있었음
- Information Leakage
- 내부 정보를 알 수 있는 경우, 어뷰징할 수 있는 기회를 만들어 줌
- Weak Authentication
- 인증이 약한 경우 다른 사람의 정보에 접근 가능
- Logical Flaw Bugs
- 필수로 해야 하는 논리적 흐름을 무시 가능한 경우
- 꼭 인증해야 하는 내용을 인증하지 않고 진행하는 등의 문제 발생
- Account Takeover
- 타인의 계정 탈취, 사용자 세션 값이 노출 되는 등의 경우 발생
- Path Traversal
- Apache, Nginx등의 설정이 미흡한 경우, 내부 파일을 경로를 통해 볼 수 있음
- Outdated Component
- 오픈 소스에 취약점이 발견된 경우, 공격 지점이 됨
- Ex) zero day 취약점이었던 log4j 사태가 해당
- Server Side Request Forgery
- 서버에 요청을 보내라고 명령을 해서 정보 탈취
- Subdomain Takeover
- 연결된 두 개의 도메인에 대해, 한 개의 도메인을 이용해 다른 도메인의 정보를 가져옴 (확실하지는 않음)
- File Download
- Path traversal과 달리, 서버 내의 모든 파일을 다운받게 할 수 있는 권한
- 서버 설정에서 생기는 문제는 아님
- Broken Access Control
- Insecure HTTP Connection
- CSRF
- 공격자가 사용자의 권한을 이용해 작업을 수행하는 것
- Replay Attack
- 한번에 수많은 요청을 반복해서 보냄
- Ex) 좋아요 버튼 연속 누르기