์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 

DevSecOps SAST(/w GitLab)

DevSecOps ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? CI ๋นŒ๋“œ ํ™˜๊ฒฝ ๋ฐ Build ์‹œ ์ž๋™์œผ๋กœ SAST ์ ๊ฒ€์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ™˜๊ฒฝ ๊ตฌ์„ฑํ•ด๋ณด๊ธฐ

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ณด์•ˆ, sast] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • DevSecOps๋ž€

  • CI/CD Pipeline SAST ์ž๋™ ์ ๊ฒ€ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

DevSecOps ๋ผ๋Š” ์–˜๊ธฐ๋Š” ๋งŽ์ด ๋“ค์—ˆ๋Š”๋ฐ ๋„๋Œ€์ฒด ๋ญ์•ผ?

DevSecOps ํ™˜๊ฒฝ์ด๋ž€ ๋ฌด์—‡์ธ์ง€, ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ค ๋ถ€๋ถ„์— ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์—ฌ์•ผ ํ•˜๋Š”์ง€ ๋ชฉํ‘œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”!

๋ณด์•ˆํŒ€ ์ž…์žฅ์—์„œ DevOps (CI/CD) ํ™˜๊ฒฝ์„ ์ด์šฉํ•˜๊ณ  ์‹ถ์€๋ฐ ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋Š” ๋ถ„!

  • ์—ฌ๋Ÿฌ DevSecOps ๊ธฐ์ค€์„ ํ†ตํ•œ ์ž์ฒด ํ‰๊ฐ€ ๋ฐ ๋ชฉํ‘œ ์„ค์ • ๋ฐฉ์•ˆ ์ œ์‹œ

  • DevSecOps ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค(GitLab, Jenkins, SonarQube ๋“ฑ)๋ฅผ ์ด์šฉํ•œ ์˜ˆ์ œ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

โ€ป DevSecOps SAST ๊ฐ•์˜์˜ ๊ฒฝ์šฐ DevSecOps Basic(Link) ๊ฐ•์˜์™€ ์ด์–ด์ง€๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ๊ฐ•์˜์— ๋‹ค์–‘ํ•œ DevOps ํ™˜๊ฒฝ ๋‚ด ์†Œ์Šค์ฝ”๋“œ ์ทจ์•ฝ์  ์ ๊ฒ€ ์ž๋™ํ™” ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ๋‹ด์„ ์ˆ˜๊ฐ€ ์—†์–ด ๋ณ„๋„์˜ ๊ฐ•์˜๋กœ ์ œ์ž‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ฐ•์˜์—์„œ ์†Œ์Šค์ฝ”๋“œ ์ทจ์•ฝ์  ์ ๊ฒ€ ์ž๋™ํ™” ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ํšŒ์‚ฌ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํ™˜๊ฒฝ๊ณผ ์œ ์‚ฌํ•œ ํ™˜๊ฒฝ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ•์˜ ์ˆ˜๊ฐ•์„ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

DevSecOps Basic

  • DevSecOps ์ด๋ก ๊ณผ DevSecOps ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ œ์•ˆ ๋ชจ๋ธ

  • Jenkins, Github ํ™˜๊ฒฝ์—์„œ ์†Œ์Šค์ฝ”๋“œ ์ทจ์•ฝ์  ์ ๊ฒ€ ์ž๋™ํ™” ํ™˜๊ฒฝ ๊ตฌ์„ฑ


DevSecOps SAST (/w GitLab)

  • DevSecOps ์ด๋ก 

  • Jenkins, GitLab ํ™˜๊ฒฝ ๋ฐ GitLab ๋‹จ๋… ํ™˜๊ฒฝ์—์„œ ์†Œ์Šค์ฝ”๋“œ ์ทจ์•ฝ์  ์ ๊ฒ€ ์ž๋™ํ™” ํ™˜๊ฒฝ ๊ตฌ์„ฑ


ํ•™์Šต ๋‚ด์šฉ

  • DevSecOps ์˜ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ๊ณผ ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ์œ„์ฃผ๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์„น์…˜ 1 : What is DevSecOps?

  • ์„น์…˜ 2 : CI ํ™˜๊ฒฝ ๊ตฌ์„ฑ๊ณผ CI ํ™˜๊ฒฝ์—์„œ SAST(Source Code ์ทจ์•ฝ์  ์ ๊ฒ€) ์ž๋™ ์ ๊ฒ€ ํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐ

  • ์„น์…˜ 3: ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ

์„น์…˜ (1) DevSecOps Basic

DevSecOps ๊ฐ€ ๋ฌด์—‡์ด๊ณ  ํ™˜๊ฒฝ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์–ด๋–ป๊ฒŒ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•ด์•ผ ํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ด…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์ธ DevSecOps ํ™˜๊ฒฝ์„ ์†Œ๊ฐœํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•์˜ ์˜ˆ์ œ ํ™˜๊ฒฝ ํ™•์ธ ๋ฐ ๊ตฌ์„ฑํ•œ๋‹ค.

์„น์…˜ (2) CI & SAST

DevOps ํ™˜๊ฒฝ์—์„œ Sec๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด SAST(Source Code ์ทจ์•ฝ์  ์ ๊ฒ€ ๋„๊ตฌ) ์ž๋™ ์ ๊ฒ€์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ• ์ง€ ์‹ค์Šต์„ ํ†ตํ•ด ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ ๋„๊ตฌ : Jenkins & GitLab

