Skip to main content

๊ธฐ๋ณธ ์„ค์ • ๊ตฌ์„ฑ ํŽธ์ง‘

์š”๊ตฌ ์‚ฌํ•ญ์„ ๋” ์ž˜ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด code scanning์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์„ค์ •์˜ ๊ธฐ์กด ๊ตฌ์„ฑ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ฐ€ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๊ด€๋ฆฌ์ž ์—ญํ• ์ด ์žˆ๋Š” ์กฐ์ง ์†Œ์œ ์ž, ๋ณด์•ˆ ๊ด€๋ฆฌ์ž ๋ฐ ์กฐ์ง ๊ตฌ์„ฑ์›

๊ธฐ๋ณธ ์„ค์ • ๊ตฌ์„ฑ ํŽธ์ง‘ ์ •๋ณด

๊ธฐ๋ณธ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ์˜ ์ดˆ๊ธฐ ๋ถ„์„์„ ์‹คํ–‰ํ•œ ํ›„์—๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋” ์ž˜ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์„ค์ •์˜ ๊ธฐ์กด ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ๋‹ค์Œ ์‚ฌํ•ญ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ์„ค์ •์ด ๋ถ„์„ํ•  ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • ์ฟผ๋ฆฌ ๋„๊ตฌ ๋ชจ์Œ์€ ๋ถ„์„ ์ค‘์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฟผ๋ฆฌ ๋„๊ตฌ ๋ชจ์Œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” CodeQL ์ฟผ๋ฆฌ ๋„๊ตฌ ๋ชจ์Œ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.
  • ๋ถ„์„์— ์‚ฌ์šฉํ•  ์œ„ํ˜‘ ๋ชจ๋ธ(๊ณต๊ฐœ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ)์ž…๋‹ˆ๋‹ค. ์œ„ํ˜‘ ๋ชจ๋ธ์„ ์„ ํƒํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์œ„ํ—˜์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ์˜ค์—ผ๋œ ๋ฐ์ดํ„ฐ์˜ ์›๋ณธ์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ๊ณต๊ฐœ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ์ค‘์— ์œ„ํ˜‘ ๋ชจ๋ธ์„ Java/Kotlin ๋ฐ C# ๋ถ„์„์šฉ์œผ๋กœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์œ„ํ˜‘ ๋ชจ๋ธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ธฐ๋ณธ ์„ค์ •์— ์˜ค์—ผ๋œ ๋ฐ์ดํ„ฐ์˜ ๋กœ์ปฌ ์›๋ณธ ํฌํ•จ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ CodeQL์— ํฌํ•จ๋œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ธ์‹๋˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ CodeQL ๋ชจ๋ธ ํŒฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ์„ค์ •์—์„œ CodeQL ๋ฒ”์œ„๋ฅผ ํ™•์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ •๋ณด๋Š” ๊ธฐ๋ณธ ์„ค์ •์—์„œ CodeQL ๋ชจ๋ธ ํŒฉ์„ ์‚ฌ์šฉํ•˜์—ฌ CodeQL ์ ์šฉ ๋ฒ”์œ„ ํ™•์žฅ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

