Skip to main content

์ฝ”๋“œ ์Šค์บ”์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„ค์ • ๊ตฌ์„ฑ

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๊ณ ๊ธ‰ ์„ค์ •์„ ๊ตฌ์„ฑํ•˜์—ฌ ๊ณ ๋„๋กœ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฐ€๋Šฅํ•œ code scanning ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ์—์„œ ๋ณด์•ˆ ์•ฝ์ ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์†Œ์œ ์ž, ์กฐ์ง ์†Œ์œ ์ž, ๋ณด์•ˆ ๊ด€๋ฆฌ์ž ๋ฐ ๊ด€๋ฆฌ์ž ์—ญํ• ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž

Code scanning์€ ๋‹ค์Œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์œ ํ˜•์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • GitHub Code Security๋ฅผ ์ง€์›ํ•˜๋Š” ์กฐ์ง ์†Œ์œ  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ

์ฐธ๊ณ  ํ•ญ๋ชฉ

์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๊ฐ€ ๋จผ์ € code scanning์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•ด์•ผ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub Actions๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์Šค์บ”ํ•˜๋ ค๋ฉด ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๋„ GitHub Actions๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜๊ณ  ํ•„์š”ํ•œ ์ธํ”„๋ผ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์–ดํ”Œ๋ผ์ด์–ธ์Šค์— ๋Œ€ํ•œ ์ฝ”๋“œ ๊ฒ€์‚ฌ ๊ตฌ์„ฑ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

Code scanning์— ๋Œ€ํ•œ ๊ณ ๊ธ‰ ์„ค์ • ์ •๋ณด

code scanning์— ๋Œ€ํ•œ ๊ณ ๊ธ‰ ์„ค์ •์€ code scanning์„(๋ฅผ) ์‚ฌ์šฉ์ž ์ง€์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ํŽธ์ง‘ํ•˜์—ฌ ์ปดํŒŒ์ผ๋œ ์–ธ์–ด๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๊ณ , ์‹คํ–‰ํ•  ์ฟผ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๊ณ , ์Šค์บ”ํ•  ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๊ณ , ํ–‰๋ ฌ ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฒ€์‚ฌ ์ผ์ • ๋ณ€๊ฒฝ, ์›Œํฌํ”Œ๋กœ ํŠธ๋ฆฌ๊ฑฐ ์ •์˜, ์‚ฌ์šฉํ•  ์ „๋ฌธ๊ฐ€ ์‹คํ–‰๊ธฐ ์ง€์ • ๋“ฑ ์›Œํฌํ”Œ๋กœ๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ชจ๋“  ์˜ต์…˜์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub Actions ์›Œํฌํ”Œ๋กœ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์›Œํฌํ”Œ๋กœ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๋Š” GitHub Connect์„(๋ฅผ) ์„ค์žฅํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ code scanning์— ๋Œ€ํ•ด ํƒ€์‚ฌ ์ž‘์—…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์–ดํ”Œ๋ผ์ด์–ธ์Šค์— ๋Œ€ํ•œ ์ฝ”๋“œ ๊ฒ€์‚ฌ ๊ตฌ์„ฑ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

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

์ฐธ๊ณ  ํ•ญ๋ชฉ

์ด ๋ฌธ์„œ์—์„œ๋Š” ์ด GitHub Enterprise Server ๋ฒ„์ „์˜ ์ดˆ๊ธฐ ๋ฆด๋ฆฌ์Šค์— ํฌํ•จ๋œ CodeQL ์ž‘์—…๊ณผ ๊ด€๋ จ CodeQL CLI ๋ฒˆ๋“ค์˜ ๋ฒ„์ „์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์—์„œ ๋” ์ตœ์‹  ๋ฒ„์ „์˜ CodeQL ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์ตœ์‹  ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๋ฌธ์„œ์˜GitHub Enterprise Cloud ๋ฒ„์ „์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ตœ์‹  ๋ฒ„์ „ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์–ดํ”Œ๋ผ์ด์–ธ์Šค์— ๋Œ€ํ•œ ์ฝ”๋“œ ๊ฒ€์‚ฌ ๊ตฌ์„ฑ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

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

