Kubernetes Kyverno bypass

이 νŽ˜μ΄μ§€μ˜ μ›λž˜ μ €μžλŠ” Guillaumeμž…λ‹ˆλ‹€.

μ •μ±… 잘λͺ» ꡬ성 μ•…μš©

κ·œμΉ™ λ‚˜μ—΄

κ°œμš”λ₯Ό νŒŒμ•…ν•˜λ©΄ μ–΄λ–€ κ·œμΉ™μ΄ ν™œμ„±ν™”λ˜μ–΄ μžˆλŠ”μ§€, μ–΄λ–€ λͺ¨λ“œμΈμ§€, λˆ„κ°€ 이λ₯Ό μš°νšŒν•  수 μžˆλŠ”μ§€ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

$ kubectl get clusterpolicies
$ kubectl get policies

μ œμ™Έλœ ν•­λͺ© λ‚˜μ—΄

각 ClusterPolicy 및 Policy에 λŒ€ν•΄ μ œμ™Έλœ μ—”ν„°ν‹° λͺ©λ‘μ„ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. 포함 ν•­λͺ©μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • κ·Έλ£Ή: excludedGroups

  • μ‚¬μš©μž: excludedUsers

  • μ„œλΉ„μŠ€ 계정 (SA): excludedServiceAccounts

  • μ—­ν• : excludedRoles

  • ν΄λŸ¬μŠ€ν„° μ—­ν• : excludedClusterRoles

μ΄λŸ¬ν•œ μ œμ™Έλœ μ—”ν„°ν‹°λŠ” μ •μ±… μš”κ΅¬ μ‚¬ν•­μ—μ„œ 면제되며, KyvernoλŠ” 이듀에 λŒ€ν•΄ 정책을 μ‹œν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ

ν•˜λ‚˜μ˜ clusterpolicy 예제λ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€ :

$ kubectl get clusterpolicies MYPOLICY -o yaml

μ œμ™Έλœ μ—”ν‹°ν‹°λ₯Ό μ°ΎμœΌμ„Έμš” :

exclude:
any:
- clusterRoles:
- cluster-admin
- subjects:
- kind: User
name: system:serviceaccount:DUMMYNAMESPACE:admin
- kind: User
name: system:serviceaccount:TEST:thisisatest
- kind: User
name: system:serviceaccount:AHAH:*

ν΄λŸ¬μŠ€ν„° λ‚΄μ—μ„œ μ—¬λŸ¬ μΆ”κ°€ ꡬ성 μš”μ†Œ, 운영자 및 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ ν΄λŸ¬μŠ€ν„° μ •μ±…μ—μ„œ μ œμ™Έλ  ν•„μš”κ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ΄λŠ” 특ꢌ μžˆλŠ” μ—”ν„°ν‹°λ₯Ό λŒ€μƒμœΌλ‘œ ν•˜μ—¬ μ•…μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. κ²½μš°μ— 따라 λ„€μž„μŠ€νŽ˜μ΄μŠ€κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šκ±°λ‚˜ μ‚¬μš©μžλ₯Ό κ°€μž₯ν•  κΆŒν•œμ΄ μ—†λŠ” κ²ƒμ²˜λŸΌ 보일 수 있으며, μ΄λŠ” 잘λͺ»λœ κ΅¬μ„±μ˜ 징후일 수 μžˆμŠ΅λ‹ˆλ‹€.

ValidatingWebhookConfiguration μ•…μš©

정책을 μš°νšŒν•˜λŠ” 또 λ‹€λ₯Έ 방법은 ValidatingWebhookConfiguration λ¦¬μ†ŒμŠ€μ— μ§‘μ€‘ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€ :

Kubernetes ValidatingWebhookConfiguration

Last updated