안녕하세요, Twodragon입니다.
이번 주차에서는 DevOps 환경에서 필수적인 CI/CD 파이프라인 보안과 Kubernetes 클러스터 보안에 대해 알아보겠습니다. 실습과 이론을 병행하여, 실제 서비스 환경에 적용 가능한 보안 전략을 다루었습니다.
10:00 - 10:20 근황 토크 & 과제 피드백
- 한 주간의 근황 공유 및 토론
- 영상 & 과제 피드백: 어려웠던 점, 개선점 공유
10:25 - 11:00 Kubernetes 네트워크 및 보안
- Kubernetes 네트워크
- Kubernetes 보안
11:10 - 11:40 지속적 통합, 지속적 제공/배포(CI/CD) 및 보안
- Continuous Integration (CI)/Continuous Delivery/Deployment(CD) 및 보안
11:50 - 12:00 필수적인 실습을 통한 이론 정리
Kubernetes 네트워크
- 쿠버네티스의 주요 오브젝트인 Namespace, Deployment, Service, ConfigMap, Secret, PersistentVolumeClaim, PersistentVolume, HPA 등을 다룹니다. 각 오브젝트의 역할과 기능을 그림을 그리며 이해하는 방법으로 설명합니다. Namespace는 Object들을 그룹핑하고, Deployment는 Pod를 생성 및 업그레이드하며, Service는 트래픽을 Pod로 연결하는 역할을 합니다.
지속적 통합 및 지속적 제공/배포
- 배포에 관련된 도구와 그 필요성에 대해 설명하며, CI/CD 파이프라인 구성 시 관리 담당, 운영 정책, 제품 선택 등 중요한 요소들을 다룹니다. Jenkins, ArgoCD 등 다양한 도구의 장단점을 비교하고, 도커의 대안으로 Buildah, Kaniko 같은 도구들을 소개합니다. 마지막으로, 배포 전략과 단계별 배포 파이프라인 구축에 대해 설명합니다.[ArgoCD]
🛡️ Kubernetes 보안: 클러스터 보호 전략
Kubernetes는 복잡한 구조로 인해 다양한 보안 위협에 노출될 수 있습니다. 클러스터 보안을 강화하기 위한 주요 전략은 다음과 같습니다:
1. 네트워크 정책 설정
- Pod 간 통신 제어: 네임스페이스 및 라벨을 기반으로 네트워크 정책을 설정하여 불필요한 통신을 차단합니다.
- 외부 접근 제한: 서비스 노출 시 Ingress Controller를 활용하여 접근을 제어합니다.
2. Pod 보안 정책 적용
- PodSecurityAdmission(PSA): Pod 생성 시 보안 기준을 자동으로 적용하여 위험한 설정을 방지합니다.
- 보안 컨텍스트 설정: 컨테이너가 루트 권한으로 실행되지 않도록 제한합니다.
3. 시크릿 및 구성 관리
- Kubernetes Secrets: 민감 정보를 안전하게 저장하고, 필요한 Pod에만 접근을 허용합니다.
- 외부 시크릿 관리 도구 통합: HashiCorp Vault 등을 통해 시크릿을 중앙에서 관리하고 감사 로그를 기록합니다.
4. 모니터링 및 감사
- 감사 로그 활성화: Kubernetes의 감사 로그를 통해 클러스터 내 이벤트를 추적하고 이상 행위를 탐지합니다.
- 모니터링 도구 활용: Prometheus, Grafana 등을 사용하여 클러스터 상태를 실시간으로 모니터링합니다.
📌 CI/CD 보안: DevSecOps의 핵심
CI/CD 파이프라인은 개발부터 배포까지의 자동화된 흐름을 제공하지만, 보안이 미흡할 경우 심각한 위협이 될 수 있습니다. 주요 보안 베스트 프랙티스는 다음과 같습니다:
1. 코드 및 종속성 보안 스캔
- 정적 분석(SAST): SonarQube, Checkmarx 등을 활용하여 코드 내 취약점을 사전에 식별합니다.
- 동적 분석(DAST): 배포된 애플리케이션을 대상으로 런타임 중 발생할 수 있는 취약점을 탐지합니다.
- 소프트웨어 구성 분석(SCA): 오픈소스 라이브러리의 취약점을 식별하여 공급망 보안을 강화합니다.
2. 비밀 정보 관리
- 하드코딩 금지: API 키, 비밀번호 등을 코드에 직접 작성하지 않습니다.
- 시크릿 관리 도구 활용: HashiCorp Vault, AWS Secrets Manager 등을 사용하여 민감 정보를 안전하게 저장하고 접근을 제어합니다.
3. 접근 제어 및 인증
- 역할 기반 접근 제어(RBAC): 사용자 및 서비스 계정에 최소 권한을 부여하여 불필요한 접근을 제한합니다.
- 다중 인증(MFA): GitHub, GitLab 등의 리포지토리에 대한 접근 시 다중 인증을 적용하여 보안을 강화합니다.
4. 파이프라인 무결성 검증
- 서명된 커밋 및 태그 사용: Git의 GPG 서명을 활용하여 코드 변경의 신뢰성을 확보합니다.
- 자동화된 테스트 및 검토: Pull Request에 대한 자동화된 테스트와 코드 리뷰를 통해 품질을 유지합니다.
🧪 실습 예시: 보안 강화된 CI/CD 파이프라인 구축
이번 주차 실습에서는 보안이 강화된 CI/CD 파이프라인을 구축해보았습니다. 주요 구성은 다음과 같습니다:
- 코드 저장소: GitHub를 사용하여 소스 코드를 관리하고, GPG 서명을 통해 커밋의 무결성을 검증합니다.
- CI 도구: Jenkins를 활용하여 빌드 및 테스트를 자동화하고, SonarQube를 통합하여 코드 품질을 분석합니다.
- CD 도구: ArgoCD를 사용하여 Kubernetes 클러스터에 애플리케이션을 배포하고, Helm을 통해 배포를 관리합니다.
- 보안 스캔: Trivy를 사용하여 컨테이너 이미지의 취약점을 스캔하고, 결과를 Slack으로 알림 받습니다.
📚 참고 자료
- OWASP Kubernetes Security Cheat Sheet
- OWASP CI/CD Security Cheat Sheet
- AWS EKS 보안 가이드
- Kubernetes 공식 보안 가이드
- CI/CD 보안 베스트 프랙티스 - CrowdStrike
- Kubernetes 보안 베스트 프랙티스 - Wiz
✍️ 마무리
이번 8주차에서는 CI/CD와 Kubernetes 보안의 핵심 개념과 실습을 통해 실제 환경에서의 적용 방법을 학습했습니다. 보안은 단순한 설정이 아닌, 지속적인 모니터링과 개선이 필요한 분야입니다. 앞으로도 DevSecOps의 관점에서 보안을 고려한 개발과 운영을 실천해 나가시길 바랍니다.
감사합니다. 😊
'* Twodragon > 보안 강의 (Course)' 카테고리의 다른 글
클라우드 시큐리티 과정 7기 - 9주차 DevSecOps 통합 정리 (0) | 2025.06.13 |
---|---|
클라우드 시큐리티 과정 7기 - 7주차 Docker 및 Kubernetes 이해 (0) | 2025.05.30 |
클라우드 시큐리티 과정 7기 - 6주차 Cloudflare 및 github 보안 (0) | 2025.05.23 |
클라우드 시큐리티 과정 7기 - 5주차 AWS Control Tower 및 ZTNA (0) | 2025.05.16 |