Code scanning์ ๋ํ ๊ณ ๊ธ ์ค์ ์ ๋ณด
code scanning์ ๋ํ ๊ณ ๊ธ ์ค์ ์ code scanning์(๋ฅผ) ์ฌ์ฉ์ ์ง์ ํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค. ์ํฌํ๋ก ํ์ผ์ ๋ง๋ค๊ณ ํธ์งํ์ฌ ์ปดํ์ผ๋ ์ธ์ด๋ฅผ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๊ณ , ์คํํ ์ฟผ๋ฆฌ๋ฅผ ์ ํํ๊ณ , ์ค์บํ ์ธ์ด๋ฅผ ์ ํํ๊ณ , ํ๋ ฌ ๋น๋๋ฅผ ์ฌ์ฉํ๋ ๋ฑ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค. ๋ํ ๊ฒ์ฌ ์ผ์ ๋ณ๊ฒฝ, ์ํฌํ๋ก ํธ๋ฆฌ๊ฑฐ ์ ์, ์ฌ์ฉํ ์ ๋ฌธ๊ฐ ์คํ๊ธฐ ์ง์ ๋ฑ ์ํฌํ๋ก๋ฅผ ์ ์ดํ๋ ๋ชจ๋ ์ต์ ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. GitHub Actions ์ํฌํ๋ก์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ํฌํ๋ก์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋ํ ์ 3์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ code scanning์(๋ฅผ) ๊ตฌ์ฑํ ์๋ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ 3์์ ์์ ์ ์ฌ์ฉํ์ฌ code scanning ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
์ฌ๋ฌ ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ์ฝ๋ ๊ฒ์ฌ๋ฅผ ์คํํ ๋ ๊ฒฝ๊ณ ์ ๋ถ์ ์๋ณธ์ด ์ฌ๋ฌ ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ๋ ์์ต๋๋ค. ๊ฒฝ๊ณ ์ ์ฌ๋ฌ ๋ถ์ ์๋ณธ์ด ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํ์ด์ง์์ ๊ฐ ๋ถ์ ์๋ณธ์ ๋ํ ๊ฒฝ๊ณ ์ํ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฝ๋ ๊ฒ์ฌ ๊ฒฝ๊ณ ์ ๋ณด์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๊ณ ๋๋ก ์ฌ์ฉ์ ์ง์ ํ ์ ์๋ code scanning ๊ตฌ์ฑ์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ code scanning์ ๋ํ ๊ธฐ๋ณธ ์ค์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ธฐ๋ณธ ์ค์ ์๊ฒฉ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฝ๋ ์ค์บ์ ์ํ ๊ธฐ๋ณธ ์ค์ ๊ตฌ์ฑ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
ํ์ ์กฐ๊ฑด
๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฒฝ์ฐ ๊ณ ๊ธ ์ค์ ์ ์ ํฉํฉ๋๋ค.
- CodeQL์ง์๋๋ ์ธ์ด๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ 3์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ์ค์บ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ ๊ณํ์ ๋๋ค.
- GitHub Actions๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ํผ๋ธ๋ฆญ์ผ๋ก ํ์๋๊ฑฐ๋ GitHub Code Security๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
CodeQL์(๋ฅผ) ์ฌ์ฉํ์ฌ code scanning์ ๋ํ ๊ณ ๊ธ ์ค์ ๊ตฌ์ฑ
์ํฌํ๋ก ํ์ผ์ ๋ง๋ค๊ณ ํธ์งํ์ฌ CodeQL ๋ถ์์ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค. ๊ณ ๊ธ ์ค์ ์ ์ ํํ๋ฉด ํ์ค ์ํฌํ๋ก ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ํ๊ณ CodeQL ์์ ์ ๋ํ ์ต์ ์ ์ง์ ํ ์ ์๋ ๊ธฐ๋ณธ ์ํฌํ๋ก ํ์ผ์ด ์์ฑ๋ฉ๋๋ค. ์ํฌํ๋ก ๋ฐ ์ฝ๋ ๊ฒ์์ ์ํ ๊ณ ๊ธ ์ค์ ์ฌ์ฉ์ ์ง์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์์ ์ ์ฌ์ฉํ์ฌ code scanning๋ฅผ ์คํํ๋ ๋ฐ๋ ๋ช ๋ถ ์ ๋ ๊ฑธ๋ฆฝ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub Actions ์ฒญ๊ตฌ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ฐธ๊ณ ํญ๋ชฉ
์ฐ๊ธฐ ๊ถํ์ด ์๋ ํผ๋ธ๋ฆญ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ์ฌ code scanning์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
-
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 ์ฝ๋ ์ค์บ์ ์ํ ๊ณ ๊ธ ์ค์ ๊ตฌ์ฑ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ 3์์ ์์ ์ ์ฌ์ฉํ์ฌ code scanning ๊ตฌ์ฑ
GitHub์๋ ํ์ฌ ์์ ์ ๋ํ ์ํฌํ๋ก ํ ํ๋ฆฟ๊ณผ CodeQL ์์ ์ด ํฌํจ๋ฉ๋๋ค. ์ํฌํ๋ก ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋์์ ๋ฐ์ง ์๊ณ ์ํฌํ๋ก๋ฅผ ์์ฑํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ฝ์ต๋๋ค.
์์ ์ ์ฌ์ฉํ์ฌ code scanning๋ฅผ ์คํํ๋ ๋ฐ๋ ๋ช ๋ถ ์ ๋ ๊ฑธ๋ฆฝ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub Actions ์ฒญ๊ตฌ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
GitHub์์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ธฐ๋ณธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ ์๋์์ ์์ ์ ํด๋ฆญํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ์ ์ด๋ฏธ ํ๋ ์ด์์ ์ํฌํ๋ก๊ฐ ๊ตฌ์ฑ๋์ด ์คํ ์ค์ธ ๊ฒฝ์ฐ ์ ์ํฌํ๋ก๋ฅผ ํด๋ฆญํ์ฌ ์ํฌํ๋ก ํ ํ๋ฆฟ์ ํ์ํฉ๋๋ค. ํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํด ๊ตฌ์ฑ๋ ์ํฌํ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ๋ก ์ด๋ํฉ๋๋ค.
-
"์ํฌํ๋ก ์ ํ" ๋๋ "GitHub Actions๋ก ์์" ๋ณด๊ธฐ์์ "๋ณด์" ๋ฒ์ฃผ๊น์ง ์๋๋ก ์คํฌ๋กคํ๊ณ ๊ตฌ์ฑํ๋ ค๋ ์ํฌํ๋ก ์๋์์ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค. ๊ตฌ์ฑํ๋ ค๋ ๋ณด์ ์ํฌํ๋ก๋ฅผ ์ฐพ์ผ๋ ค๋ฉด ๋ชจ๋ ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํด์ผ ํ ์ ์์ต๋๋ค.
-
์ํฌํ๋ก์ ์ง์นจ์ ๋ฐ๋ผ ํ์์ ๋ง๊ฒ ์ฌ์ฉ์ ์ง์ ํฉ๋๋ค. ์ํฌํ๋ก์ ๋ํ ์ผ๋ฐ์ ์ธ ์ง์์ ๋ฐ์ผ๋ ค๋ฉด ์ํฌํ๋ก ํ์ด์ง์ ์ค๋ฅธ์ชฝ ์ฐฝ์์ ์ค๋ช ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
๊ตฌ์ฑ ์ ์๋ฅผ ๋ง์ณค์ผ๋ฉด ๊ธฐ๋ณธ ๋ถ๊ธฐ์ ์ ์ํฌํ๋ก๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ์ํฌํ๋ก ํ ํ๋ฆฟ ์ฌ์ฉ ๋ฐ ์ฝ๋ ๊ฒ์์ ์ํ ๊ณ ๊ธ ์ค์ ์ฌ์ฉ์ ์ง์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋ค์ ๋จ๊ณ
์ํฌํ๋ก๊ฐ ํ ๋ฒ ์ด์ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋ฉด code scanning ๊ฒฝ๊ณ ์ ๊ฒ์ฌ ๋ฐ ํด๊ฒฐ์ ์์ํ ์ค๋น๊ฐ ๋ ๊ฒ์ ๋๋ค. code scanning ๊ฒฝ๊ณ ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ์ฝ๋ ๊ฒ์ฌ ๊ฒฝ๊ณ ์ ๋ณด ๋ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ฝ๋ ๊ฒ์ฌ ๊ฒฝ๊ณ ํ๊ฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
code scanning ์คํ์ด ๋์ด์ค๊ธฐ ์์ฒญ์ ๊ฒ์ฌ ๋์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๋ ค๋ฉด ๋์ด์ค๊ธฐ ์์ฒญ์์ ์ฝ๋ ๊ฒ์ฌ ๊ฒฝ๊ณ ์ฌ์ฌ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋๊ตฌ ์ํ ํ์ด์ง์์ ๊ฐ ์ค์บ์ ๋ํ ํ์์คํฌํ ๋ฐ ๊ฒ์๋ ํ์ผ์ ๋ฐฑ๋ถ์จ์ ํฌํจํ์ฌ code scanning ๊ตฌ์ฑ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฝ๋ ์ค์บ์ ์ํ ๋๊ตฌ ์ํ ํ์ด์ง ์ ๋ณด์(๋ฅผ) ์ฐธ์กฐํ์ธ์.