ํ•„์ˆ˜ ์กฐ๊ฑด

๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ ๊ธ‰ ์„ค์ •์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

  • CodeQL์ง€์›๋˜๋Š” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ œ3์ž ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ์Šค์บ” ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.
  • GitHub Actions๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • GitHub Code Security๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

GitHub Enterprise Server์„(๋ฅผ) ์‹คํ–‰ ์ค‘์ธ ์„œ๋ฒ„๊ฐ€ ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๊ฐ€ ์„œ๋ฒ„์—์„œ CodeQL ๋ถ„์„ ๋ฒˆ๋“ค์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜์—ฌ CodeQL code scanning์„(๋ฅผ) ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์–ดํ”Œ๋ผ์ด์–ธ์Šค์— ๋Œ€ํ•œ ์ฝ”๋“œ ๊ฒ€์‚ฌ ๊ตฌ์„ฑ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

CodeQL์„(๋ฅผ) ์‚ฌ์šฉํ•˜์—ฌ code scanning์— ๋Œ€ํ•œ ๊ณ ๊ธ‰ ์„ค์ • ๊ตฌ์„ฑ

์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ํŽธ์ง‘ํ•˜์—ฌ CodeQL ๋ถ„์„์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ธ‰ ์„ค์ •์„ ์„ ํƒํ•˜๋ฉด ํ‘œ์ค€ ์›Œํฌํ”Œ๋กœ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜๊ณ  CodeQL ์ž‘์—…์— ๋Œ€ํ•œ ์˜ต์…˜์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ ๋ฐ ์ฝ”๋“œ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„ค์ • ์‚ฌ์šฉ์ž ์ง€์ •์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

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

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

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

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

  4. โ€œCode Securityโ€๊นŒ์ง€ ์•„๋ž˜๋กœ ์Šคํฌ๋กคํ•˜์—ฌ โ€œCodeQL analysisโ€ ํ–‰์—์„œ Set up ๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ, Advanced๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ  ํ•ญ๋ชฉ

    ๊ธฐ๋ณธ ์„ค์ •์—์„œ ๊ณ ๊ธ‰ ์„ค์ •์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ โ€œCodeQL analysisโ€ ํ–‰์—์„œ ๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ, Switch to advanced๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์‹œ๋˜๋Š” ํŒ์—… ์ฐฝ์—์„œ CodeQL ์‚ฌ์šฉ ์ค‘์ง€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    โ€œAdvanced Securityโ€ ์„ค์ •์˜ โ€œCode Securityโ€ ์„น์…˜์˜ ์Šคํฌ๋ฆฐ์ƒท "๊ณ ๊ธ‰ ์„ค์ •" ๋‹จ์ถ”๊ฐ€ ์ฃผํ™ฉ์ƒ‰ ์œค๊ณฝ์„ ์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  5. code scanning๊ฐ€ ์ฝ”๋“œ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜๋ ค๋ฉด ์›Œํฌํ”Œ๋กœ๋ฅผ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.

    ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  CodeQL ๋ถ„์„ ์›Œํฌํ”Œ๋กœ์„(๋ฅผ) ์ปค๋ฐ‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋ถ€๋ถ„์˜ ํƒ€์‚ฌ ์›Œํฌํ”Œ๋กœ์—๋Š” ์ถ”๊ฐ€ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ์›Œํฌํ”Œ๋กœ์˜ ์„ค๋ช…์„ ์ฝ์–ด ๋ด…๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ”๋“œ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„ค์ • ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ ์ปดํŒŒ์ผ๋œ ์–ธ์–ด์— ๋Œ€ํ•œ CodeQL ์ฝ”๋“œ ๊ฒ€์‚ฌํ•˜๊ธฐ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

  6. ๋ณ€๊ฒฝ ๋‚ด์šฉ ์ปค๋ฐ‹... ์„ ํด๋ฆญํ•˜์—ฌ ์ปค๋ฐ‹ ๋ณ€๊ฒฝ ํ˜•์‹์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

    ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ํ˜•์‹์˜ ์Šคํฌ๋ฆฐ์ƒท. ํŒŒ์ผ ์ด๋ฆ„ ์˜ค๋ฅธ์ชฝ์—๋Š” "๋ณ€๊ฒฝ ๋‚ด์šฉ ์ปค๋ฐ‹โ€ฆ"์ด๋ผ๋Š” ๋…น์ƒ‰ ๋‹จ์ถ”๊ฐ€ ์ง„ํ•œ ์ฃผํ™ฉ์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  7. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ํ•„๋“œ์— ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  8. ๊ธฐ๋ณธ ๋ถ„๊ธฐ์— ์ง์ ‘ ์ปค๋ฐ‹ํ• ์ง€ ์•„๋‹ˆ๋ฉด ์ƒˆ ๋ถ„๊ธฐ๋ฅผ ๋งŒ๋“ค๊ณ  ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์„ ์‹œ์ž‘ํ• ์ง€ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  9. ์ƒˆ ํŒŒ์ผ ์ปค๋ฐ‹์„ ํด๋ฆญํ•˜์—ฌ ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์„ ๊ธฐ๋ณธ๊ฐ’ ๋ถ„๊ธฐ์— ์ปค๋ฐ‹ํ•˜๊ฑฐ๋‚˜ ์ƒˆ ํŒŒ์ผ ์ œ์•ˆ์„ ํด๋ฆญํ•˜์—ฌ ํŒŒ์ผ์„ ์ƒˆ ๋ถ„๊ธฐ์— ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.

  10. ์ƒˆ ๋ถ„๊ธฐ๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ ๋งŒ๋“ค๊ธฐ๋ฅผ ์—ด์–ด ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๊ธฐ๋ณธ๊ฐ’ ๋ถ„๊ธฐ์— ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

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

