์ฐธ๊ณ ํญ๋ชฉ
์ฌ์ดํธ ๊ด๋ฆฌ์๊ฐ ๋จผ์ 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 ์์ ์ ๋ํ ์ต์ ์ ์ง์ ํ ์ ์๋ ๊ธฐ๋ณธ ์ํฌํ๋ก ํ์ผ์ด ์์ฑ๋ฉ๋๋ค. ์ํฌํ๋ก ๋ฐ ์ฝ๋ ๊ฒ์์ ์ํ ๊ณ ๊ธ ์ค์ ์ฌ์ฉ์ ์ง์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
GitHub์์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ธฐ๋ณธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ ์๋์์ ์ค์ ์ ํด๋ฆญํฉ๋๋ค. "์ค์ " ํญ์ด ํ์๋์ง ์์ผ๋ฉด ๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ์ ํํ ๋ค์ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
-
์ฌ์ด๋๋ฐ์ "Security" ์น์ ์์ Advanced Security ๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
โCode Securityโ๊น์ง ์๋๋ก ์คํฌ๋กคํ์ฌ โCodeQL analysisโ ํ์์ Set up ๋ฅผ ์ ํํ ๋ค์, Advanced๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฐธ๊ณ ํญ๋ชฉ
๊ธฐ๋ณธ ์ค์ ์์ ๊ณ ๊ธ ์ค์ ์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ โCodeQL analysisโ ํ์์ ๋ฅผ ์ ํํ ๋ค์, Switch to advanced๋ฅผ ํด๋ฆญํฉ๋๋ค. ํ์๋๋ ํ์ ์ฐฝ์์ CodeQL ์ฌ์ฉ ์ค์ง๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
code scanning๊ฐ ์ฝ๋๋ฅผ ๊ฒ์ฌํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์ ์ง์ ํ๋ ค๋ฉด ์ํฌํ๋ก๋ฅผ ํธ์งํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ณ๊ฒฝํ์ง ์๊ณ CodeQL ๋ถ์ ์ํฌํ๋ก์(๋ฅผ) ์ปค๋ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ํ์ฌ ์ํฌํ๋ก์๋ ์ถ๊ฐ ๊ตฌ์ฑ์ด ํ์ํ๋ฏ๋ก ์ปค๋ฐํ๊ธฐ ์ ์ ์ํฌํ๋ก์ ์ค๋ช ์ ์ฝ์ด ๋ด ๋๋ค.
์์ธํ ๋ด์ฉ์ ์ฝ๋ ๊ฒ์์ ์ํ ๊ณ ๊ธ ์ค์ ์ฌ์ฉ์ ์ง์ ๋ฐ ์ปดํ์ผ๋ ์ธ์ด์ ๋ํ CodeQL ์ฝ๋ ๊ฒ์ฌํ๊ธฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
๋ณ๊ฒฝ ๋ด์ฉ ์ปค๋ฐ... ์ ํด๋ฆญํ์ฌ ์ปค๋ฐ ๋ณ๊ฒฝ ํ์์ ํ์ํฉ๋๋ค.
-
์ปค๋ฐ ๋ฉ์์ง ํ๋์ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์ ๋ ฅํฉ๋๋ค.
-
๊ธฐ๋ณธ ๋ถ๊ธฐ์ ์ง์ ์ปค๋ฐํ ์ง ์๋๋ฉด ์ ๋ถ๊ธฐ๋ฅผ ๋ง๋ค๊ณ ๋์ด์ค๊ธฐ ์์ฒญ์ ์์ํ ์ง ์ ํํฉ๋๋ค.
-
์ ํ์ผ ์ปค๋ฐ์ ํด๋ฆญํ์ฌ ์ํฌํ๋ก ํ์ผ์ ๊ธฐ๋ณธ๊ฐ ๋ถ๊ธฐ์ ์ปค๋ฐํ๊ฑฐ๋ ์ ํ์ผ ์ ์์ ํด๋ฆญํ์ฌ ํ์ผ์ ์ ๋ถ๊ธฐ์ ์ปค๋ฐํฉ๋๋ค.
-
์ ๋ถ๊ธฐ๋ฅผ ๋ง๋ ๊ฒฝ์ฐ ๋์ด์ค๊ธฐ ์์ฒญ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ๊ณ ๋์ด์ค๊ธฐ ์์ฒญ ๋ง๋ค๊ธฐ๋ฅผ ์ด์ด ๋ณ๊ฒฝ ๋ด์ฉ์ ๊ธฐ๋ณธ๊ฐ ๋ถ๊ธฐ์ ๋ณํฉํฉ๋๋ค.
์ ์๋ CodeQL ๋ถ์ ์ํฌํ๋ก์์๋ code scanning์ด(๊ฐ) ๊ธฐ๋ณธ ๋ถ๊ธฐ ๋๋ ๋ณดํธ๋ ๋ถ๊ธฐ๋ก ๋ณ๊ฒฝ ๋ด์ฉ์ ํธ์ํ๊ฑฐ๋ ๊ธฐ๋ณธ ๋ถ๊ธฐ์ ๋ํ ๋์ด์ค๊ธฐ ์์ฒญ์ ์คํํ ๋๋ง๋ค ์ฝ๋๋ฅผ ๋ถ์ํ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ฐ๋ผ์ code scanning๊ฐ ์์๋ฉ๋๋ค.
์ฝ๋ ๊ฒ์ฌ์ ๋ํ on:pull_request
๋ฐ on:push
ํธ๋ฆฌ๊ฑฐ๊ฐ ์ ์ฉํ ์ฉ๋๋ ๊ฐ๊ธฐ ๋ค๋ฆ
๋๋ค. ์ฝ๋ ๊ฒ์์ ์ํ ๊ณ ๊ธ ์ค์ ์ฌ์ฉ์ ์ง์ ๋ฐ ์ํฌํ๋ก ํธ๋ฆฌ๊ฑฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋๋ ์ฌ์ฉ ์ค์ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋๊ท๋ชจ CodeQL ์ฝ๋ ์ค์บ์ ์ํ ๊ณ ๊ธ ์ค์ ๊ตฌ์ฑ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋ค์ ๋จ๊ณ
์ํฌํ๋ก๊ฐ ํ ๋ฒ ์ด์ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋ฉด code scanning ๊ฒฝ๊ณ ์ ๊ฒ์ฌ ๋ฐ ํด๊ฒฐ์ ์์ํ ์ค๋น๊ฐ ๋ ๊ฒ์ ๋๋ค. code scanning ๊ฒฝ๊ณ ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ์ฝ๋ ๊ฒ์ฌ ๊ฒฝ๊ณ ์ ๋ณด ๋ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ฝ๋ ๊ฒ์ฌ ๊ฒฝ๊ณ ํ๊ฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
code scanning ์คํ์ด ๋์ด์ค๊ธฐ ์์ฒญ์ ๊ฒ์ฌ ๋์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๋ ค๋ฉด ๋์ด์ค๊ธฐ ์์ฒญ์์ ์ฝ๋ ๊ฒ์ฌ ๊ฒฝ๊ณ ์ฌ์ฌ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋๊ตฌ ์ํ ํ์ด์ง์์ ๊ฐ ์ค์บ์ ๋ํ ํ์์คํฌํ ๋ฐ ๊ฒ์๋ ํ์ผ์ ๋ฐฑ๋ถ์จ์ ํฌํจํ์ฌ code scanning ๊ตฌ์ฑ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฝ๋ ์ค์บ์ ์ํ ๋๊ตฌ ์ํ ํ์ด์ง ์ ๋ณด์(๋ฅผ) ์ฐธ์กฐํ์ธ์.