안녕하세요, Twodragon입니다.
이번 포스트에서는 클라우드 보안 과정 5기의 CI/CD 및 쿠버네티스 보안에 관련된 내용을 다루고자 합니다. 이 과정은 게더 타운에서 진행되며, 각 세션은 20분 강의 후 5분 휴식으로 구성되어 있습니다. 이러한 구성은 온라인 강의의 특성 상 눈의 피로를 줄이고, 멘티 분들의 집중력을 최대화하기 위함입니다. 여러분들과 함께 다양한 CI/CD 및 쿠버네티스 보안 관련 주제를 깊이 있게 다루어 보고자 합니다.
10:00 - 10:20 근황 토크 & 과제 피드백
- 한 주간의 근황 공유 및 토론
- 영상 & 과제 피드백: 어려웠던 점, 개선점 공유
- 보안 이슈 논의
10:25 - 11:00 지속적 통합 및 지속적 제공/배포(CI/CD)
- Continuous Integration (CI)/Continuous Delivery/Deployment(CD)
11:10 - 11:40 Kubernetes 네트워크 및 보안
- Kubernetes 네트워크
- Kubernetes 보안
11:50 - 12:00 필수적인 실습을 통한 이론 정리
근황 토크 & 과제 피드백
첫 세션에서는 근황 토크와 멘티들 간의 영상 및 과제 토론, 그리고 과제 피드백을 진행합니다. 과제를 통해 학습자들이 경험한 어려움, 개선점 등을 공유하며, 최근 취약점 관련 보안 업데이트 권고 사항을 논의합니다.
최근 취약점 업데이트 및 사이버 보안 주의보를 요약했습니다 :
- Apple社는 macOS Sonoma의 로컬 권한 상승 취약점(CVE-2024-27822)을 해결하는 보안 업데이트를 발표했으며, 사용자들은 최신 버전인 macOS Sonoma 14.5로 업데이트할 것을 권고합니다.
- RARLAB社는 WinRAR의 원격 코드 실행 취약점(CVE-2023-38831)을 해결하는 업데이트를 발표했으며, 사용자들은 최신 버전인 WinRAR 6.23 이상으로 업데이트할 것을 권고합니다.
Kubernetes 네트워크
- 쿠버네티스의 주요 오브젝트인 Namespace, Deployment, Service, ConfigMap, Secret, PersistentVolumeClaim, PersistentVolume, HPA 등을 다룹니다. 각 오브젝트의 역할과 기능을 그림을 그리며 이해하는 방법으로 설명합니다. Namespace는 Object들을 그룹핑하고, Deployment는 Pod를 생성 및 업그레이드하며, Service는 트래픽을 Pod로 연결하는 역할을 합니다.
지속적 통합 및 지속적 제공/배포
- 배포에 관련된 도구와 그 필요성에 대해 설명하며, CI/CD 파이프라인 구성 시 관리 담당, 운영 정책, 제품 선택 등 중요한 요소들을 다룹니다. Jenkins, ArgoCD 등 다양한 도구의 장단점을 비교하고, 도커의 대안으로 Buildah, Kaniko 같은 도구들을 소개합니다. 마지막으로, 배포 전략과 단계별 배포 파이프라인 구축에 대해 설명합니다.
Kubernetes 보안
Kubernetes 환경에서 보안은 매우 중요합니다. 다음은 보안 강화를 위한 몇 가지 팁입니다.
*(SK쉴더스) 2024 클라우드 보안 가이드에 대한 내용도 포함
- 네트워크 보안 (네트워크 정책 설정): 네트워크 정책을 통해 Pod 간의 통신을 제어합니다.
예시) 특정 네임스페이스 내의 Pod들만 서로 통신할 수 있도록 하거나, 특정 IP 범위에서만 접근할 수 있도록 제한합니다. - 접근 제어 (RBAC, Role-Based Access Control): 사용자와 서비스의 권한을 최소화하여 관리합니다.
예시) 개발자는 애플리케이션 배포 권한만, 운영자는 클러스터 관리 권한만 가지도록 설정합니다. - 컨테이너 이미지 보안 (컨테이너 이미지 서명): 신뢰할 수 있는 컨테이너 이미지만 사용하도록 이미지 서명을 검증합니다.
예시) Notary, Cosign과 같은 도구를 사용하여 컨테이너 이미지 서명을 검증합니다. - 런타임 보안 Pod Security Admission (PSA): Pod의 보안 설정을 검토하고 제한하는 메커니즘으로, Pod Security Policies(PSP)를 대체합니다. PSA를 통해 Pod가 생성되기 전에 보안 규칙을 적용합니다.
예시) Pod가 루트 권한으로 실행되지 않도록 하거나, 특정 네트워크 접근을 제한하는 규칙을 설정합니다. - 시크릿 및 구성 관리 (Kubernetes Secrets): 시크릿을 사용하여 암호, 토큰, 키와 같은 민감한 데이터를 안전하게 저장하고 관리합니
예시) 애플리케이션의 데이터베이스 암호를 시크릿으로 저장하여 환경 변수로 불러와 사용합니다. - 모니터링 및 감사 : 클러스터의 활동을 모니터링하고 로그를 수집하여 이상 징후를 조기에 탐지합니다. 그리고, 쿠버네티스의 감사 로그를 활성화하여 클러스터에서 발생하는 모든 이벤트를 기록하고 분석합니다.
예시) Prometheus, Grafana, ELK 스택 등을 사용하여 클러스터 상태와 로그를 모니터링합니다. 그리고, kubectl 커맨드 사용 기록, API 요청 등의 활동을 감사 로그에 기록하여 보안 분석에 활용합니다. - 자동화된 보안 도구 (CI/CD 파이프라인 보안 및 보안 툴): CI/CD 파이프라인에서 이미지 스캔을 자동화하여 취약점이 있는 이미지를 배포하지 않도록 합니다. 그리고, 다양한 보안 도구를 사용하여 클러스터와 컨테이너의 보안을 강화합니다.
예시) Jenkins, GitLab CI, CircleCI 등의 파이프라인에서 Clair, Trivy와 같은 도구를 사용하여 이미지 스캔을 통합합니다. 그리고, Aqua Security, Twistlock, Sysdig Secure 등의 도구를 사용하여 런타임 보안, 이미지 스캔, 네트워크 보안 등을 강화합니다.
종합적으로 CI/CD 및 쿠버네티스 보안을 위해서는 네트워크 정책, 접근 제어, 이미지 서명 검증, 런타임 보안, 시크릿 관리, 모니터링 및 감사, 자동화된 보안 도구 등의 다양한 전략을 통합적으로 적용하는 것이 중요합니다. 이러한 방법들을 통해 쿠버네티스 환경의 보안을 전반적으로 강화할 수 있습니다.
필수적인 실습을 통한 이론 정리
- [컨테이너와 DevOps](https://www.samsungsds.com/kr/insights/middleware_in_containers.html)
- [Kubernetes와 Docker 이해](https://www.codestates.com/blog/content/쿠버네티스)
- AWS 아키텍처 및 보안 관련 모임 자료 참고 : https://github.com/awskrug/security-group/tree/main
- Minikube 데모 : 튜토리얼 | Kubernetes
- 쿠버네티스 보안 : 삼성 SDS 쿠버네티스 보안 블로그
이번 포스팅에서는 CI/CD 및 Kubernetes에 대해 알아보았습니다. 두 기술을 활용하면 클라우드 환경에서의 애플리케이션 배포와 관리를 자동화할 수 있습니다. 실습을 통해 직접 경험해보시기 바랍니다.
'* Twodragon > 보안 강의 (Course)' 카테고리의 다른 글
클라우드 시큐리티 과정 6기 온라인 강의 (2024.10.05 ~ ) (0) | 2024.10.04 |
---|---|
클라우드 시큐리티 과정 5기 - 9회차 클라우드 보안 통합 정리 (0) | 2024.06.15 |
클라우드 시큐리티 과정 5기 - 7회차 Docker 및 Kubernetes 이해 (0) | 2024.06.01 |
클라우드 시큐리티 과정 5기 - 6회차 AWS 보안 모니터링 및 대응 (0) | 2024.05.23 |