곡지
λ‰΄μŠ€λ ˆν„° ν”Œλž«νΌ λ³€κ²½ μ•ˆλ‚΄

Security

πŸ”­λ‚΄κ°€ μ‚¬μš©ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆ μ΄λ―Έμ§€λŠ” μ•ˆμ „ν• κΉŒ? - μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹

μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹μ΄ 무엇인지 μ•Œμ•„λ³΄κ³ , μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹ νˆ΄μ— λŒ€ν•΄ μ†Œκ°œν•΄λ“œλ¦½λ‹ˆλ‹€.

2024.03.11 | 쑰회 1.27K |
0
|

μ•ˆλ…•ν•˜μ„Έμš” κ΅¬λ…μžλ‹˜, μ΅œμ‹  DevOps μ†Œμ‹μ„ μ •λ¦¬ν•΄μ„œ κ³΅μœ ν•΄λ“œλ¦¬λŠ” DevOps 여행을 μœ„ν•œ μ†Œμ‹μ§€μž…λ‹ˆλ‹€.

개발 μ—…λ¬΄λ‚˜ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ‹€λ³΄λ©΄ μ»¨ν…Œμ΄λ„ˆ 이미지λ₯Ό μ‚¬μš©ν•΄μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ™μž‘ν•  수 μžˆλŠ” ν™˜κ²½μ„ λ§Œλ“€κ³  μ‹€μ œ 배포λ₯Ό ν•˜λŠ” κ²½μš°κ°€ μΌλ°˜μ μΈλ°μš”. κ·ΈλŸ¬λ‹€λ³΄λ‹ˆ μ‚¬μš©ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆ 이미지에 λ³΄μ•ˆ μ·¨μ•½μ μ΄λ‚˜ μ΄μŠˆκ°€ μžˆλ‹€λ©΄ μ‹¬κ°ν•œ λ³΄μ•ˆ μ‚¬κ³ λ‘œλ„ μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

이럴 λ•Œ μš°λ¦¬μ—κ²Œ ν•„μš”ν•œ 것이 λ°”λ‘œ, 이번 μ†Œμ‹μ§€μ—μ„œ μ†Œκ°œν•΄λ“œλ¦΄ μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹(Container Security Scanning)μž…λ‹ˆλ‹€.

 

πŸ”Žλ³΄μ•ˆ 취약점을 κ²€μ‚¬ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹

μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹ νˆ΄μ€ μ‚¬μš© 쀑인 이미지에 λ³΄μ•ˆ 취약점이 μžˆλŠ”μ§€ κ²€μ‚¬ν•©λ‹ˆλ‹€.
μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹ νˆ΄μ€ μ‚¬μš© 쀑인 이미지에 λ³΄μ•ˆ 취약점이 μžˆλŠ”μ§€ κ²€μ‚¬ν•©λ‹ˆλ‹€.

μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹μ€ μ»¨ν…Œμ΄λ„ˆ 이미지에 μ‘΄μž¬ν•  수 μžˆλŠ” λ³΄μ•ˆ μ·¨μ•½μ μ΄λ‚˜ 이슈λ₯Ό μŠ€μΊλ‹ 툴둜 κ²€μ‚¬ν•˜κ³  λΆ„μ„ν•˜λŠ” ν–‰μœ„λ₯Ό λ§ν•©λ‹ˆλ‹€.