์„น์…˜ (3) Monitor

SAST ์ž๋™ ์ ๊ฒ€ ์ดํ›„ ์ •์ƒ์ ์œผ๋กœ ์šด์˜ํ•˜๊ธฐ ์œ„ํ•œ Monitoring ๋ฐฉ์•ˆ์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ ๋„๊ตฌ : Prometheus & Grafana

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

  • ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ๋ชจ๋‘ ์ ์šฉ ๊ฐ€๋Šฅํ•œ DevSecOps ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๊ธฐ๋ณธ์ ์ธ DevOps ํ™˜๊ฒฝ์—์„œ DevSecOps ํ™˜๊ฒฝ์œผ๋กœ ๋„˜์–ด๊ฐ€๊ณ ์ž ๊ณ ๋ฏผ์ค‘์ธ ๋ถ„๋“ค์„ ์œ„ํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

  • ์‹ค์Šต์„ ํ†ตํ•ด ๊ฐ„๋‹จํ•œ DevOps(CI/CD PipeLine) ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ตฌ์ถ•๋œ ํ™˜๊ฒฝ์—์„œ SAST ์ž๋™ ์ ๊ฒ€์„ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์‹ค์Šต ํ™˜๊ฒฝ

  • ์šด์˜ ์ฒด์ œ ๋ฐ ๋ฒ„์ „(OS): Docker๊ฐ€ ๊ตฌ๋™ํ•œ ํ™˜๊ฒฝ ( Windows, Linux OSX, Mac ๋“ฑ)

  • ์‚ฌ์šฉ ๋„๊ตฌ: Docker Desktop

  • PC ์‚ฌ์–‘: ์ด 5๊ฐœ์˜ Docker Image๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹ค์Šต ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. 5๊ฐœ ์ •๋„์˜ Docker Container๊ฐ€ ๋™์‹œ์— ๊ตฌ๋™๋˜๋Š” ์‚ฌ์–‘์ด๋ผ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค

ํ•™์Šต ์ž๋ฃŒ

  • ๊ฐ•์˜ ์ž๋ฃŒ๋Š” PDF๋ฅผ ํ†ตํ•ด ์ œ๊ณตํ•˜๋ฉฐ, ์‹ค์Šต์— ํ•„์š”ํ•œ ์ฝ”๋“œ๋Š” ๊ฐ ๊ฐ•์˜ ์ฒจ๋ถ€ํŒŒ์ผ์„ ํ†ตํ•ด ์ œ๊ณต๋“œ๋ฆฝ๋‹ˆ๋‹ค.


์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • DevSecOps ํ™˜๊ฒฝ ๊ตฌ์ถ•์„ ์œ„ํ•œ CI/CD Pipeline ๊ธฐ๋ฐ˜ SAST/DAST ์ทจ์•ฝ์  ์ ๊ฒ€ ์ž๋™ํ™” ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ฐฉ์•ˆ์— ๋Œ€ํ•ด ์ฃผ๋กœ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

  • SAST/DAST ์— ๋Œ€ํ•œ ์˜คํƒ๋ฅ  ๊ฐ์†Œ ๋ฐฉ์•ˆ, ํƒ์ง€ ๋ฃฐ ๊ณ ๋„ํ™” ๋“ฑ์€ ๋‹ค์–‘ํ•œ SAST/DAST ๋„๊ตฌ๋ฅผ ๋ชจ๋‘ ๋‹ค๋ฃฐ ์ˆ˜ ์—†๊ธฐ์— ์ž๋™ํ™”๋œ DevSecOps ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๊ธฐ๋ฐ˜์„ ๋ชฉ์ ์œผ๋กœ ๋“ค์–ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
    - DevSecOps๋ฅผ ์ฃผ์ œ๋กœ ์‹œ๋ฆฌ์ฆˆ ํ˜•ํƒœ์˜ ๊ฐ•์˜๋ฅผ ๊ณ„์† ์ œ์ž‘ํ•  ์˜ˆ์ •์œผ๋กœ ์˜คํ”ˆ์†Œ์Šค(ex. SonarQube, ZAP) ๋„๊ตฌ๋ฅผ ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์˜คํƒ๋ฅ  ๊ฐ์†Œ ํ˜น์€ ํƒ์ง€ ๋ฃฐ ๊ณ ๋„ํ™”์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์€ ์ถ”๊ฐ€ ์ž‘์„ฑํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.


์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ๊ธฐ์—…์—์„œ DevSecOps ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์‹ถ์€ ๋ถ„

  • DevSecOps ๊ตฌ์ถ•์„ ์œ„ํ•œ ๋ฐฉ์•ˆ ๋ฐ ๋ชฉํ‘œ ์„ค์ •์„ ์œ„ํ•ด ๊ณ ๋ฏผํ•˜๊ณ  ๊ณ„์‹  ๋ถ„

์•ˆ๋…•ํ•˜์„ธ์š”
taesun1114์ž…๋‹ˆ๋‹ค.

443

๋ช…

์ˆ˜๊ฐ•์ƒ

21

๊ฐœ

์ˆ˜๊ฐ•ํ‰

10

๊ฐœ

๋‹ต๋ณ€

4.0

์ 

๊ฐ•์˜ ํ‰์ 

5

๊ฐœ

๊ฐ•์˜

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

13๊ฐœ โˆ™ (1์‹œ๊ฐ„ 54๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!