code scanning ๊ตฌ์„ฑ์˜ ๋‹ค๋ฅธ ์ธก๋ฉด์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ ๊ธ‰ ์„ค์ •์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ”๋“œ ์Šค์บ”์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„ค์ • ๊ตฌ์„ฑ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ๋ณธ ์„ค์ •์˜ ๊ธฐ์กด ๊ตฌ์„ฑ ์‚ฌ์šฉ์ž ์ง€์ •

  1. GitHub์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ธฐ๋ณธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„ ์•„๋ž˜์—์„œ ์„ค์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. "์„ค์ •" ํƒญ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ์„ค์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ํƒญ์„ ๋ณด์—ฌ ์ฃผ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํ—ค๋”์˜ ์Šคํฌ๋ฆฐ์ƒท. "์„ค์ •" ํƒญ์ด ์ง„ํ•œ ์ฃผํ™ฉ์ƒ‰ ์œค๊ณฝ์„ ์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  3. ์‚ฌ์ด๋“œ๋ฐ”์˜ "Security" ์„น์…˜์—์„œ Advanced Security ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. "Code Security" ์„น์…˜์˜ "CodeQL analysis" ํ–‰์—์„œ ๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ, View CodeQL configuration์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. "CodeQL default configuration" ์ฐฝ์—์„œ Edit๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  6. ์„ ํƒ์ ์œผ๋กœ "์–ธ์–ด" ์„น์…˜์—์„œ ๋ถ„์„์„ ์œ„ํ•ด ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์„ ํƒ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

  7. ํ•„์š”์— ๋”ฐ๋ผ "Scan settings" ์„น์…˜์˜ "Query suite" ํ–‰์—์„œ ์ฝ”๋“œ์— ๋Œ€ํ•ด ์‹คํ–‰ํ•  ๋‹ค๋ฅธ ์ฟผ๋ฆฌ ๋„๊ตฌ ๋ชจ์Œ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  8. ํ•„์š”์— ๋”ฐ๋ผ ๋ ˆ์ด๋ธ”์ด ์ง€์ •๋œ ์‹คํ–‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด "CodeQL default configuration" ๋ชจ๋‹ฌ ๋Œ€ํ™” ์ƒ์ž์˜ "Runner type" ์„น์…˜์—์„œ Standard GitHub runner ๋ฅผ ์„ ํƒํ•˜์—ฌ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ์—ฐ ๋‹ค์Œ, Labeled runner๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ, "์‹คํ–‰๊ธฐ ๋ ˆ์ด๋ธ”" ์˜†์— ๊ธฐ์กด ์ž์ฒด ํ˜ธ์ŠคํŒ… ๋˜๋Š” GitHub ํ˜ธ์ŠคํŒ… ์‹คํ–‰๊ธฐ์˜ ๋ ˆ์ด๋ธ”์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ”๋“œ ์Šค์บ”์„ ์œ„ํ•œ ๊ธฐ๋ณธ ์„ค์ • ๊ตฌ์„ฑ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

  9. (๊ณต๊ฐœ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ) ํ•„์š”์— ๋”ฐ๋ผ "๊ฒ€์‚ฌ ์„ค์ •" ์„น์…˜์˜ "์œ„ํ˜‘ ๋ชจ๋ธ" ํ–‰์—์„œ ์›๊ฒฉ ๋ฐ ๋กœ์ปฌ ์›๋ณธ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ์ง€์›๋˜๋Š” ์–ธ์–ด(Java/Kotlin ๋ฐ C#)๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  10. ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์ƒˆ ๊ตฌ์„ฑ์œผ๋กœ ์ฝ”๋“œ์˜ ์ดˆ๊ธฐ ๋ถ„์„์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋ณ€๊ฒฝ ๋‚ด์šฉ ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ํ–ฅํ›„ ๋ชจ๋“  ๋ถ„์„์—์„œ๋Š” ์ƒˆ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ ์‹คํŒจ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒฝ๊ณ  ์‹ฌ๊ฐ๋„ ์ •์˜

๋‹ค์Œ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ถฉ์กฑ๋  ๊ฒฝ์šฐ ๊ทœ์น™ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹น๊ฒจ๋ฐ›๊ธฐ ์š”์ฒญ์ด ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•„์ˆ˜ ๋„๊ตฌ๊ฐ€ ๊ทœ์น™ ์ง‘ํ•ฉ์— ์ •์˜๋œ ์‹ฌ๊ฐ๋„์— ๋Œ€ํ•œ code scanning ๊ฒฝ๊ณ ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํ•„์ˆ˜ code scanning ๋„๊ตฌ์˜ ๋ถ„์„์ด ์•„์ง ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

  • ํ•„์ˆ˜ code scanning ๋„๊ตฌ๊ฐ€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•ด ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ”๋“œ ๊ฒ€์‚ฌ ๋ณ‘ํ•ฉ ๋ณดํ˜ธ ์„ค์ •์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”. ๊ทœ์น™ ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์ •๋ณด๋Š” ๊ทœ์น™ ์„ธํŠธ ์ •๋ณด์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ๋ณธ ์„ค์ •์— ์˜ค์—ผ๋œ ๋ฐ์ดํ„ฐ์˜ ๋กœ์ปฌ ์›๋ณธ ํฌํ•จ

์ฐธ๊ณ  ํ•ญ๋ชฉ

์œ„ํ˜‘ ๋ชจ๋ธ์€ ํ˜„์žฌ ๊ณต๊ฐœ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฒ„์ „์ด๋ฉฐ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋™์•ˆ, ์œ„ํ˜‘ ๋ชจ๋ธ์„ Java/Kotlin ๋ฐ C#์šฉ์œผ๋กœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

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

๊ธฐ๋ณธ ์„ค์ • ๊ตฌ์„ฑ์— ์‚ฌ์šฉ๋˜๋Š” ์œ„ํ˜‘ ๋ชจ๋ธ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ธฐ๋ณธ ์„ค์ •์˜ ๊ธฐ์กด ๊ตฌ์„ฑ ์‚ฌ์šฉ์ž ์ง€์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ๋ณธ ์„ค์ •์—์„œ CodeQL ๋ชจ๋ธ ํŒฉ์„ ์‚ฌ์šฉํ•˜์—ฌ CodeQL ์ ์šฉ ๋ฒ”์œ„ ํ™•์žฅ

์ฐธ๊ณ  ํ•ญ๋ชฉ

CodeQL ๋ชจ๋ธ ํŒฉ์€ ํ˜„์žฌ ๊ณต๊ฐœ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ์ƒํƒœ์ด๋ฉฐ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ ํŒฉ์€ C/C++, C#, Java/Kotlin, Python, Ruby ๋ถ„์„์„ ์œ„ํ•ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

Visual Studio Code์— ๋Œ€ํ•œ CodeQL ํ™•์žฅ์˜ CodeQL ๋ชจ๋ธ ํŽธ์ง‘๊ธฐ์—์„œ C#, Java/Kotlin, Python, Ruby์— ๋Œ€ํ•œ ๋ชจ๋ธ๋ง ์ข…์†์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

CodeQL์— ํฌํ•จ๋œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ธ์‹๋˜์ง€ ์•Š๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ข…์†์„ฑ์„ ๋ชจ๋ธ๋งํ•˜๊ณ  code scanning ๋ถ„์„์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ •๋ณด๋Š” CodeQL ์„ค๋ช…์„œ์˜ ์ง€์›๋˜๋Š” ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ๋ณธ ์„ค์ •์˜ ๊ฒฝ์šฐ CodeQL ๋ชจ๋ธ ํŒฉ์—์„œ ์ถ”๊ฐ€ ์ข…์†์„ฑ์˜ ๋ชจ๋ธ์„ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ CodeQL ๋ชจ๋ธ ํŒฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ์„ค์ •์—์„œ ์ ์šฉ ๋ฒ”์œ„๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์กฐ์ง์˜ ๋ชจ๋“  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•ด ๋Œ€๊ทœ๋ชจ๋กœ ์ ์šฉ ๋ฒ”์œ„๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CodeQL ๋ชจ๋ธ ํŒฉ ๋ฐ ์ง์ ‘ ์ž‘์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” CodeQL ๋ชจ๋ธ ํŽธ์ง‘๊ธฐ ์‚ฌ์šฉ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ ์šฉ ๋ฒ”์œ„ ํ™•์žฅ

  1. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ .github/codeql/extensions ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ codeql-pack.yml ํŒŒ์ผ์— ํฌํ•จํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋ธ ํŒฉ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ ๋ถ„์„์— ํฌํ•จํ•˜๋ ค๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ชจ๋ธ์ด ํฌํ•จ๋œ .yml ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ชจ๋ธ ํŒฉ์ด code scanning ๋ถ„์„์—์„œ ์ž๋™์œผ๋กœ ๊ฒ€์ƒ‰๋˜๊ณ  ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  3. ๋‚˜์ค‘์— ๊ณ ๊ธ‰ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ .github/codeql/extensions ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ชจ๋ธ ํŒฉ์ด ๊ณ„์† ์ธ์‹๋˜๊ณ  ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์กฐ์ง์˜ ๋ชจ๋“  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ ์šฉ ๋ฒ”์œ„ ํ™•์žฅ

์ฐธ๊ณ  ํ•ญ๋ชฉ

์กฐ์ง์˜ ๋ชจ๋“  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ CodeQL ๋ชจ๋ธ ํŒฉ์œผ๋กœ ์ ์šฉ ๋ฒ”์œ„๋ฅผ ํ™•์žฅํ•˜๋Š” ๊ฒฝ์šฐ ์ง€์ •ํ•œ ๋ชจ๋ธ ํŒฉ์€ GitHub Container registry์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ code scanning์„(๋ฅผ) ์‹คํ–‰ํ•˜๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ž‘์—…์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

  1. GitHub์˜ ์˜ค๋ฅธ์ชฝ ์œ„ ๋ชจ์„œ๋ฆฌ์—์„œ ํ”„๋กœํ•„ ์‚ฌ์ง„์„ ์„ ํƒํ•œ ๋‹ค์Œ, Your organizations๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  2. ์กฐ์ง ์ด๋ฆ„์—์„œ ์„ค์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. "์„ค์ •" ํƒญ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ์„ค์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์กฐ์ง ํ”„๋กœํ•„์— ์žˆ๋Š” ์—ฌ๋Ÿฌ ํƒญ์˜ ์Šคํฌ๋ฆฐ์ƒท. "์„ค์ •" ํƒญ์ด ์ง„ํ•œ ์ฃผํ™ฉ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  3. ์‚ฌ์ด๋“œ๋ฐ”์˜ "Security" ์„น์…˜์—์„œ Advanced Security ๋ฅผ ํด๋ฆญํ•œ ๋‹ค์Œ, Global settings๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. "Code scanning" ์„น์…˜์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

  5. "Expand CodeQL analysis" ์˜†์— ์žˆ๋Š” Configure๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

  6. ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒŒ์‹œ๋œ ๋ชจ๋ธ ํŒฉ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํ•œ ์ค„๋‹น ํ•˜๋‚˜์”ฉ ์ž…๋ ฅํ•œ ๋‹ค์Œ ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์กฐ์ง์˜ ์„ค์ •์— ์žˆ๋Š” "CodeQL ๋ถ„์„ ํ™•์žฅ" ๋ณด๊ธฐ์˜ ์Šคํฌ๋ฆฐ์ƒท

  7. ๊ธฐ๋ณธ ์„ค์ •์ด ํ™œ์„ฑํ™”๋œ ์กฐ์ง์˜ ๋ชจ๋“  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ code scanning์ด(๊ฐ€) ์‹คํ–‰๋  ๋•Œ ๋ชจ๋ธ ํŒฉ์ด ์ž๋™์œผ๋กœ ๊ฒ€์ƒ‰๋˜๊ณ  ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.