์๋ ํ์ธ์ ๊ตฌ๋ ์๋, ์ต์ DevOps ์์์ ์ ๋ฆฌํด์ ๊ณต์ ํด๋๋ฆฌ๋ DevOps ์ฌํ์ ์ํ ์์์ง์ ๋๋ค.
๊ฐ๋ฐ ์ ๋ฌด๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๋ณด๋ฉด ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ํ ์ ์๋ ํ๊ฒฝ์ ๋ง๋ค๊ณ ์ค์ ๋ฐฐํฌ๋ฅผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ผ๋ฐ์ ์ธ๋ฐ์. ๊ทธ๋ฌ๋ค๋ณด๋ ์ฌ์ฉํ๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ๋ณด์ ์ทจ์ฝ์ ์ด๋ ์ด์๊ฐ ์๋ค๋ฉด ์ฌ๊ฐํ ๋ณด์ ์ฌ๊ณ ๋ก๋ ์ด์ด์ง ์ ์์ต๋๋ค.
์ด๋ด ๋ ์ฐ๋ฆฌ์๊ฒ ํ์ํ ๊ฒ์ด ๋ฐ๋ก, ์ด๋ฒ ์์์ง์์ ์๊ฐํด๋๋ฆด ์ปจํ ์ด๋ ๋ณด์ ์ค์บ๋(Container Security Scanning)์ ๋๋ค.
๐๋ณด์ ์ทจ์ฝ์ ์ ๊ฒ์ฌํ๋ ์ปจํ ์ด๋ ๋ณด์ ์ค์บ๋
์ปจํ ์ด๋ ๋ณด์ ์ค์บ๋์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ์กด์ฌํ ์ ์๋ ๋ณด์ ์ทจ์ฝ์ ์ด๋ ์ด์๋ฅผ ์ค์บ๋ ํด๋ก ๊ฒ์ฌํ๊ณ ๋ถ์ํ๋ ํ์๋ฅผ ๋งํฉ๋๋ค.
์์์ง ์๋์์๋ ๋ง์๋๋ ธ๋ ๊ฒ์ฒ๋ผ, ์ด๋ฏธ ์๋ง์ ์๋น์ค๊ฐ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ๋ณด์ ์ทจ์ฝ์ ์ด๋ ์ด์๊ฐ ์๋ค๋ฉด ์ฌ๊ฐํ ๋ณด์ ํผํด๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๋ง์ฝ ์ปจํ ์ด๋ ๋ณด์ ์ค์บ๋์ ์ํํ๋ค๋ฉด, ๊ฐ๋ฐ์๊ฐ ํด๋น ์ปจํ ์ด๋์ ์ด๋ค ์ทจ์ฝ์ ์ด ์กด์ฌํ๋์ง ์ธ์งํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ ์ ์ ์ ํ ์กฐ์น๋ฅผ ์ทจํ ์ ์๊ฒ ๋๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
๋ํ ์ค์ ์๋น์ค์ ๋ํด์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ปจํ ์ด๋ ๋ณด์ ์ค์บ๋์ ์ํํ๋ค๋ฉด, ์ต์ข ์ฌ์ฉ์์๊ฒ ํด๋น ์๋น์ค๊ฐ ๊ณ์ ๋ชจ๋ํฐ๋ง๋์ด ์์ ํ๋ค๋ ์ ๋ขฐ๊ฐ๋ ์ค ์ ์๋ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ปจํ ์ด๋ ๋ณด์ ์ค์บ๋์ ์ด๋ป๊ฒ ์ํ๋ ๊น์?
ํ์ฌ Trivy๋ Clair ๋ฑ ๋ค์ํ ์ปจํ ์ด๋ ๋ณด์ ์ค์บ๋ ํด์ด ์คํ์์ค๋ก ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. ์ด๋ฐ ์ปจํ ์ด๋ ๋ณด์ ์ค์บ๋ ํด๋ค์ ๋ชจ๋ ์๊ฒฉ ๋ ์ง์คํธ๋ฆฌ๋ ๋ก์ปฌ์ ์ ์ฅ๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ค์บํ๊ณ ๋ณด์ ์ทจ์ฝ์ ์ด๋ ์ด์๊ฐ ์กด์ฌํ๋์ง ๋ถ์ํด์ฃผ๋๋ฐ์.
์ด๋ ์ค์บ๋ ํด์ ์ค์บ ๋ฐฉ์์ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋ฉ๋๋ค.
- ์ง์ ๊ธฐ๋ฐ(Signature-Based) ์ค์บ: ๊ธฐ์กด์ ์๋ ค์ง ์ทจ์ฝ์ (CVE ๋ฑ)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค์บ
- ํ๋ ๊ธฐ๋ฐ(Behavioral-Based) ์ค์บ: ์ปจํ ์ด๋๋ฅผ ์คํ ํ ๋น์ ์์ ์ธ ํ๋ก์ธ์ค๋ ๋คํธ์ํฌ ํธ๋ํฝ ๊ฐ์ ํ์๊ฐ ์๋์ง ์ค์บ
์ปจํ ์ด๋ ์ค์บ๋ ํด์ ๋์ ๋ฐฉ์์ ๋ํด์๋ ์์์๋ ์ ๊น ์ธ๊ธํ๋ Clair๋ฅผ ์๋ก ๋ค์ด์ ์ข ๋ ์์๋ณด๊ฒ ์ต๋๋ค.
๐๋ณด์ ์ทจ์ฝ์ ๋ถ์๊ณผ ์๋ฆผ ๊ธฐ๋ฅ๊น์ง ์ง์ํ๋ Clair
Clair๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ๊ตฌ์ฑ์์๋ฅผ ๋ถ์ํ์ฌ ์ทจ์ฝ์ ์ ๋ณด๊ณ ํด์ฃผ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. Indexer, Matcher, Notifier๋ผ๋ ์ด๋ฆ์ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋๋ฉฐ, Clair์ ์์ ์ ํฌ๊ฒ Indexing, Matching, Notification์ผ๋ก ๋๋ฉ๋๋ค. ๊ฐ ํ๋ก์ธ์ค์ ์ปดํฌ๋ํธ์ ๋ํ ์ค๋ช ์ ์๋์ ๊ฐ์ต๋๋ค.
- Indexing
- Clair์ Indexer๋ ์ค์บ ๋์ ์ด๋ฏธ์ง๋ฅผ ๋ถ์ํ๊ณ ํด๋น ์ด๋ฏธ์ง์ ๊ตฌ์ฑ ์์์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ด๋ ๋๋ค.
- ์ด๋ ๊ฒ ์ป์ด๋ธ ์ ๋ณด๋ Manifest๋ ์ด๋ฆ์ผ๋ก DB์ ์ ์ฅ๋๋ฉฐ, ์ด Indexing์ ๋ํ ์ ๋ณด๋ IndexReport๋ผ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก DB์ ์ ์ฅ๋ฉ๋๋ค.
- Matching
- Clair์ Matcher๋ Indexer๊ฐ DB์ ์ ์ฅํ IndexReport๋ฅผ ๊ฐ์ ธ์ ์ทจ์ฝ์ ๋ถ์์ ์งํํฉ๋๋ค.
- ์ด๋ฌํ ์ทจ์ฝ์ ๋ถ์์ DB์ ๋ฏธ๋ฆฌ ์ ์ฅ๋์ด์๋ ์ต์ ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํ๋ฉ๋๋ค.
- ์ทจ์ฝ์ ๋ถ์์ด ์๋ฃ๋๋ฉด ์ทจ์ฝ์ ๋ณด๊ณ ์๊ฐ ์์ฑ๋ฉ๋๋ค.
- Matcher๋ ์ฃผ๊ธฐ์ ์ผ๋ก DB์ ์ต์ ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๋ ์ญํ ๋ ์ํํฉ๋๋ค.
- Notification
- Clair์ Notifier๋ ์ทจ์ฝ์ ๋ถ์์ ๋ํ ์๋ฆผ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค.
- Matcher๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ์ต์ ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, ์ด๋ฏธ ์ทจ์ฝ์ ๋ถ์์ ์๋ฃํ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ค ์๋ก ์ํฅ์ ๋ฐ๋ ์ด๋ฏธ์ง๊ฐ ์์ ๊ฒฝ์ฐ Webhook์ผ๋ก ์๋ฆผ์ ๋ณด๋ ๋๋ค.
๐ญ๋ง์น๋ฉฐ...
์ด๋ฒ ์์์ง์์ ์ปจํ ์ด๋ ๋ณด์ ์ค์บ๋๊ณผ Clair์ ๋ํด ์์๋ดค์ต๋๋ค.
ํน์ ์ด๋ฒ ๋ด์ฉ ๊ด๋ จํด์ ๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ค๋ฉด ์๋ ๋ฉ์ผ๋ฆฌ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.๐
๊ทธ๋ผ, ๋ค์ ์์์ง์์ ๋ณด๋ค ์์ฐจ๊ณ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค. ๐บ
๐References
https://www.wiz.io/academy/container-security-scanning
https://snyk.io/learn/container-security/container-scanning
https://aquasecurity.github.io/trivy/v0.49/
์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์