μ†Œμ‹μ§€ μ„œλ‘μ—μ„œλ„ λ§μ”€λ“œλ Έλ˜ κ²ƒμ²˜λŸΌ, 이미 μˆ˜λ§Žμ€ μ„œλΉ„μŠ€κ°€ μ»¨ν…Œμ΄λ„ˆ 이미지 기반으둜 λ™μž‘ν•˜κ³  있기 λ•Œλ¬Έμ— μ»¨ν…Œμ΄λ„ˆ 이미지에 λ³΄μ•ˆ μ·¨μ•½μ μ΄λ‚˜ μ΄μŠˆκ°€ μžˆλ‹€λ©΄ μ‹¬κ°ν•œ λ³΄μ•ˆ ν”Όν•΄λ‘œ μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ§Œμ•½ μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹μ„ μˆ˜ν–‰ν•œλ‹€λ©΄, κ°œλ°œμžκ°€ ν•΄λ‹Ή μ»¨ν…Œμ΄λ„ˆμ— μ–΄λ–€ 취약점이 μ‘΄μž¬ν•˜λŠ”μ§€ 인지할 수 있기 λ•Œλ¬Έμ— 사전에 μ μ ˆν•œ 쑰치λ₯Ό μ·¨ν•  수 있게 λœλ‹€λŠ” μž₯점이 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ μ‹€μ œ μ„œλΉ„μŠ€μ— λŒ€ν•΄μ„œ 주기적으둜 μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹μ„ μˆ˜ν–‰ν•œλ‹€λ©΄, μ΅œμ’… μ‚¬μš©μžμ—κ²Œ ν•΄λ‹Ή μ„œλΉ„μŠ€κ°€ 계속 λͺ¨λ‹ˆν„°λ§λ˜μ–΄ μ•ˆμ „ν•˜λ‹€λŠ” 신뒰감도 쀄 수 μžˆλ‹΅λ‹ˆλ‹€.

 

κ·Έλ ‡λ‹€λ©΄ μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹μ€ μ–΄λ–»κ²Œ μˆ˜ν–‰λ κΉŒμš”?

ν˜„μž¬ Trivyλ‚˜ Clair λ“± λ‹€μ–‘ν•œ μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹ 툴이 μ˜€ν”ˆμ†ŒμŠ€λ‘œ κ°œλ°œλ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이런 μ»¨ν…Œμ΄λ„ˆ λ³΄μ•ˆ μŠ€μΊλ‹ νˆ΄λ“€μ€ λͺ¨λ‘ 원격 λ ˆμ§€μŠ€νŠΈλ¦¬λ‚˜ λ‘œμ»¬μ— μ €μž₯된 μ»¨ν…Œμ΄λ„ˆ 이미지λ₯Ό μŠ€μΊ”ν•˜κ³  λ³΄μ•ˆ μ·¨μ•½μ μ΄λ‚˜ μ΄μŠˆκ°€ μ‘΄μž¬ν•˜λŠ”μ§€ λΆ„μ„ν•΄μ£ΌλŠ”λ°μš”. 

μ΄λ•Œ μŠ€μΊλ‹ 툴의 μŠ€μΊ” 방식은 크게 2κ°€μ§€λ‘œ λ‚˜λ‰©λ‹ˆλ‹€.

  • 지식 기반(Signature-Based) μŠ€μΊ”: 기쑴에 μ•Œλ €μ§„ 취약점(CVE λ“±)λ₯Ό 기반으둜 μŠ€μΊ”
  • 행동 기반(Behavioral-Based) μŠ€μΊ”: μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ ν›„ 비정상적인 ν”„λ‘œμ„ΈμŠ€λ‚˜ λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½ 같은 ν–‰μœ„κ°€ μžˆλŠ”μ§€ μŠ€μΊ”

 

μ»¨ν…Œμ΄λ„ˆ μŠ€μΊλ‹ 툴의 λ™μž‘ 방식에 λŒ€ν•΄μ„œλŠ” μœ„μ—μ„œλ„ 잠깐 μ–ΈκΈ‰ν–ˆλ˜ Clairλ₯Ό 예둜 λ“€μ–΄μ„œ μ’€ 더 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

πŸ”Žλ³΄μ•ˆ 취약점 뢄석과 μ•Œλ¦Ό κΈ°λŠ₯κΉŒμ§€ μ§€μ›ν•˜λŠ” Clair

ClairλŠ” μ»¨ν…Œμ΄λ„ˆ μ΄λ―Έμ§€μ˜ κ΅¬μ„±μš”μ†Œλ₯Ό λΆ„μ„ν•˜μ—¬ 취약점을 λ³΄κ³ ν•΄μ£ΌλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€. Indexer, Matcher, NotifierλΌλŠ” μ΄λ¦„μ˜ μ»΄ν¬λ„ŒνŠΈλ‘œ κ΅¬μ„±λ˜λ©°, Clair의 μž‘μ—…μ€ 크게 Indexing, Matching, Notification으둜 λ‚˜λ‰©λ‹ˆλ‹€. 각 ν”„λ‘œμ„ΈμŠ€μ™€ μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•œ μ„€λͺ…은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

