2026년판 최신 DevSecOps 엔지니어링 스택: 첫 커밋부터 프로덕션까지
Source: Dev.to
제가 프로덕션 데이터베이스가 유출된 .env 파일 때문에 완전히 사라지는 모습을 보고 깨달은 잔인한 진실: DevSecOps는 도구에서 시작하지 않습니다. 습관에서 시작합니다.
대부분의 침해 사고는 기본이 흐트러졌기 때문에 발생합니다—Git에 커밋된 비밀, SQL 인젝션을 놓친 코드 리뷰, 유지보수자를 확인하지 않은 채 추가된 의존성 등.
이 시리즈에서는 실제로 동작하는 것을 만들겠습니다: Go 로 작성한 Notes API 를 git init 단계부터 Kubernetes 배포까지 전 과정을 구현합니다. 각 단계마다 보안 레이어를 추가하고, 모든 선택에 대해 설명합니다. 그리고 직접 클론해서 부수어 볼 수도 있습니다.
코드를 한 줄도 쓰기 전에, 개발 환경을 더 안전하게 구성하는 방법을 이야기해봅시다
IDE, git 설정, pre‑commit 훅—이것들이 바로 첫 번째 보안 방어선입니다.
Git은 당신이 알려주는 대로 믿습니다. 이메일이나 이름을 바꾸면 커밋 기록이 정상적으로 보이죠. 팀 환경이든 혼자 작업하든, 이는 “누가 실제로 무엇을 썼는가”를 입증할 수 있는 감사 추적이 당신의 능력에 달려 있다는 뜻입니다.
커밋 서명이 이 문제를 해결합니다. 각 커밋에 암호화 서명을 붙이고, GPG 키와 대조해 검증합니다. 프로덕션 코드베이스에서는 선택 사항이 아니라 필수이며, 컴플라이언스에서도 절대 양보할 수 없습니다. 설정도 생각보다 간단합니다.
# Generate a GPG key (RSA 4096, no expiry for simplicity)
gpg --full-generate-key
# Tell git to use it
git config --global user.signingkey YOUR_KEY_ID
git config --global commit.gpgsign true
# Verify any commit
git log --show-signature -1
한 번 시도해 보세요: 현재 프로젝트에서 git log --show-signature 를 실행해 보세요. 아무것도 나오지 않으면 히스토리가 검증되지 않은 것이며, 보안 감사에서는 검증되지 않은 것이 곧 신뢰할 수 없다는 의미입니다.
Pre‑commit 훅: 첫 번째 자동 방어선
커밋이 원격 저장소에 도달하기 전에 로컬에서 실행되어, 기능 구현에 집중하다 놓치기 쉬운 문제들을 잡아냅니다. 실제 예시는 다음과 같습니다.
#.pre-commit-config.yaml
repos:
- repo: https://github.com/gitleaks/gitleaks
rev: v8.24.0 # check for latest
hooks:
- id: gitleaks
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: detect-private-key
- id: check-merge-conflict
- id: trailing-whitespace
- repo: https://github.com/dnephin/pre-commit-golang
rev: v0.5.1
hooks:
- id: go-fmt
- id: go-vet
설치 및 활성화:
pip install pre-commit
pre-commit install
pre-commit run --all-files
이제 매 커밋마다 하드코딩된 비밀, 개인 키, 흔히 발생하는 실수들을 스캔합니다. 비밀이 Git 히스토리에 남지 않도록 차단해 주죠.
우리가 만들 프로젝트 개요
우리는 Go 로 작성한 프로덕션 급 Notes API 를 구축하고, 모든 레이어에 보안을 입힐 것입니다. 아키텍처는 다음과 같습니다.
- Auth 서비스: JWT 기반 인증, bcrypt 비밀번호 해싱
- Notes API: CRUD 작업 + 엄격한 소유권 검증
- 보안 제어: IDOR 방어, SQL 인젝션 방지, 구조화된 로깅 등
- 스택: Go, PostgreSQL, HashiCorp Vault, Docker, Kubernetes
이 패턴은 실제 프로덕션 시스템에서 쓰이는 사례이며, 이해하기 쉬울 정도로 작지만 DevSecOps 개념을 모두 보여줄 만큼 충분히 포괄적입니다.
프로젝트 구조와 각 섹션에 해당하는 커밋은 여기서 확인할 수 있습니다:
https://github.com/philaturo/secure-notes-api
⭐ Star 를 눌러 진행 상황을 추적하고, 클론해서 직접 부수어 보세요. 놓친 부분이 있으면 이슈를 열어 주세요. 이 프로젝트는 공개된 상태에서 진행 중이며, 깔끔한 최종 제품이 아니라 실제 커밋, 실수, 그리고 수정이 그대로 기록됩니다.
다음 편 예고
2부에서는 CI/CD 파이프라인을 어떻게 강화할지, 최소 권한 원칙, 아티팩트 서명, 그리고 잘못된 .yml 파일이 왜 보안 취약점이 되는지를 다룹니다. 그때 뵙겠습니다!