๊ฒ์๋จ ํจ์น๋์ง ์์ ์ทจ์ฝ์ ์ ์๋ณํ๊ณ ๊ฒฉ๋ฆฌ๋ Docker ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ณด์ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ธฐ ์ํ ํ
์คํธ ๋๊ตฌ์ ๊ฒฐ๊ณผ์
๋๋ค. ๊ฒ์ฌ ๊ฒฐ๊ณผ, ์๋ ค์ง Docker ์ด๋ฏธ์ง ์ค์บ๋ 4๊ฐ ์ค 6๊ฐ์๋ ์ค์บ๋ ์์ฒด๋ฅผ ์ง์ ๊ณต๊ฒฉํ๊ณ ์ผ๋ถ ๊ฒฝ์ฐ(์: Snyk๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ) ๋ฃจํธ ๊ถํ์ผ๋ก ์์คํ
์์ ํด๋น ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ์ฌ๊ฐํ ์ทจ์ฝ์ ์ด ํฌํจ๋์ด ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
๊ณต๊ฒฉํ๋ ค๋ฉด ๊ณต๊ฒฉ์๋ ํน๋ณํ ์ค๊ณ๋ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ Dockerfile ๋๋ ๋งค๋ํ์คํธ.json ๊ฒ์ฌ๋ฅผ ์์ํ๊ฑฐ๋ Podfile ๋ฐ gradlew ํ์ผ์ ์ด๋ฏธ์ง ๋ด์ ๋ฐฐ์นํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ํ๋กํ ํ์
ํ์ฉ ์ค๋น์ ์ฑ๊ณตํ๋ค ์์คํ
์ฉ
ํ์ดํธ ์์ค, ์ค ๋ํฌ,
์ ะธ
์ต์ปค. ํจํค์ง๋ ์ต๊ณ ์ ๋ณด์์ ๋ณด์ฌ์ฃผ์์ต๋๋ค ๋ช
ํํ, ์๋ ๋ณด์์ ์ผ๋์ ๋๊ณ ์์ฑ๋์์ต๋๋ค. ํจํค์ง์์๋ ๋ฌธ์ ๊ฐ ํ์ธ๋์ง ์์์ต๋๋ค. ์ฌ์ํ. ๊ฒฐ๊ณผ์ ์ผ๋ก Docker ์ปจํ
์ด๋ ์ค์บ๋๋ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ์คํ๋๊ฑฐ๋ ์์ฒด ์ด๋ฏธ์ง๋ฅผ ํ์ธํ๋ ๋ฐ์๋ง ์ฌ์ฉํด์ผ ํ๋ฉฐ ์ด๋ฌํ ๋๊ตฌ๋ฅผ ์๋ํ๋ ์ง์์ ํตํฉ ์์คํ
์ ์ฐ๊ฒฐํ ๋๋ ์ฃผ์๊ฐ ํ์ํ๋ค๋ ๊ฒฐ๋ก ์ด ๋์์ต๋๋ค.
FOSSA, Snyk ๋ฐ WhiteSource์์ ์ด ์ทจ์ฝ์ ์ ์ข
์์ฑ์ ํ์ธํ๊ธฐ ์ํด ์ธ๋ถ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ํธ์ถํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋์ด ์์ผ๋ฉฐ ํ์ผ์ ํฐ์น ๋ฐ ์์คํ
๋ช
๋ น์ ์ง์ ํ์ฌ ์ฝ๋ ์คํ์ ๊ตฌ์ฑํ ์ ์์์ต๋๋ค. ๊ทธ๋๋ค๋ฃจ ะธ ํฌ๋ํ์ผ.
Snyk์ WhiteSource๋ ์ถ๊ฐ๋ก ๋
น์ด๋ค ์ทจ์ฝ์ , ๊ด๋ จ๋ Dockerfile์ ๊ตฌ๋ฌธ ๋ถ์ํ ๋ ์์คํ
๋ช
๋ น์ ์คํํ๋ ๊ตฌ์ฑ์ผ๋ก(์๋ฅผ ๋ค์ด Snyk์์๋ Dockefile์ ํตํด ์ค์บ๋๊ฐ ํธ์ถํ๋ /bin/ls ์ ํธ๋ฆฌํฐ๋ฅผ ๋์ฒดํ ์ ์์๊ณ WhiteSurce์์๋ ๋ค์์ ์ธ์๋ฅผ ํตํด ์ฝ๋๋ฅผ ๋์ฒดํ ์ ์์์ต๋๋ค) "echo ';touch /tmp/hacked_whitesource_pip;=1.0 '" ํ์).
์ต์ปค ์ทจ์ฝ์ ๋ถ๋ ค์ก๋ค ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ Skopeo ๋์ปค ์ด๋ฏธ์ง ์์
์ ์ํ ๊ฒ์
๋๋ค. ์์
์ '"os": "$(touch hacked_anchore)"'์ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋งค๋ํ์คํธ.json ํ์ผ์ ์ถ๊ฐํ๋ ๊ฒ์ผ๋ก ์์ฝ๋ฉ๋๋ค. ์ด ๋งค๊ฐ๋ณ์๋ ์ ์ ํ ์ด์ค์ผ์ดํ ์์ด skopeo๋ฅผ ํธ์ถํ ๋ ๋์ฒด๋ฉ๋๋ค(";&<>" ๋ฌธ์๋ง ์๋ฆผ, ๊ทธ๋ฌ๋ "$( )" ๊ตฌ์ฑ).
๊ฐ์ ์ ์๋ Docker ์ปจํ
์ด๋ ๋ณด์ ์ค์บ๋๋ฅผ ์ฌ์ฉํ์ฌ ํจ์น๋์ง ์์ ์ทจ์ฝ์ ์ ์๋ณํ๋ ํจ๊ณผ์ ์คํ ์์ค์ ๋ํ ์ฐ๊ตฌ๋ฅผ ์ํํ์ต๋๋ค(์ผ๋ถ 1, ์ผ๋ถ 2, ์ผ๋ถ 3). ๋ค์์ ์๋ ค์ง ์ทจ์ฝ์ ์ด ํฌํจ๋ 73๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ํ
์คํธํ ๊ฒฐ๊ณผ์ด๋ฉฐ, ์ด๋ฏธ์ง์ ์ผ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
(nginx, tomcat, haproxy, gunicorn, redis, ruby, node)์ด ์๋์ง ํ์ธํ๋ ํจ์จ์ฑ๋ ํ๊ฐํฉ๋๋ค.
์ถ์ฒ : opennet.ru