Pentesting CI/CD Methodology

HackTricks ์ง€์›ํ•˜๊ธฐ

VCS

VCS๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ด ์‹œ์Šคํ…œ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ฒƒ์€ git์ด๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ์—…์€ ๋‹ค์Œ ํ”Œ๋žซํผ ์ค‘ ํ•˜๋‚˜์—์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

  • Github

  • Gitlab

  • Bitbucket

  • Gitea

  • ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด(์ž์ฒด VCS ํ”Œ๋žซํผ ์ œ๊ณต)

ํŒŒ์ดํ”„๋ผ์ธ

ํŒŒ์ดํ”„๋ผ์ธ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ํŠน์ • ์ž‘์—…์ด ๋ฐœ์ƒํ•œ ํ›„ ์ฝ”๋“œ์˜ ์‹คํ–‰์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค: ํ‘ธ์‹œ, PR, ํฌ๋ก  ๋“ฑ... ์ด๋“ค์€ ๊ฐœ๋ฐœ์—์„œ ํ”„๋กœ๋•์…˜๊นŒ์ง€์˜ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์€ ์–ด๋”˜๊ฐ€์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š” ์ž๊ฒฉ ์ฆ๋ช…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

VCS ํŽœํ…Œ์ŠคํŒ… ๋ฐฉ๋ฒ•๋ก 

์ผ๋ถ€ VCS ํ”Œ๋žซํผ์ด ์ด ์„น์…˜์„ ์œ„ํ•œ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋”๋ผ๋„, ์šฐ๋ฆฌ๋Š” ์†Œ์Šค ์ฝ”๋“œ ์ œ์–ด์— ๋Œ€ํ•œ ์ž ์žฌ์  ๊ณต๊ฒฉ๋งŒ ๋ถ„์„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ํ”Œ๋žซํผ์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์‚ฌ๋žŒ๋“ค์€ ์ด ํ”Œ๋žซํผ ๋‚ด์—์„œ ๋ถ€์—ฌ๋œ ๊ถŒํ•œ์— ๋Œ€ํ•ด ๋งค์šฐ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๊ฐ€ ์•…์šฉํ•  ์ˆ˜ ์žˆ๋Š” VCS ํ”Œ๋žซํผ์˜ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ๋ˆ„์ถœ: ์ฝ”๋“œ์— ์ปค๋ฐ‹์—์„œ ๋ˆ„์ถœ์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ๊ณต๊ฒฉ์ž๊ฐ€ ๋ฆฌํฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด(๊ณต๊ฐœ์ด๊ฑฐ๋‚˜ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ), ๊ทธ๋Š” ๋ˆ„์ถœ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ ‘๊ทผ: ๊ณต๊ฒฉ์ž๊ฐ€ VCS ํ”Œ๋žซํผ ๋‚ด์˜ ๊ณ„์ •์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๊ทธ๋Š” ๋” ๋งŽ์€ ๊ฐ€์‹œ์„ฑ๊ณผ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋“ฑ๋ก: ์ผ๋ถ€ ํ”Œ๋žซํผ์€ ์™ธ๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • SSO: ์ผ๋ถ€ ํ”Œ๋žซํผ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ, ์œ ํšจํ•œ SSO๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค(๋”ฐ๋ผ์„œ ๊ณต๊ฒฉ์ž๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ์ž์‹ ์˜ github ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

  • ์ž๊ฒฉ ์ฆ๋ช…: ์‚ฌ์šฉ์ž ์ด๋ฆ„+๋น„๋ฐ€๋ฒˆํ˜ธ, ๊ฐœ์ธ ํ† ํฐ, ssh ํ‚ค, Oauth ํ† ํฐ, ์ฟ ํ‚ค... ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ๋ฆฌํฌ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ํ›”์น  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ํ† ํฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์›นํ›…: VCS ํ”Œ๋žซํผ์€ ์›นํ›…์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด๋“ค์ด ๋ณด์ด์ง€ ์•Š๋Š” ๋น„๋ฐ€๋กœ ๋ณดํ˜ธ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๊ณต๊ฒฉ์ž๊ฐ€ ์ด๋ฅผ ์•…์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋น„๋ฐ€์ด ์—†๋‹ค๋ฉด, ๊ณต๊ฒฉ์ž๋Š” ์ œ3์ž ํ”Œ๋žซํผ์˜ ์›นํ›…์„ ์•…์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋น„๋ฐ€์ด URL์— ์žˆ๋‹ค๋ฉด, ๋™์ผํ•œ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉฐ ๊ณต๊ฒฉ์ž๋Š” ๋น„๋ฐ€์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  • ์ฝ”๋“œ ์†์ƒ: ์•…์˜์ ์ธ ํ–‰์œ„์ž๊ฐ€ ๋ฆฌํฌ์— ๋Œ€ํ•ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ์“ฐ๊ธฐ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด, ๊ทธ๋Š” ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ์ฃผ์ž…ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋Š” ๋ธŒ๋žœ์น˜ ๋ณดํ˜ธ๋ฅผ ์šฐํšŒํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ–‰๋™์€ ๋‹ค์–‘ํ•œ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋ฅผ ์†์ƒ์‹œ์ผœ ํ”„๋กœ๋•์…˜์„ ์†์ƒ์‹œํ‚ค๊ธฐ.

  • ๋ฉ”์ธ(๋˜๋Š” ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜)์„ ์†์ƒ์‹œ์ผœ ๊ฐœ๋ฐœ์ž ๋จธ์‹ ์„ ์†์ƒ์‹œํ‚ค๊ธฐ(๊ฐœ๋ฐœ์ž๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž์‹ ์˜ ๋จธ์‹ ์—์„œ ํ…Œ์ŠคํŠธ, ํ…Œ๋ผํผ ๋˜๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค).

  • ํŒŒ์ดํ”„๋ผ์ธ ์†์ƒ(๋‹ค์Œ ์„น์…˜ ํ™•์ธ)

ํŒŒ์ดํ”„๋ผ์ธ ํŽœํ…Œ์ŠคํŒ… ๋ฐฉ๋ฒ•๋ก 

ํŒŒ์ดํ”„๋ผ์ธ์„ ์ •์˜ํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ํ˜ธ์ŠคํŒ…๋œ CI ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ์‹คํ–‰๋˜๋Š” ์ž‘์—…์˜ ์ˆœ์„œ, ํ๋ฆ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์กฐ๊ฑด ๋ฐ ๋นŒ๋“œ ํ™˜๊ฒฝ ์„ค์ •์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ผ๊ด€๋œ ์ด๋ฆ„๊ณผ ํ˜•์‹์„ ๊ฐ€์ง€๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด โ€” Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI), ๋ฐ .github/workflows ์•„๋ž˜์— ์œ„์น˜ํ•œ GitHub Actions YAML ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ๋˜๋ฉด, ํŒŒ์ดํ”„๋ผ์ธ ์ž‘์—…์€ ์„ ํƒ๋œ ์†Œ์Šค(์˜ˆ: ์ปค๋ฐ‹/๋ธŒ๋žœ์น˜)์—์„œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , CI ๊ตฌ์„ฑ ํŒŒ์ผ์— ์ง€์ •๋œ ๋ช…๋ น์„ ํ•ด๋‹น ์ฝ”๋“œ์— ๋Œ€ํ•ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ณต๊ฒฉ์ž์˜ ๊ถ๊ทน์ ์ธ ๋ชฉํ‘œ๋Š” ์–ด๋–ค ์‹์œผ๋กœ๋“  ์ด ๊ตฌ์„ฑ ํŒŒ์ผ์ด๋‚˜ ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น์„ ์†์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

