분류 전체보기 42

DevSecOps CI/CD 파이프라인 프로젝트 - 마무리 (11)

마무리최종 완성된 아키텍처는 다음과 같다. 0. 오픈 소스(Spring PetClinic)는 Jenkins 파이프라인에서 자동으로 빌드를 수행한다. 1. Jenkins는 Maven 빌드, Dockerfile 기반 이미지 빌드 준비, ECS Task Definition 생성 등 파이프라인 실행 환경을 구성한다.2. 빌드가 완료된 코드를 기반으로 Docker 이미지를 생성한다. 3. 보안 검사를 통과한 이미지는 ECR에 업로드된다.4. ECS Task Definition, appspec.yml, imagedefinitions.json을 포함한 배포용 아티팩트 ZIP 파일을 생성하여 S3 버킷에 업로드한다.5. CodePipeline은 S3/ECR의 최신 아티팩트를 소스로 삼아 파이프라인을 실행하며, Cod..

카테고리 없음 2026.02.02

DevSecOps CI/CD 파이프라인 프로젝트 - CloudWatch 설정 (10)

CloudWatch 설정 과정을 정리했다. AWS 아키텍처 CloudWatch 설정1. 로그 통합애플리케이션과 배포 과정에서 발생하는 모든 출력을 중앙 집중식으로 수집하도록 설정하는 단계이다. 애플리케이션 로그 저장용 Logs 그룹을 생성한다. ECS Task 정의에서 awslogs 설정한다. ecsTaskExecutionRole: AmazonECSTaskExecutionRolePolicy 정책을 설정한다. 2. 모니터링 및 경보배포된 애플리케이션의 운영 상태를 실시간으로 측정, 비정상적인 상태가 감지되면 경보 발생 (이 경보가 자동 롤백 기준이 됨) 하도록 설정한다. 더보기 3. 자동 롤백 액션 연결위에서 생성한 CloudWatch 경보를 CodeDeploy와 연결한다. - CodeDeploy..

카테고리 없음 2026.02.02

DevSecOps CI/CD 파이프라인 프로젝트 - 보안도구 SCA(Trivy) + DAST(OWASP ZAP) 로컬 실습 (9)

웹 소스(SpringPetClinic)를 대상으로 SCA, DAST 로컬 실습한 과정을 정리했다. AWS 아키텍처 아키텍처와 같이 본래에는 전체 파이프라인을 통합하는 것이 목표였으나, 결과적으로 통합은 못하고 로컬 실습만 완료하였다. SCA - TrivyTrivy는 컨테이너 이미지, 파일 시스템, IaC 설정의 보안 취약점을 분석하는 오픈소스 보안 스캐너이다. 이미지에 포함된 OS 패키지와 라이브러리의 CVE 취약점을 탐지하며, CI/CD 파이프라인에 연동해 배포 전에 보안 검사를 자동으로 수행할 수 있다. 1. Docker Desktop 설치컨테이너 환경에서 실행하기 위해 Docker Desktop을 설치한다. Docker Desktop: The #1 Containerization Tool fo..

카테고리 없음 2026.02.02

DevSecOps CI/CD 파이프라인 프로젝트 - 보안도구 SAST(SonarQube) 로컬 실습 (8)

웹 소스(SpringPetClinic)를 대상으로 SAST 로컬 실습한 과정을 정리했다. AWS 아키텍처 아키텍처와 같이 본래에는 전체 파이프라인을 통합하는 것이 목표였으나, 결과적으로 통합은 못하고 로컬 실습만 완료한다. SAST - SonarQubeSonarQube는 소스 코드의 품질과 보안 취약점을 자동으로 분석하는 정적 분석 도구로, CI/CD 파이프라인과 연동해 빌드 단계에서 코드 품질 기준으로 검증할 수 있다. 배포 전 잠재적인 문제를 사전에 발견하고, 안정적이고 유지보수 가능한 코드 관리에 기여한다. 1. Docker Desktop 설치컨테이너 환경에서 실행하기 위해 Docker Desktop을 설치한다. Docker Desktop: The #1 Containerization Too..

카테고리 없음 2026.02.02

DevSecOps CI/CD 파이프라인 프로젝트 - Code Deploy + Codepipeline + S3 Bucket 설정 및 최종 배포 (7)

CodeDeploy, CodePipeline, S3 Bucket 설정 및 배포까지의 과정을 정리했다. AWS 아키텍처 CodePipeline은 S3와 ECR에 저장된 최신 아티팩트를 소스로 파이프라인을 실행하며, 배포 단계에서는 CodeDeploy를 통해 ECS 클러스터에 Blue/Green 방식의 배포를 수행한다. CodeDeploy 란?CodeDeploy는 소스코드를 EC2, ECS, Lambda 등의 운영 환경에 자동 배포하는 역할을 수행하는 서비스이다. 배포 과정에서의 중단을 최소화하도록 롤링 배포나 Blue/Green 배포를 지원하며, 배포 전·후 훅(hook)을 통해 스크립트 실행과 검증을 수행 가능해 배포 실패 시 롤백을 지원한다. CodeDeploy 생성deployment-control..

카테고리 없음 2026.02.02

DevSecOps CI/CD 파이프라인 프로젝트 - ECR + ECS + ALB + Jenkins 설정 (6)