์ฝ”๋“œ ๊ฒ€์‚ฌ์— ๋Œ€ํ•œ on:pull_request ๋ฐ on:push ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์œ ์šฉํ•œ ์šฉ๋„๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ฝ”๋“œ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„ค์ • ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ ์›Œํฌํ”Œ๋กœ ํŠธ๋ฆฌ๊ฑฐ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๋Œ€๋Ÿ‰ ์‚ฌ์šฉ ์„ค์ • ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋Œ€๊ทœ๋ชจ CodeQL ์ฝ”๋“œ ์Šค์บ”์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„ค์ • ๊ตฌ์„ฑ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹จ๊ณ„

์›Œํฌํ”Œ๋กœ๊ฐ€ ํ•œ ๋ฒˆ ์ด์ƒ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉด code scanning ๊ฒฝ๊ณ ์˜ ๊ฒ€์‚ฌ ๋ฐ ํ•ด๊ฒฐ์„ ์‹œ์ž‘ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. code scanning ๊ฒฝ๊ณ ์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ”๋“œ ๊ฒ€์‚ฌ ๊ฒฝ๊ณ  ์ •๋ณด ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ฝ”๋“œ ๊ฒ€์‚ฌ ๊ฒฝ๊ณ  ํ‰๊ฐ€์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

code scanning ์‹คํ–‰์ด ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์˜ ๊ฒ€์‚ฌ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๋ฉด ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์—์„œ ์ฝ”๋“œ ๊ฒ€์‚ฌ ๊ฒฝ๊ณ  ์‹ฌ์‚ฌ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

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

์ถ”๊ฐ€ ์ฐธ๊ณ  ์ž๋ฃŒ