PPE - ์˜ค์—ผ๋œ ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰

์˜ค์—ผ๋œ ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰(PPE) ๊ฒฝ๋กœ๋Š” SCM ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ถŒํ•œ์„ ์•…์šฉํ•˜์—ฌ CI ํŒŒ์ดํ”„๋ผ์ธ์„ ์กฐ์ž‘ํ•˜๊ณ  ํ•ด๋กœ์šด ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž๋Š” CI ๊ตฌ์„ฑ ํŒŒ์ผ์ด๋‚˜ ํŒŒ์ดํ”„๋ผ์ธ ์ž‘์—…์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ์•…์„ฑ ๋ช…๋ น์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” CI ํŒŒ์ดํ”„๋ผ์ธ์„ "์˜ค์—ผ"์‹œ์ผœ ์ด๋Ÿฌํ•œ ์•…์„ฑ ๋ช…๋ น์ด ์‹คํ–‰๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์•…์˜์ ์ธ ํ–‰์œ„์ž๊ฐ€ PPE ๊ณต๊ฒฉ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  • VCS ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ดํ”„๋ผ์ธ์€ ํ‘ธ์‹œ ๋˜๋Š” ํ’€ ์š”์ฒญ์ด ์ˆ˜ํ–‰๋  ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. (์ ‘๊ทผ ๊ถŒํ•œ์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์š”์•ฝ์€ VCS ํŽœํ…Œ์ŠคํŒ… ๋ฐฉ๋ฒ•๋ก ์„ ํ™•์ธํ•˜์„ธ์š”).

  • ๋•Œ๋•Œ๋กœ ์™ธ๋ถ€ PR์ด "์“ฐ๊ธฐ ์ ‘๊ทผ"์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Œ์„ ์ฃผ์˜ํ•˜์„ธ์š”.

  • ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋”๋ผ๋„, ๊ทธ๋Š” CI ๊ตฌ์„ฑ ํŒŒ์ผ์ด๋‚˜ ๊ตฌ์„ฑ์— ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ด๋ฅผ ์œ„ํ•ด ๊ทธ๋Š” ๋ธŒ๋žœ์น˜ ๋ณดํ˜ธ๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PPE์—๋Š” 3๊ฐ€์ง€ ๋ณ€ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • D-PPE: ์ง์ ‘ PPE ๊ณต๊ฒฉ์€ ํ–‰์œ„์ž๊ฐ€ ์‹คํ–‰๋  CI ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • I-DDE: ๊ฐ„์ ‘ PPE ๊ณต๊ฒฉ์€ ํ–‰์œ„์ž๊ฐ€ ์‹คํ–‰๋  CI ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์˜์กดํ•˜๋Š” ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋ฉ”์ดํฌ ํŒŒ์ผ ๋˜๋Š” ํ…Œ๋ผํผ ๊ตฌ์„ฑ).

  • ๊ณต๊ฐœ PPE ๋˜๋Š” 3PE: ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ํŒŒ์ดํ”„๋ผ์ธ์€ ๋ฆฌํฌ์— ์“ฐ๊ธฐ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด๋“ค์€ ์กฐ์ง์˜ ์ผ์›์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Œ) ์™œ๋ƒํ•˜๋ฉด ๊ทธ๋“ค์€ PR์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  • 3PE ๋ช…๋ น ์ฃผ์ž…: ์ผ๋ฐ˜์ ์œผ๋กœ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์€ PR์— ๋Œ€ํ•œ ์ •๋ณด๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ทธ ๊ฐ’์ด ๊ณต๊ฒฉ์ž์— ์˜ํ•ด ์ œ์–ด๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด(์˜ˆ: PR์˜ ์ œ๋ชฉ) ๊ทธ๋ฆฌ๊ณ  ์œ„ํ—˜ํ•œ ์žฅ์†Œ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด(์˜ˆ: sh ๋ช…๋ น ์‹คํ–‰), ๊ณต๊ฒฉ์ž๋Š” ๊ฑฐ๊ธฐ์— ๋ช…๋ น์„ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•…์šฉ ์ด์ 