Clair의 취약점 뢄석은 Indexer와 Matcherκ°€ λ‹΄λ‹Ήν•©λ‹ˆλ‹€.
Clair의 취약점 뢄석은 Indexer와 Matcherκ°€ λ‹΄λ‹Ήν•©λ‹ˆλ‹€.
  • 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/

https://quay.github.io/clair/

 

 

이번 μ†Œμ‹μ§€ λ‚΄μš©μ€ μ–΄λ– μ…¨λ‚˜μš”? μ†Œμ‹μ§€λ₯Ό 더 λ‚˜μ€ λ°©ν–₯으둜 κ°œμ„ ν•˜κΈ° μœ„ν•΄ μ•„λž˜ νΌμ—μ„œ 1~2λΆ„ 정도면 λλ‚˜λŠ” 짧은 ν”Όλ“œλ°±μ„ λ°›κ³  μžˆμ–΄μš”.πŸ‘‡

https://forms.gle/jjkvp9htV3atYLHG8

μ—¬λŸ¬λΆ„λ“€μ˜ μ†Œμ€‘ν•œ μ˜κ²¬μ— 항상 κ°μ‚¬ν•©λ‹ˆλ‹€!

 

λ³Έ μ†Œμ‹μ§€λ₯Ό μ•„μΉ΄μ΄λΉ™ν•˜κ³  λ‹€μ–‘ν•œ 정보λ₯Ό κ³΅μœ ν•˜λŠ” λΈ”λ‘œκ·Έλ„ 운영 μ€‘μž…λ‹ˆλ‹€ :)

πŸ”­Aiden's Lab λ‘˜λŸ¬λ³΄κΈ°

 

λ‹€κ°€μ˜¬ λ‰΄μŠ€λ ˆν„°κ°€ κΆκΈˆν•˜μ‹ κ°€μš”?

μ§€κΈˆ κ΅¬λ…ν•΄μ„œ μƒˆλ‘œμš΄ λ ˆν„°λ₯Ό λ°›μ•„λ³΄μ„Έμš”

βœ‰οΈ

이번 λ‰΄μŠ€λ ˆν„° μ–΄λ– μ…¨λ‚˜μš”?

Aidens Lab λ‰΄μŠ€λ ˆν„° λ‹˜μ—κ²Œ β˜•οΈ 컀피와 βœ‰οΈ μͺ½μ§€λ₯Ό λ³΄λ‚΄λ³΄μ„Έμš”!

λŒ“κΈ€

μ˜κ²¬μ„ λ‚¨κ²¨μ£Όμ„Έμš”

확인
의견이 μžˆμœΌμ‹ κ°€μš”? 제일 λ¨Όμ € λŒ“κΈ€μ„ λ‹¬μ•„λ³΄μ„Έμš” !

λ‹€λ₯Έ λ‰΄μŠ€λ ˆν„°

Β© 2026 Aidens Lab λ‰΄μŠ€λ ˆν„°

DevOps μ—”μ§€λ‹ˆμ–΄κ°€ μ—„μ„ ν•œ ν₯미둜운 IT 기술/업계 이야기λ₯Ό κ³΅μœ ν•©λ‹ˆλ‹€.

λ‰΄μŠ€λ ˆν„° 문의eduukulelekim@gmail.com

메일리 둜고

도움말 였λ₯˜ 및 κΈ°λŠ₯ κ΄€λ ¨ 제보

μ„œλΉ„μŠ€ 이용 문의admin@team.maily.so μ±„νŒ…μœΌλ‘œ λ¬Έμ˜ν•˜κΈ°

메일리 μ‚¬μ—…μž 정보

메일리 (λŒ€ν‘œμž: μ΄ν•œκ²°) | μ‚¬μ—…μžλ²ˆν˜Έ: 717-47-00705 | μ„œμšΈνŠΉλ³„μ‹œ μ†‘νŒŒκ΅¬ μœ„λ‘€κ΄‘μž₯둜 199, 5μΈ΅ 501-8호

μ΄μš©μ•½κ΄€ | κ°œμΈμ •λ³΄μ²˜λ¦¬λ°©μΉ¨ | μ •κΈ°κ²°μ œ μ΄μš©μ•½κ΄€ | λΌμ΄μ„ μŠ€