ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toSecurity
์๋ฌธ ์ฝ๊ธฐ
Cosign-Kyverno ์กฐํฉ์ ํตํ K8s ์ด๋ฏธ์ง ๋ฌด๊ฒฐ์ฑ ๊ฐ์ ๋ฐ Supply Chain ๋ณด์ ๊ตฌ์ถ
๐Enforcing image provenance in Kubernetes using Cosign + Sigstore + Kyverno
AI ์์ฝ
Context
Mutable Image Tag ์ฌ์ฉ์ผ๋ก ์ธํ ์ด๋ฏธ์ง ์ถ์ฒ ๋ถ๋ถ๋ช ๋ฐ Registry ๋ณ์กฐ ์ํ ์กด์ฌ. Build ํ์๋ถํฐ Runtime๊น์ง์ Trust Gap์ผ๋ก ์ธํด ๊ฒ์ฆ๋์ง ์์ ์ํฐํฉํธ๊ฐ ํด๋ฌ์คํฐ์ ๋ฐฐํฌ๋ ์ ์๋ ๊ตฌ์กฐ์ ํ๊ณ ๋ถ์.
Technical Solution
- GitLab CI/CD๋ฅผ Root of Trust๋ก ์ค์ ํ์ฌ ๋น๋ ๋ฐ ์๋ช ํ๋ก์ธ์ค๋ฅผ ๋จ์ผ ํ์ดํ๋ผ์ธ์ผ๋ก ํตํฉ
- Cosign์ ํ์ฉํด OCI Registry ๋ด ์ด๋ฏธ์ง์ ๋งค์นญ๋๋ ์ํธํ ์๋ช ์ ์ํฐํฉํธ๋ก ํจ๊ป ์ ์ฅ
- Kyverno Admission Controller๋ฅผ ํตํ Pod ์์ฑ ๋จ๊ณ์ ์ค์๊ฐ ์๋ช ๊ฒ์ฆ ๋ก์ง ๊ตฌํ
- Immutable Digest ๊ธฐ๋ฐ์ Resolve ๊ณผ์ ์ ํตํด ํ๊ทธ ๋ณ์กฐ ๊ฐ๋ฅ์ฑ์ ์์ฒ ์ฐจ๋จํ๋ ์ค๊ณ ์ฑํ
- ์๋ช ๋์ง ์์ ์ด๋ฏธ์ง๋ Admission ๋จ๊ณ์์ ์ฆ์ ๊ฑฐ๋ถํ๋ Enforce ์ ์ฑ ์ ์ฉ์ผ๋ก ๋ฐํ์ ๋ณด์ ๊ฐํ
์ค์ฒ ํฌ์ธํธ
1. Mutable Tag ๋์ Immutable Digest ๊ธฐ๋ฐ์ ๊ฒ์ฆ ์ฒด๊ณ ๋์ ๊ฒํ
2. CI/CD ํ์ดํ๋ผ์ธ ๋ด Cosign ์๋ช ๋จ๊ณ๋ฅผ ์ถ๊ฐํ์ฌ ์ ๋ขฐ ๊ฐ๋ฅํ ์ถ์ฒ ์ ์
3. Kyverno ๋ฑ Admission Controller๋ฅผ ์ฌ์ฉํ์ฌ ๋ณด์ ์ ์ฑ ์ ๋ฐํ์์ด ์๋ Admission ์์ ์ ๊ฐ์
4. ๊ณต๊ฐํค ๊ธฐ๋ฐ์ ๊ฒ์ฆ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ์ฌ Registry ์์ฒด์ ๋ํ ์์กด๋ ์ ๊ฑฐ