Skip to main content

๋Œ€๊ทœ๋ชจ CodeQL ์ฝ”๋“œ ์Šค์บ”์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„ค์ • ๊ตฌ์„ฑ

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

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

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

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

  • GitHub.com์— ๋Œ€ํ•œ ํผ๋ธ”๋ฆญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ
  • GitHub Code Security๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •๋œ GitHub Team์˜ ์กฐ์ง ์†Œ์œ  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ

๋Œ€๊ทœ๋ชจ CodeQL์„(๋ฅผ) ์‚ฌ์šฉํ•˜์—ฌ code scanning์— ๋Œ€ํ•œ ๊ณ ๊ธ‰ ์„ค์ •์„ ๋Œ€๊ทœ๋ชจ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ์ •๋ณด

์กฐ์ง์˜ ์—ฌ๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•ด ๊ณ ๋„๋กœ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฐ€๋Šฅํ•œ code scanning ์„ค์ •์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ์กฐ์ง์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ๊ธฐ๋ณธ ์„ค์ •์— ์ ํ•ฉํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณ ๊ธ‰ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ๋กœ code scanning์„(๋ฅผ) ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๊ณ ๊ธ‰ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜๋ ค๋ฉด ๋Œ€๋Ÿ‰ ๊ตฌ์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์กฐ์ง์— ๋Œ€ํ•ด GitHub Actions์„(๋ฅผ) ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ๊ธ‰ ์„ค์ • ์‚ฌ์šฉ ์„ค์ •

๊ธฐ๋ณธ ์„ค์ •์— ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋Œ€๋Ÿ‰ ๊ตฌ์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๊ณ ๊ธ‰ ์„ค์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋™์ผํ•œ code scanning ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ทธ๋ฃน์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜์—ฌ Java ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ชจ๋“  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.
  2. ์ ์ ˆํ•œ ๊ตฌ์„ฑ์œผ๋กœ CodeQL ์ž‘์—…์„ ํ˜ธ์ถœํ•˜๋Š” GitHub Actions ์›Œํฌํ”Œ๋กœ๋ฅผ ๋งŒ๋“ค๊ณ  ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ”๋“œ ์Šค์บ”์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„ค์ • ๊ตฌ์„ฑ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.
  3. ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ์ง€์ • ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๊ทธ๋ฃน์˜ ๊ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์›Œํฌํ”Œ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

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

์ฐธ๊ณ  ํ•ญ๋ชฉ

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

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

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

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