์ฝ๋ ๊ฒ์ฌ ๋ฌธ์ ํด๊ฒฐ
code scanning์(๋ฅผ) ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ถ์ํ ๋ ์๊ธฐ์น ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ ์ ์์ต๋๋ค.
์ค๋ฅ: "์ด ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ฝ๋ ๊ฒ์์ ์ฌ์ฉํ๋ ค๋ฉด GitHub Code Security or GitHub Advanced Security๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํด์ผ ํฉ๋๋ค."
์ด ์ค๋ฅ๊ฐ ํ์๋๋ฉด GitHub Code Security๊ฐ ํ์ฑํ๋์ด ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
์์ฑ๋ ์ฝ๋์์ ๋ฐ๊ฒฌ๋ ๊ฒฝ๊ณ
code scanning์(๋ฅผ) ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ถ์ํ ๋ ๋ถ์ํ๋ ค๋ ์ฝ๋๋ง ๋น๋ํ ์ ์์ต๋๋ค.
์ฝ๋ ๊ฒ์ฌ ๋ถ์ ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค
code scanning ๊ตฌ์ฑ์ ๋ฏธ์ธ ์กฐ์ ํ์ฌ ๋ถ์ ์๊ฐ์ ์ต์ํํ ์ ์์ต๋๋ค.
์ปดํ์ผ๋ ์ธ์ด์ ๋ํ ์๋ ๋น๋ ์คํจ
์๋ ๋น๋์ ์คํจํ๋ ๊ฒฝ์ฐ ์ปดํ์ผ๋ ์ธ์ด์ ๋ํ ํน์ ๋น๋ ๋จ๊ณ๋ฅผ ์ฌ์ฉํ๋๋ก code scanning์(๋ฅผ) ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
C# ์ปดํ์ผ๋ฌ๊ฐ ์๊ธฐ์น ์๊ฒ ์คํจ
MSBuild C# ์ปดํ์ผ์ด ์๊ธฐ์น ์๊ฒ ์คํจํ๋ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก์ ํธ ํ์ผ์ ์์ ํด์ผ ํ ์ ์์ต๋๋ค.
ํ๋ผ์ด๋น ๋ฆฌํฌ์งํ ๋ฆฌ์์ CodeQL์ ์ฌ์ฉํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
ํ๋ผ์ด๋น ๋ฆฌํฌ์งํ ๋ฆฌ์์ code scanning์ ์ฌ์ฉํ๋ ค๋ฉด GitHub Code Security๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ์ค์ ์ ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆผ
๊ธฐ๋ณธ ์ค์ ์ฌ์ฉ์ด ์ค๋จ๋์๋ค๊ณ ์๊ฐ๋๋ฉด ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์์ํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถ์ถ ์ค๋ฅ
์์ฑ๋ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ์ ์ถ์ถ ์ค๋ฅ๊ฐ ์ํฅ์ ์ฃผ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ ์ ์์ต๋๋ค.
CodeQL์ด ์์๋ณด๋ค ์ ์ ์ค์ ์ค์บํ์ต๋๋ค.
CodeQL์ด(๊ฐ) ์์๋ณด๋ค ์ ์ ์ฝ๋๋ฅผ ๋ถ์ํ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ง์ ๋น๋ ๋ช ๋ น์ ์ฌ์ฉํด์ผ ํ ์ ์์ต๋๋ค.
๋ก๊ทธ๊ฐ ์ถฉ๋ถํ ์์ธํ ์ค๋ช ๋์ง ์์
๋ก๊ทธ์ ์ธ๋ถ ์์ค์ ๋์ด๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
์ค๋ฅ: โ๋น๋ํ๋ ๋์ ์์ค ์ฝ๋๊ฐ ํ์๋์ง ์์โ
CodeQL์ด(๊ฐ) ์์ค ์ฝ๋๋ฅผ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ code scanning ๋ถ์์ ์ฐจ๋จ ํด์ ํด์ผ ํฉ๋๋ค.
์ค๋ฅ: โ.ql ํ์ผ, .qls ํ์ผ, ๋๋ ํฐ๋ฆฌ ๋๋ ์ฟผ๋ฆฌ ํฉ ์ฌ์์ด ์๋๋๋ค.โ
CodeQL์์ ๋ถ์์ ์ํด ์ง์ ๋ ์ฟผ๋ฆฌ ๋๋ ์ฟผ๋ฆฌ ์งํฉ ์ค ํ๋๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ค๋ฅ: "๋์คํฌ ๋ถ์กฑ" ๋๋ ์ค๋ฅ: "๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ"
GitHub Actions์์ ์ด๋ฌํ ์ค๋ฅ ์ค ํ๋๊ฐ ํ์๋๋ฉด ์์ฒด ํธ์คํ ์คํ๊ธฐ์ ์ฌ์์ ๊ฒํ ํด ๋ณด์ธ์.
๊ฒฐ๊ณผ๋ ์์๊ณผ ๋ค๋ฆ ๋๋ค.
code scanning ๊ฒฐ๊ณผ๊ฐ ์์๊ณผ ๋ค๋ฅธ ๊ฒฝ์ฐ ์ด๋ค ๊ตฌ์ฑ์ด ํ์ฑํ๋์ด ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์ผ๋ถ ์ธ์ด๋ CodeQL ๊ณ ๊ธ ์ค์ ์ผ๋ก ๋ถ์๋์ง ์์์ต๋๋ค.
์ผ๋ถ ์ธ์ด๊ฐ ๋ถ์๋์ง ์์ ๊ฒฝ์ฐ code scanning ์ํฌํ๋ก๋ฅผ ์์ ํ์ฌ ๋ถ์ํ ์ธ์ด๋ฅผ ์ง์ ํ๋ ํ๋ ฌ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋ ๊ฐ์ CodeQL ์ํฌํ๋ก
"CodeQL"๋ผ๋ ๋ ๊ฐ์ ์ํฌํ๋ก๊ฐ ํ์๋๋ ๊ฒฝ์ฐ ํ ์ํฌํ๋ก๋ ๊ธฐ๋ณธ ์ค์ ์์ ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ๋ ๊ธฐ์กด CodeQL ์ํฌํ๋ก ํ์ผ์ผ ์ ์์ต๋๋ค.
์ํฌํ๋ก ์คํ์ ํธ๋ฆฌ๊ฑฐํ ๋ด์ฉ์ด ๋ถ๋ถ๋ช ํฉ๋๋ค.
๋ถ์์ ํธ๋ฆฌ๊ฑฐํ ์์ธ์ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ ๋๊ตฌ ์ํ ํ์ด์ง์(๋ฅผ) ์กฐ์ฌํ๊ฑฐ๋ ๋ง์ง๋ง ๊ฒ์ฌ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค.
๊ฒฝ๊ณ : "์ด ์ํฌํ๋ก์์ 1๊ฐ์ ๋ฌธ์ ๊ฐ ๊ฐ์ง๋์์ต๋๋ค. git ๊ฒ์ฌ HEAD^2๊ฐ ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค."
์ด ๊ฒฝ๊ณ ๊ฐ ํ์๋๋ ๊ฒฝ์ฐ ํ์ฌ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋๋ก ์ํฌํ๋ก๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
๊ฒฝ๊ณ : ๋น๋ ์์ด ์ฒ๋ฆฌํ ์ ์๋ ํ๋ก์ ํธ์์ X Kotlin ํ์ผ์ด ๊ฒ์๋จ
CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฝ๋๋ฅผ ๋น๋ํ์ง ์๊ณ ๋ Java์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ค ์ ์์ง๋ง, Kotlin ํ์ผ์ ์ฝ๋๋ฅผ ๋น๋ํ์ง ์์ผ๋ฉด ์ ์ธ๋ฉ๋๋ค.