ํŒŒ์ดํ”„๋ผ์ธ์„ ์˜ค์—ผ์‹œํ‚ค๋Š” 3๊ฐ€์ง€ ๋ณ€ํ˜•์„ ์•Œ๊ณ  ๋‚˜๋ฉด, ๊ณต๊ฒฉ์ž๊ฐ€ ์„ฑ๊ณต์ ์ธ ์•…์šฉ ํ›„์— ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

  • ๋น„๋ฐ€: ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, ํŒŒ์ดํ”„๋ผ์ธ์€ ์ž‘์—…์„ ์œ„ํ•ด ๊ถŒํ•œ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค(์ฝ”๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , ๋นŒ๋“œํ•˜๊ณ , ๋ฐฐํฌํ•˜๋Š” ๋“ฑ...) ๊ทธ๋ฆฌ๊ณ  ์ด ๊ถŒํ•œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„๋ฐ€๋กœ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„๋ฐ€์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋‚˜ ์‹œ์Šคํ…œ ๋‚ด ํŒŒ์ผ์„ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณต๊ฒฉ์ž๋Š” ํ•ญ์ƒ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ๋น„๋ฐ€์„ ์œ ์ถœํ•˜๋ ค๊ณ  ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ํŒŒ์ดํ”„๋ผ์ธ ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ๊ณต๊ฒฉ์ž๋Š” ๊ตฌ์„ฑ์—์„œ ๋น„๋ฐ€์„ ์ง€์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ CI ๊ตฌ์„ฑ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด(I-PPE ์˜ˆ๋ฅผ ๋“ค์–ด), ๊ทธ๋Š” ๊ทธ ํŒŒ์ดํ”„๋ผ์ธ์ด ๊ฐ€์ง„ ๋น„๋ฐ€๋งŒ ์œ ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณ„์‚ฐ: ์ฝ”๋“œ๋Š” ์–ด๋”˜๊ฐ€์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์‹คํ–‰๋˜๋Š” ์œ„์น˜์— ๋”ฐ๋ผ ๊ณต๊ฒฉ์ž๋Š” ๋” ๋‚˜์•„๊ฐ€์„œ ํ”ผ๋ฒ—ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์˜จํ”„๋ ˆ๋ฏธ์Šค: ํŒŒ์ดํ”„๋ผ์ธ์ด ์˜จํ”„๋ ˆ๋ฏธ์Šค์—์„œ ์‹คํ–‰๋œ๋‹ค๋ฉด, ๊ณต๊ฒฉ์ž๋Š” ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํด๋ผ์šฐ๋“œ: ๊ณต๊ฒฉ์ž๋Š” ํด๋ผ์šฐ๋“œ์˜ ๋‹ค๋ฅธ ๋จธ์‹ ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋˜ํ•œ IAM ์—ญํ• /์„œ๋น„์Šค ๊ณ„์ •์˜ ํ† ํฐ์„ ์œ ์ถœํ•˜์—ฌ ํด๋ผ์šฐ๋“œ ๋‚ด๋ถ€์—์„œ ์ถ”๊ฐ€ ์ ‘๊ทผ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ”Œ๋žซํผ ๋จธ์‹ : ๋•Œ๋•Œ๋กœ ์ž‘์—…์€ ํŒŒ์ดํ”„๋ผ์ธ ํ”Œ๋žซํผ ๋จธ์‹  ๋‚ด์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋” ์ด์ƒ์˜ ์ ‘๊ทผ์ด ์—†๋Š” ํด๋ผ์šฐ๋“œ ๋‚ด์— ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„ ํƒํ•˜๊ธฐ: ๋•Œ๋•Œ๋กœ ํŒŒ์ดํ”„๋ผ์ธ ํ”Œ๋žซํผ์€ ์—ฌ๋Ÿฌ ๋จธ์‹ ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋งŒ์•ฝ ๋‹น์‹ ์ด CI ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๋‹น์‹ ์€ ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์œ„์น˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒํ™ฉ์—์„œ ๊ณต๊ฒฉ์ž๋Š” ์•„๋งˆ๋„ ๊ฐ ๊ฐ€๋Šฅํ•œ ๋จธ์‹ ์—์„œ ๋ฆฌ๋ฒ„์Šค ์…ธ์„ ์‹คํ–‰ํ•˜์—ฌ ๋” ๋‚˜์•„๊ฐ€์„œ ์•…์šฉํ•˜๋ ค๊ณ  ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ํ”„๋กœ๋•์…˜ ์†์ƒ: ๋งŒ์•ฝ ๋‹น์‹ ์ด ํŒŒ์ดํ”„๋ผ์ธ ๋‚ด์— ์žˆ๊ณ  ์ตœ์ข… ๋ฒ„์ „์ด ๊ทธ๋กœ๋ถ€ํ„ฐ ๋นŒ๋“œ๋˜๊ณ  ๋ฐฐํฌ๋œ๋‹ค๋ฉด, ๋‹น์‹ ์€ ํ”„๋กœ๋•์…˜์—์„œ ์‹คํ–‰๋  ์ฝ”๋“œ๋ฅผ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ๊ด€๋ จ๋œ ์ •๋ณด