ECR, ECS, ALB 구축 및 Jenkins 설정에 대해 정리하였다. AWS 아키텍처 본 프로젝트에서는 애플리케이션 컨테이너 이미지에 대한 보안 검사를 수행한 후, 검사를 통과한 이미지가 ECR에 업로드한다.이후 ECS 배포에 필요한 배포용 아티팩트를 ZIP 파일로 패키징하여 S3 버킷에 저장한다. 이후 배포 단계에서 Application Load Balancer(ALB)는 헬스 체크를 통해 신규 테스트의 상태를 검증하고, 정상 상태가 확인되면 트래픽을 기존 태스크에서 신규 태스크로 점진적으로 전환하여 무중단 배포를 지원한다. ECR(Elastic Container Registry) 이란?ECR(Elastic Container Registry)는 컨테이너 이미지 저장소 서비스이다. Docker / ..

Project/Cloud 2026.02.02

DevSecOps CI/CD 파이프라인 프로젝트 - Jnekins 설치 및 실행 (5)

Jenkins 구축 과정을 정리하였다. AWS 아키텍처 본 프로젝트에서는 Jenkins EC2가 프라이빗 서브넷에 위치해 있어 외부에서 직접 접근할 수 없다. 따라서 퍼블릭 서브넷에 위치한 Bastion Host를 경유하여 Jenkins에 접근하였다. Jenkins Web UI(8080)는 SSH 포트 포워딩 방식으로 접근한다. 1. 키 페어 권한 설정 키 페어가 존재하는 경로로 이동해 아래 명령어로 권한을 설정한다.SSH는 개인 키 파일이 과도한 권한을 가지고 있으면 보안 위험으로 판단하여 접속을 거부하기 때문에 권한 제한은 필수적이다. cmod 400 Bastion_키 페어.pem chmod 파일의 접근 권한을 변경하는 명령어 4000 소유자만 읽기 권한을 가짐, 그룹 및 기타 사용자에게는 모..

카테고리 없음 2026.02.02

DevSecOps CI/CD 파이프라인 프로젝트 - Bastion EC2 + Jenkins EC2 (4)

Bastion EC2, Jenkins EC2 구축 과정을 정리하였다. AWS 아키텍처 EC2 인스턴스는 Bastion Host용과 Jenkins용, 총 2대를 생성한다. Jenkins는 AWS에서 별도의 관리형 서비스로 제공되지 않기 때문에 EC2 인스턴스를 통해 서버를 직접 생성한 뒤, Jenkins를 설치해 운영한다. 다만 Jenkins 서버(Jenkins가 설치된 EC2 인스턴스)는 프라이빗 서브넷에 배치되어 있어 외부 접속이 불가능하다. 이때 사용되는 것이 Bastion Host 이다. Bastion Host는 퍼블릭 서브넷에 배치되어 외부에서 SSH로 접속 가능하며, 이를 통해 프라이빗 서브넷 내부의 Jenkins 서버에 안전하게 접근 가능하도록 한다. Bastion Host란?Bas..

Project/Cloud 2026.02.02

DevSecOps CI/CD 파이프라인 프로젝트 - Internet Gateway + NAT Gateway + Routing Table (3)

Internet Gateway, NAT Gateway, Routing Table 구축 과정을 정리하였다. AWS 아키텍처 인터넷 게이트웨이는 Jenkins VPC와 Serivce VPC에 각각 하나씩 총 2개 존재한다. 외부 통신(개발자 접속)을 가능하게 하기 위함이다. NAT 게이트웨이는 Jenkins VPC와 Service VPC의 퍼블릭 서브넷에 각각 하나씩 총 3개 존재한다. 이는 프라이빗 서브넷 속 리소스의 트래픽을 외부로 전달하기 위함이다. NAT 인스턴스 역시 같은 기능을 수행 가능하지만 NAT 게이트웨이가 단방향 통신을 지원한다는 점에서 보안성을 더 높게 평가해 채택하였다. (사실 NAT 인스턴스 설정 중 오류가 너무 나서 계획을 변경했다;; 하지만 NAT 게이트웨이 비용이 정말 만..

Project/Cloud 2026.02.02

DevSecOps CI/CD 파이프라인 프로젝트 - VPC + Subnet (2)

AWS VPC와 Subnet 구축 과정을 정리하였다. AWS 아키텍처 Jenkins 가 동작할 VPC와 실제 서비스가 동작할 VPC를 구분해 총 2개의 VPC를 생성했다. 이는 보안 안정성을 높이기 위함이다. Jenkins는 외부(개발자)의 지속적인 접속이 필요하고, 플러그인 설치나 스크립트 실행 등으로 인해 다양한 트래픽이 발생한다.따라서 같은 VPC 내에 실서비스가 함께 존재할 경우, 트래픽을 구분하기 위한 보안 규칙이 복잡해지고, 빌드 과정에서 발생하는 트래픽 과부하가 서비스 가용성에 영향을 줄 가능성을 가진다. 이를 고려해 Jenkins와 서비스를 동일한 네트워크에 두는 것은 보안 리스크가 크다고 판단하여 VPC를 분리해 설계하였다. Subnet은 Jenkins VPC와 Service V..

카테고리 없음 2026.02.02