ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kubernetes NodeRestriction 플러그인
    K8S 2023. 12. 30. 14:06

     

    쿠버네티스 클러스터의 보안을 강화하는 데 있어서 NodeRestriction 어드미션 컨트롤러는 필수적인 요소다.

    이 기능은 클러스터 내의 노드 간 상호작용을 엄격하게 제어하여 보안 위험을 줄일 수 있다. 

    NodeRestriction 어드미션 컨트롤러의 역할

    기본적으로  kube-apiserver에서 --enable-admission-plugin 옵션을 통해 NodeRestriction이 활성화되어 있는 것을 확인할 수 있다.

    이 설정은 노드가 할당되지 않은 리소스에 대한 접근을 제한하여 클러스터의 보안을 강화하는 것이다.

     

    NodeRestriction를 사용하지 않았을 때 발생할 수 있는 취약점

     

    워커 노드 kubelet 권한을 활용한 공격 발생 가능

    - 워커 노드에서 kubelet의 인증 권한을 사용하여 kubectl 명령을 실행할 수 있다.

    - 이를 통해 모든 정보에 접근할 수 없지만, 다른 노드의 label을 수정하는 작업을 할 수 있다.  

    - 공격자는 손상된 노드에 중요한 label을 추가하여, 그 노드에 중요한 파드를 배포하여 악용할 수 있다. 

     

    NodeRestriction의 사용

    노드 간 Label 관리 제한

    node restiction admission 기능을 사용하면 워커 노드는 자신의 label을 관리할 수 있지만,

    다른 노드의 label을 변경할 수는 없다.

     

    이는 노드가 다른 노드의 설정을 임의로 변경하는 것을 방지한다. 

     

    참고로 node-restriction.kubernetes.io/* label은 워커 노드에서 수정할 수 없으며,  오직 마스터 노드에서만 관리할 수 있다.

    이는 중요한 보안 label의 무단 변경을 방지하기 위함이다. 

     

    NodeRestriction Label 사용 예시

    상황
    클러스터 내에 '고성능 처리 노드'가 있고, 이 노드에는 오직 고성능을 요구하는 파드만 배포되어야 한다. 

    Label 설정
    클러스터 관리자는 '고성능 처리 노드'에 node-restriction.kubernetes.io/high-performance=true 이라는 label을 부여하여 이 노드가 특정 파드만 받아들이도록 설정한다.

    kubectl label node <노드 이름> node-restriction.kubernetes.io/high-performance=true

     

    결과

    해당 label을 설정함으로써, 해당 노드는 '고성능 처리'와 관련된 특별한 작업에만 사용할 수 있다.

    이 label은 다른 일반 노드들에 의해 변경될 수 없으므로, 노드의 특수한 목적이 보장된다. 

    반응형

    댓글

Designed by Tistory.