๋„๊ตฌ ๋ฐ CIS ๋ฒค์น˜๋งˆํฌ

  • Chain-bench๋Š” ์ƒˆ๋กœ์šด CIS ์†Œํ”„ํŠธ์›จ์–ด ๊ณต๊ธ‰๋ง ๋ฒค์น˜๋งˆํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณด์•ˆ ์ค€์ˆ˜๋ฅผ ์œ„ํ•ด ์†Œํ”„ํŠธ์›จ์–ด ๊ณต๊ธ‰๋ง ์Šคํƒ์„ ๊ฐ์‚ฌํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌ๋Š” ์ „์ฒด SDLC ํ”„๋กœ์„ธ์Šค์— ์ดˆ์ ์„ ๋งž์ถ”๋ฉฐ, ์ฝ”๋“œ ์‹œ๊ฐ„์—์„œ ๋ฐฐํฌ ์‹œ๊ฐ„๊นŒ์ง€์˜ ์œ„ํ—˜์„ ๋“œ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์œ„ 10 CI/CD ๋ณด์•ˆ ์œ„ํ—˜

Cider์— ๋”ฐ๋ฅด๋ฉด ์ƒ์œ„ 10 CI/CD ์œ„ํ—˜์— ๋Œ€ํ•œ ํฅ๋ฏธ๋กœ์šด ๊ธฐ์‚ฌ๋ฅผ ํ™•์ธํ•˜์„ธ์š”: https://www.cidersecurity.io/top-10-cicd-security-risks/

์‹คํ—˜์‹ค

  • ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ ํ”Œ๋žซํผ์—์„œ ๋กœ์ปฌ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์„œ ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Gitea + Jenkins ์‹คํ—˜์‹ค: https://github.com/cider-security-research/cicd-goat

์ž๋™ ๋„๊ตฌ

  • Checkov: Checkov๋Š” ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜-์ฝ”๋“œ์— ๋Œ€ํ•œ ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ  ๋ฌธํ—Œ

HackTricks ์ง€์›ํ•˜๊ธฐ

Last updated