-
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은 다른 일반 노드들에 의해 변경될 수 없으므로, 노드의 특수한 목적이 보장된다.
반응형'K8S' 카테고리의 다른 글
쿠버네티스 Image Hardening (0) 2024.01.16 Kubernetes API 이용해서 사용자 인증서 및 Context 만들기 (0) 2023.12.30 Kubernetes에서 수동으로 사용자 인증서와 Context 만들기 (0) 2023.12.29 K8S 빠른 CLI 커맨드 정리 (0) 2023.12.29 Kubernetes의 역할 및 바인딩 조합 이해 (0) 2023.12.29