Kubernetes - OPA Gatekeeper bypass

이 νŽ˜μ΄μ§€μ˜ 원 μ €μžλŠ” Guillaume

잘λͺ»λœ ꡬ성 λ‚¨μš©

κ·œμΉ™ μ—΄κ±°

κ°œμš”λ₯Ό 톡해 ν™œμ„±ν™”λœ κ·œμΉ™, μ–΄λ–€ λͺ¨λ“œμ—μ„œ ν™œμ„±ν™”λ˜μ—ˆλŠ”μ§€, λˆ„κ°€ μš°νšŒν•  수 μžˆλŠ”μ§€ νŒŒμ•…ν•˜λŠ” 데 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

CLIλ₯Ό μ‚¬μš©ν•˜μ—¬

$ kubectl api-resources | grep gatekeeper
k8smandatoryannotations                                                             constraints.gatekeeper.sh/v1beta1                  false        K8sMandatoryAnnotations
k8smandatorylabels                                                                  constraints.gatekeeper.sh/v1beta1                  false        K8sMandatoryLabel
constrainttemplates                                                                 templates.gatekeeper.sh/v1                         false        ConstraintTemplate

ConstraintTemplateκ³Ό Constraint은 Open Policy Agent (OPA) Gatekeeperμ—μ„œ Kubernetes λ¦¬μ†ŒμŠ€μ— κ·œμΉ™μ„ κ°•μ œν•˜λŠ” 데 μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.

$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

GUIλ₯Ό 톡해

Gatekeeper Policy Managerλ₯Ό 톡해 OPA κ·œμΉ™μ— μ•‘μ„ΈμŠ€ν•  수 μžˆλŠ” κ·Έλž˜ν”½ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” "Kubernetes ν΄λŸ¬μŠ€ν„°μ—μ„œ OPA Gatekeeper μ •μ±… μƒνƒœλ₯Ό λ³Ό 수 μžˆλŠ” κ°„λ‹¨ν•œ 읽기 μ „μš© μ›Ή UI"μž…λ‹ˆλ‹€.

λ…ΈμΆœλœ 경둜λ₯Ό κ²€μƒ‰ν•˜μ‹­μ‹œμ˜€:

$ kubectl get services -A | grep gatekeeper
$ kubectl get services -A | grep 'gatekeeper-policy-manager-system'

μ œμ™Έλœ λ„€μž„μŠ€νŽ˜μ΄μŠ€

μœ„μ˜ μ΄λ―Έμ§€μ—μ„œ μ„€λͺ…ν•œ λŒ€λ‘œ, νŠΉμ • κ·œμΉ™μ€ λͺ¨λ“  λ„€μž„μŠ€νŽ˜μ΄μŠ€λ‚˜ μ‚¬μš©μžμ—κ²Œ μΌκ΄„μ μœΌλ‘œ μ μš©λ˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€μ‹  ν™”μ΄νŠΈλ¦¬μŠ€νŠΈ λ°©μ‹μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ liveness-probe μ œμ•½μ€ λ‹€μ„― μ§€μ •λœ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ—λŠ” μ μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

우회

Gatekeeper ꡬ성에 λŒ€ν•΄ μ’…ν•©μ μœΌλ‘œ νŒŒμ•…ν•˜λ©΄ κΆŒν•œμ„ μ–»κΈ° μœ„ν•΄ μ•…μš©ν•  수 μžˆλŠ” 잠재적인 잘λͺ»λœ ꡬ성을 식별할 수 μžˆμŠ΅λ‹ˆλ‹€. κ·œμΉ™μ΄ μ μš©λ˜μ§€ μ•ŠλŠ” ν™”μ΄νŠΈλ¦¬μŠ€νŠΈ λ˜λŠ” μ œμ™Έλœ λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό μ°Ύμ•„ ν•΄λ‹Ή μœ„μΉ˜μ—μ„œ 곡격을 μˆ˜ν–‰ν•˜μ„Έμš”.

Abusing Roles/ClusterRoles in Kubernetes

참고 자료

Last updated